打印
[应用相关]

基于RTOS的软件开发理论

[复制链接]
楼主: 黑心单片机
手机看帖
扫描二维码
随时随地手机跟帖
61
黑心单片机|  楼主 | 2022-5-1 17:13 | 只看该作者 回帖奖励 |倒序浏览
7.4 消息队列

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

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

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

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


使用特权

评论回复
62
黑心单片机|  楼主 | 2022-5-1 17:14 | 只看该作者
8 、时间管理

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

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

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

使用特权

评论回复
63
Bblythe| | 2022-10-7 07:06 | 只看该作者

使能主从模式,触发事件选择为更新事件,不需要开启中断。

使用特权

评论回复
64
Pulitzer| | 2022-10-7 10:05 | 只看该作者

主定时器为TIM1,通道2配置为PWM输出

使用特权

评论回复
65
Bblythe| | 2023-6-1 07:06 | 只看该作者

STM32CUBEMX配置生成初始化代码

使用特权

评论回复
66
童雨竹| | 2023-6-1 09:02 | 只看该作者

通过访问寄存器来控制I2C1工作时钟的开启。

使用特权

评论回复
67
Pulitzer| | 2023-6-1 10:05 | 只看该作者

I2C1的时钟可以自行选择HSI或者SYSCLK

使用特权

评论回复
68
公羊子丹| | 2023-6-1 11:08 | 只看该作者

CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制

使用特权

评论回复
69
公羊子丹| | 2023-6-1 12:01 | 只看该作者

I2C1工作时钟源选择;I2C1模块工作时钟的开启使能。

使用特权

评论回复
70
Wordsworth| | 2023-6-1 13:04 | 只看该作者

STM32芯片中有多个工作时钟源的外设很常见

使用特权

评论回复
71
Clyde011| | 2023-6-1 14:07 | 只看该作者

控制模块的时钟仍然由外设时钟PCLK提供

使用特权

评论回复
72
万图| | 2023-6-1 16:03 | 只看该作者

ART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择

使用特权

评论回复
73
Uriah| | 2023-6-1 17:06 | 只看该作者

一部分是I2C1的工作模块,另外一部分是其控制模块

使用特权

评论回复
74
帛灿灿| | 2023-6-1 19:02 | 只看该作者

USART1可以有多个时钟源

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则