FreeRTOS与USART:功能、应用与配置详解
1. FreeRTOS基础功能
1.1 队列与互斥锁
在FreeRTOS中,队列设计为以原子方式添加消息,这背后使用了某种互斥锁设备。互斥锁是一种“全有或全无”的设备,要么获得锁,要么没有获得。
1.2 信号量
信号量与互斥锁类似,在需要限制并发请求数量的情况下,信号量可以以原子方式进行管理。例如,设置信号量的最大值为3,那么最多允许3个“take”请求成功,额外的“take”请求将被阻塞,直到有一个或多个“give”请求释放资源。
1.3 定时器
定时器在许多应用中都很重要,如闪烁程序。在多任务消耗CPU时间的情况下,延迟例程不仅不可靠,还会占用其他任务的CPU时间。在RTOS系统中,通常有一个“systick”中断来辅助时间管理,它不仅跟踪到目前为止发出的“滴答”数,还被任务调度器用于切换任务。
在FreeRTOS中,可以选择按指定的滴答数延迟执行。通过记录当前的“滴答时间”,并让给其他任务,直到所需的滴答时间到达。这种方式的延迟精度仅受配置的滴答间隔限制,同时允许其他任务在合适的时间到来之前进行实际工作。此外,FreeRTOS还提供了软件定时器功能,只有当定时器到期时,才会执行函数回调。这种方法节省内存,因为所有定时器都使用同一个堆栈。
1.4 事件组
一个常见的问题是,任务可能需要同时监控多个队列。例如,任务可能需要阻塞,直到从两个不同队列中的任何一个接收到消息。FreeRTOS提供了“队列集”的创建功能,允许任务阻塞,直到集合中任何队列有消息到达。
对于用户定义的事
超级会员免费看
订阅专栏 解锁全文
6973

被折叠的 条评论
为什么被折叠?



