这是第八集的第二部分
一,文件的创建 创建文件需要三步:新建文件并保存,添加到工程,添加引用路径。 一般的一个.c和一个.h文件执行一个设置或一个任务或功能。这样可以让代码简洁。 .h文件格式: #ifndef_XXX_H #define_XXX_H 调用头文件 函数声明 #endif .c文件格式 #include “xxx.h” 函数定义 添加文件一定要记得引用路径和添加到工程里。 编写好文件后,打开工程设置,将文件所在的路径添加到工程中。 二,结构体 什么是结构体:将一些有内置联系的不同变量组织起来,封装成一个整体,即定义一个结构体,这是一种新的数据类型。 结构体声明:使用关键字struct , struct结构体名 //结构体名并非必要 { 成员列表 }; Typedef struct { U8 run; //任务状态 U16 timcount; //定时计数器 U16 tritime; //重载计数器 Void(*taskhook)(void);//任务函数也是一个函数指针可以调用任何参数为空,返回值为空//的函数 } TASK_COMPONENTS; Static TASK_COMPONENTS Task_coms[] = //创建结构体数组 { //状态 计数 周期 函数 {0, 1, 1, 执行功能}, {0, 10, 10, 执行功能}, }; 在工程中创建两个文件:task.c和task.h 在task.c中输入 #include “task.h” Typedef struct { U8 run;//任务状态 U16 timcount;//定时计数器 U16 tritime;//重载计数器 Void(*taskhook)(void);//任务函数 } TASK_COMPONENTS; Static TASK_COMPONENTS Task_coms[] = {//状态 计数 周期 函数 {0, 1, 1, samle_display}, {0, 10, 10, samle_matrixkey}, {0, 10, 10, samle_adckey}, {0, 300, 300, samle_NTC}, {0, 500, 500, samle_RTC}, //这里还可以添加其他任务 }; Task.h中输入 #ifndef __TASK_H #define __TASK_H #include “config.h” Typedef struct { U8 run;//任务状态 U16 timcount;//定时计数器 U16 tritime;//重载计数器 Void(*taskhook)(void);//任务函数 } TASK_COMPONENTS; Void task_marks_handler_callback(void); Void task_pro_handler_callback(void); #endif 就可以实现定时器周期性多任务调度系统。
|