嵌入式学习小组
直播中

李茜

8年用户 167经验值
私信 关注

改用UCOS3操作系统直接使用消息队列?

您好,之前的程序是裸机跑的工程,许多地方用了全局变量做标志位或计数器,然后工程里各个函数按时查这个全局变量的状态再做功能处理。现在我们改用UCOS3操作系统,有几个问题想和大家讨教下,本人对UCOS的应用毫无经验,正在学习中:
1、串口中断1-5里收到了数据,到底是该采用中断里发【信号量】通知任务在中断外去处理数据了?还是直接使用【消息队列】?  如果都可以,哪种好?如果使用信号量的方式是不是该用【互斥信号量】避免串口数据被打断!
2、如果一个任务里需要查询比如gps_flag|gprs_flag|lcd_exist 等等多个状态是否置1或清0,那这个任务是不是该用 【事件标志组】?
3、如果原来裸机里的定时器里起了个变量num++;  当变量==5时,则执行任务并清除num = 0,这种事情, 到了ucos3里是不是该用【多值 信号量】?
4、通过串口里收到的GPS数据判断定位了,则置gps_flag == 1, 但是这个全局变量需要被多个任务查询,比如有位置上报的任务需要看是否定位,也还有LCD显示的任务等等,那这块我该用什么方式?    一个任务发送,多个任务接收。。。
希望各位帮我解答,多谢!

回帖(8)

林立银

2020-4-14 08:42:44
第二、三问题 是不是用全局变量也行,但是UCOS还有意义吗?行业上该怎么做了
举报

王跃

2020-4-14 08:52:50
操作系统知识为了更方便的实现多任务,你说的“是不是用全局变量也行,但是UCOS还有意义吗?“不敢苟同,操作系统并不是加个信号量了就显得厉害,最主要就是为了你实现多任务,至于任务之间的关系处理,随便哪种方式都可以,信号量邮箱消息队列全局变量都可以。如果没有多任务处理,那么加操作系统就显得没有任何意义,反而浪费掉几十KB的RAM和flash
举报

席连施

2020-4-14 09:04:24
能讲讲具体的使用方式吗?按照我的问题,我刚从裸机转UCOS,思维如何跳转了?
举报

张雯雯

2020-4-14 09:23:15
熟能生巧,多去整几个代码,就懂了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分