硬汉嵌入式论坛

 找回密码
 立即注册
查看: 289|回复: 5
收起左侧

[FreeRTOS] RTOS中操作外设的问题?

[复制链接]

11

主题

122

回帖

155

积分

初级会员

积分
155
发表于 2026-4-27 19:26:30 | 显示全部楼层 |阅读模式
在使用RTOS后,MCU通过I2C发送数据(MCU是主机),MCU通过串口发送数据等。不同的任务需要发送数据,是独立一个任务操作(任务间通讯或者自己写个队列,其它任务写队列,这个任务读队列等方式)这个外设好,还是每个任务都单独操作(加互斥锁)这个外设好?还是分应用场景两种都可以。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122752
QQ
发表于 2026-4-28 08:11:25 | 显示全部楼层
1、使用互斥的话,任务设计比较容易,可以先测试下是否满足需求。
2、然后考虑使用独立一个任务收发消息。
回复

使用道具 举报

11

主题

122

回帖

155

积分

初级会员

积分
155
 楼主| 发表于 2026-4-28 14:54:29 | 显示全部楼层
eric2013 发表于 2026-4-28 08:11
1、使用互斥的话,任务设计比较容易,可以先测试下是否满足需求。
2、然后考虑使用独立一个任务收发消息。

版主是不是也认为大多数情况下用一个独立任务会比较好?
回复

使用道具 举报

31

主题

459

回帖

552

积分

金牌会员

积分
552
发表于 2026-4-28 15:08:22 | 显示全部楼层
xy201207 发表于 2026-4-28 14:54
版主是不是也认为大多数情况下用一个独立任务会比较好?

看需求场景。
互斥是同步的。同步适用于多个部件相互配合执行某项任务时,对执行时序有要求的情况,必须等前一个动作完成才能发起后面的动作。
发消息不等执行完是异步的,等待执行线程返回执行结果再继续则是同步的。lwip内核跑在一个线程中接受外部消息的控制
回复

使用道具 举报

11

主题

122

回帖

155

积分

初级会员

积分
155
 楼主| 发表于 2026-4-28 16:18:18 | 显示全部楼层
tovinz 发表于 2026-4-28 15:08
看需求场景。
互斥是同步的。同步适用于多个部件相互配合执行某项任务时,对执行时序有要求的情况,必须 ...

我本来也是你这么想的。如果接收消息的任务比你发消息任务优先级高,其实也算同步吧。
回复

使用道具 举报

31

主题

459

回帖

552

积分

金牌会员

积分
552
发表于 2026-4-28 21:33:29 | 显示全部楼层
xy201207 发表于 2026-4-28 16:18
我本来也是你这么想的。如果接收消息的任务比你发消息任务优先级高,其实也算同步吧。

优先级的问题我没怎么考虑,我理解是使用RTOS时尽量多使用RTOS原语来保持系统调度的活跃,这样能降低在优先级分配上花的心思,而不是达到时间片限度时让systick中断来调度。
我观察到的,使用一个单独的线程来将功能抽象为一种服务形态的特征:需要运行一个不小的状态机。通过消息传递的来自外部的控制命令来控制这个状态机的运行,比如网络协议栈的 TCP
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-5-26 02:57 , Processed in 0.244843 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表