独望枫

人在尘世间,有缘自相见,变化千千万,未开窍,已迷恋
posts - 45, comments - 0, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

FreeRTOS 定时器

Posted on 2021-07-14 02:29 小菜枫 阅读(500) 评论(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可以正常运行

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理