6、FreeRTOS与USART通信技术详解

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
<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值