任务函数FreeRTOS嵌入式实现
任务函数的写法有点像前端里的事件监听器,结构固定、逻辑清晰,适合干一件事。FreeRTOS 下的任务函数,用的是void ATaskFunction(void *pvParameters)
这种原型,不能随便return
,不然系统会懵。每个任务就像是独立的小工人,有自己的栈变量,在一个死循环里安心干活。
任务函数的结构挺简单,一般就是在for(;;)
里写你的核心逻辑。如果某个任务不再需要了,可以用vTaskDelete(NULL)
把它干掉,注意要显式调用,不能指望它自己退出。
像你要在嵌入式项目里实现消息监听、周期性检测这种场景,任务函数挺合适的。多个任务可以复用同一个函数原型,但逻辑上互不打扰,这点也挺灵活。需要注意的是,函数里的变量如果不是static
,每个任务都会有自己的副本。
另外给你几个相关的参考:
- AutoJs 源码-循环任务:和任务控制思路类似
- C 语言循环队列:任务调度常用的结构
- 嵌入式系统软件设计中的死循环问题探讨:对死循环的设计思路得比较透
如果你在搞FreeRTOS
,或者想清晰地控制多个并发逻辑,这种写法真挺香。任务函数虽然看起来死板,但一旦习惯了,稳定性和清晰度都还不错。
3.38MB
文件大小:
评论区