FreeRTOS与USART通信技术详解
1. FreeRTOS基础组件
在FreeRTOS系统中,队列以原子方式添加消息,背后使用了互斥锁机制。互斥锁是一种全有或全无的设备,要么拥有锁,要么没有。信号量与互斥锁类似,可用于限制并发请求数量。例如,设置最大允许值为3,那么最多3个“take”请求会成功,额外的“take”请求会阻塞,直到有一个或多个“give”请求释放资源。
定时器在许多应用中都很重要,如闪烁程序。在多任务消耗CPU时间的情况下,延迟例程不仅不可靠,还会占用其他任务的CPU时间。RTOS系统通常有“systick”中断来辅助时间管理,它不仅跟踪当前的“滴答”数,还被任务调度器用于切换任务。在FreeRTOS中,可以选择按指定的滴答数延迟执行,通过记录当前“滴答时间”并让出CPU给其他任务,直到所需的滴答时间到达。此外,FreeRTOS还支持创建软件定时器,只有当定时器到期时才会执行函数回调,这种方式节省内存,因为所有定时器使用同一个栈。
2. 事件组与队列集
任务有时需要同时监控多个队列,FreeRTOS提供了“队列集”的创建功能,允许任务阻塞,直到队列集中的任何一个队列有消息到达。对于用户定义的事件,可以创建事件组,用二进制位表示事件。建立之后,FreeRTOS API允许任务等待特定的事件组合发生,事件可以从普通任务代码或中断服务例程(ISR)中触发。
3. blinky2程序示例
首先,进入blinky2演示目录:
$ cd ~/stm32f103c8t6/rtos/blinky2
<
超级会员免费看
订阅专栏 解锁全文
16

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



