完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,之前的程序是裸机跑的工程,许多地方用了全局变量做标志位或计数器,然后工程里各个函数按时查这个全局变量的状态再做功能处理。现在我们改用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个回答
|
|
第二、三问题 是不是用全局变量也行,但是UCOS还有意义吗?行业上该怎么做了
|
|
|
|
操作系统知识为了更方便的实现多任务,你说的“是不是用全局变量也行,但是UCOS还有意义吗?“不敢苟同,操作系统并不是加个信号量了就显得厉害,最主要就是为了你实现多任务,至于任务之间的关系处理,随便哪种方式都可以,信号量邮箱消息队列全局变量都可以。如果没有多任务处理,那么加操作系统就显得没有任何意义,反而浪费掉几十KB的RAM和flash
|
|
|
|
能讲讲具体的使用方式吗?按照我的问题,我刚从裸机转UCOS,思维如何跳转了?
|
|
|
|
熟能生巧,多去整几个代码,就懂了。
|
|
|
|
那请问,用DMA方式的串口空闲中断接收,一般工程里是怎么处理这个数据,是发送普通信号量让任务区处理,还是会用消息队列发到任务里处理,还是用消息队列的同时会加入互斥信号量,防止串口接收缓存区在任务 没有处理完时被改写? 大神们能告诉我实际怎么用吗
|
|
|
|
1:都可以.用哪个看需求.一条条处理还是攒多了处理..不需要用互斥.
|
|
|
|
2.是的. 3.该不该用不好说.看情况. 4 我还是选择全局变量.
|
|
|
|
那1了? 中断里怎么处理数据
|
|
|
|
只有小组成员才能发言,加入小组>>
772 浏览 0 评论
1148 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1065浏览 3评论
190浏览 2评论
453浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 05:59 , Processed in 1.085277 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号