Posted on 2021-07-14 02:29
小菜枫 阅读(528)
评论(0) 编辑 收藏 引用 所属分类:
学习笔记
1、添加定时器头文件
2、动态创建定时器
3、静态创建定时器
4、包含示例函数定义的mytimer.h头文件
5、创建之
6、编译……出错
7、搜索上述未定义的函数,发现定时器相关的函数,受控于一个宏configUSE_TIMERS,该宏默认未开启
8、在freeRTOSConfig.h开启该宏configUSE_TIMERS
9、再次编译……还有错
10、根据提示,将宏configTIMER_TASK_PRIORITY也启用
11、编译还有错,在同一个地方还有几个宏提示需要定义
12、在FreeRTOSConfig.h启用相关宏定义
13、编译,出错,依然提示有函数未定义
14、搜寻之下,发现该函数只有一个声明,并没有实现,添加一个空的实现函数后,编译通过
15、通过该函数来给(静态)定时器任务的任务堆 栈及任务控制块分配内存,添加对应的实现【只有使用了静态定时器才会需要该项,动态定时器不用】
16、编译通过,烧写验证,没跑起来……
后来发现是上述创建定时器时的定时周期哪里使用了系统时钟的宏configCPU_CLOCK_HZ,想要使用configTICK_RATE_HZ滴答1S的宏,修改后正常运行:
17、定时器数量及定时器消息队列之间的关系
18、如果有其他任务,定时器没运行起来,则可能时定时器的优先级太低,被饿死了,需要将定时器的优先级相应的提高
19、定时器任务栈深度,需要根据实际定时器回调函数的使用情况进行设置,这里示例只是输出个调试信息,深度为1可以正常运行