freertos韦东山--队列集
·
队列的优势是可以互斥的访问多个公共资源且有唤醒机制,管理任务和其他变量资源等
当为了完成一个任务时(任务中通常由他的队列传输数据),如果直接通过相关驱动程序编写这个队列来完成这个任务,当想完成的任务改变时,驱动程序里代码是和任务有关的,也要变,这样做不好,驱动程序是会被不同的任务使用的,就像driver_my iic不应该和任务有关
所以韦哥建议用另一个任务(队列),作为中间量,驱动函数写这个队列,任务2读队列后再写进目标任务的队列,所以当任务改变时,只用改变任务2换个队列写就行,但是每多用一个方式去完成目标任务就会浪费桟空间,所以就引出了队列集
只设置一个任务去读不同驱动程序的多个队列(每个方式都有一个队列,队列只是传输数据的一种方式,任务才会被分配桟空间),就节省了一些空间
当有多个队列或者数据要传输时,就要有传输的顺序等等,管理机制
在freertos里使用比轮询更好的方式处理数据
队列集(Queue Set)是实时操作系统(如FreeRTOS)中用于统一管理多个队列或信号量的机制,其核心功能在于允许任务同时监听多个通信对象(队列、信号量)的事件,并在任意一个对象有数据到达时唤醒任务。



这样操作,底层函数和上面无关,以后添加新设备只需要修改input_task即可,非常convenient(据说)
更多推荐
所有评论(0)