[应用相关] 基于RTOS的软件开发理论

[复制链接]
 楼主| 黑心单片机 发表于 2022-5-1 17:13 | 显示全部楼层
7.4 消息队列

由于消息邮箱里只能存放一条消息(部分RTOS邮箱消息功能不同,但消息队列,所有RTOS都表现一致)。通信双方至少有一方没有固定的执行周期,无法保证消息总能在下一个消息产生之前处理完毕,可能丢失消息,这种情况应该使用具有缓冲功能的消息队列,事实上消息队列最常用。

队列是一种标准线性结构,消息的发送、接收就是消息内容的入队或出队。在用户层面,发送消息就是将消息内容放入队列,接收消息时就是从队列中取出一条消息。

消息内容的结构和消息队列的长度由用户自行设置,消息长度按消息积压的最坏情况决定,太短了不保险,太长了浪费内存资源。队列是先进先出,但入队时可以选择放入队列头部还是尾部,对重要消息可以小范围的实现优先处理。

消息内容的要求和消息邮箱一样,必须确保接收消息的任务还能取出数据,不能使用临时变量;也不能使用大量数据块,可以动态申请内存,消息传递的是其指针,实现大数据的传输。


 楼主| 黑心单片机 发表于 2022-5-1 17:14 | 显示全部楼层
8 、时间管理

操作系统可以多任务间进行切换,就是靠一个系统定时器以一定频率中断,为系统提供调度(上下文切换)实现任务切换。而这个定时器,就是系统节拍(tick),任务调度、休眠延时都是基于节拍,一个节拍对应的时间各不相同,一般配置1-10ms。

节拍对应时间数值越小,系统实时性越高,但过小则会导致频繁切换任务反而影响任务执行效率。

时间管理服务函数以系统节拍为处理单位,最坏的情况下误差接近一个系统节拍,因此,时间管理服务函数只能用在对时间精度要求不高的场合,或者时间间隔较长的场合。

Bblythe 发表于 2022-10-7 07:06 | 显示全部楼层

使能主从模式,触发事件选择为更新事件,不需要开启中断。
Pulitzer 发表于 2022-10-7 10:05 | 显示全部楼层

主定时器为TIM1,通道2配置为PWM输出
Bblythe 发表于 2023-6-1 07:06 | 显示全部楼层

STM32CUBEMX配置生成初始化代码
童雨竹 发表于 2023-6-1 09:02 | 显示全部楼层

通过访问寄存器来控制I2C1工作时钟的开启。
Pulitzer 发表于 2023-6-1 10:05 | 显示全部楼层

I2C1的时钟可以自行选择HSI或者SYSCLK
公羊子丹 发表于 2023-6-1 11:08 | 显示全部楼层

CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制
公羊子丹 发表于 2023-6-1 12:01 | 显示全部楼层

I2C1工作时钟源选择;I2C1模块工作时钟的开启使能。
Wordsworth 发表于 2023-6-1 13:04 | 显示全部楼层

STM32芯片中有多个工作时钟源的外设很常见
Clyde011 发表于 2023-6-1 14:07 | 显示全部楼层

控制模块的时钟仍然由外设时钟PCLK提供
万图 发表于 2023-6-1 16:03 | 显示全部楼层

ART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择
Uriah 发表于 2023-6-1 17:06 | 显示全部楼层

一部分是I2C1的工作模块,另外一部分是其控制模块
帛灿灿 发表于 2023-6-1 19:02 | 显示全部楼层

USART1可以有多个时钟源
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部