硬汉嵌入式论坛

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

[其它] 请教一个关于rtos两个任务互斥问题

[复制链接]

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2022-12-7 08:50:00 | 显示全部楼层 |阅读模式
应用需求,串口应用有两种模式,一种是Modbus协议通信,一种是普通的数据流数据通信。系统中有个设置选项用于选择是哪种通信。这样应用是创建两个任务通过互斥实行两种通信模式还在一个人任务里判断标示位去执行不同的应用。如果是两个任务通过哪种互斥方式实现比较合理。

回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2022-12-7 10:05:56 | 显示全部楼层
一个任务比较好,如果两种通信方式的处理函数原型能做成一样就更好了,初始化时把处理函数赋值给指针,循环调用指针,就不必要每次循环都判断。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2022-12-7 11:20:51 | 显示全部楼层
ihavedone 发表于 2022-12-7 10:05
一个任务比较好,如果两种通信方式的处理函数原型能做成一样就更好了,初始化时把处理函数赋值给指针,循环 ...

处理函数难弄一样的了,通信方式和数据量都不同,一种Modbus、一种透传大量数据,这不好搞吧
回复

使用道具 举报

19

主题

371

回帖

428

积分

高级会员

积分
428
发表于 2022-12-7 11:50:18 | 显示全部楼层
设置默认为Modbus,互相等待+超时
回复

使用道具 举报

3

主题

70

回帖

79

积分

初级会员

积分
79
发表于 2022-12-7 14:39:49 | 显示全部楼层
MODBUS和流模式软件事项差异极大!建议两个任务,app_main根据选项创建并运行指定任务就行,如果选项变动,app_main注销并运行新的任务即可。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
 楼主| 发表于 2022-12-7 20:33:26 | 显示全部楼层
turnip 发表于 2022-12-7 14:39
MODBUS和流模式软件事项差异极大!建议两个任务,app_main根据选项创建并运行指定任务就行,如果选项变动, ...

我也是考虑做两个任务,就是没有想好两个任务如何切换,这两个任务相对于是互斥的,一个挂起另个运行,如果用户改变了通讯方式,两个任务就反过来这个运行那个挂起
回复

使用道具 举报

2

主题

55

回帖

61

积分

初级会员

积分
61
发表于 2022-12-8 10:38:24 | 显示全部楼层
搞得这么复杂,又不同时用,根据配置启用那个功能就好了,再不行lua伺候,要啥自己看着办
回复

使用道具 举报

7

主题

190

回帖

216

积分

高级会员

积分
216
发表于 2022-12-8 17:18:10 | 显示全部楼层
我遇到过这种的,两个协议在一个串口,直接塞一个任务了,只不过这个端口都是作为主站轮询操作从站,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 02:09 , Processed in 0.164238 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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