野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4427|回复: 4

[ucos] 关于ucosIII全局变量处理有几个疑问

[复制链接]
发表于 2020-6-2 08:53:22 | 显示全部楼层 |阅读模式
      刚学完UCOSIII的内核, 基本都搞懂了, 但是不清楚怎么使用
      网上都说实时操作系统尽量不要使用全局变量, 但是我用裸机编程有很多系统参数, 规范参数等用来控制全局的, 实现功能的全局变量到底该怎么去处理

回复

使用道具 举报

发表于 2020-6-2 12:48:26 | 显示全部楼层
1.尽量不要使用,不代表不能使用。
2.系统参数,规范参数等,可以集中放到结构体中。我觉得方便管理,我也是这么干的。
3.任务间传参数,可以用信号量呀。
4.全局变量如果在多个地方“写”,有可能会出问题。
以上个人见解,不保证准确性。
回复 支持 反对

使用道具 举报

发表于 2020-6-11 22:15:54 | 显示全部楼层
zhlpan1212 发表于 2020-6-2 12:48
1.尽量不要使用,不代表不能使用。
2.系统参数,规范参数等,可以集中放到结构体中。我觉得方便管理,我也 ...

1.尽量不要使用,不代表不能使用。
   如果某一个任务写全局变量,其它任务读该全局变量的话,必须要使用【互斥信号量】进行保护,否则系统会出大问题。
   如果中断服务程序写全局变量,其它任务读该全局变量,必须要每个任务中需要读全局变量之前,执行
         (1)、关中断
          (2)、进行拍照
                     所谓拍照就是把全局变量暂存到一个局部变量A中
          (3)、开中断
           (4)、下面的程序通过访问局部变量A来达到访问该全局变量的效果  
回复 支持 反对

使用道具 举报

发表于 2020-6-11 22:23:08 | 显示全部楼层
zhlpan1212 发表于 2020-6-2 12:48
1.尽量不要使用,不代表不能使用。
2.系统参数,规范参数等,可以集中放到结构体中。我觉得方便管理,我也 ...

3.任务间传参数,可以用信号量呀。
   任务间传一大堆参数,可以用消息队列。

   注:信号量用于任务同步。
   什么是任务同步呢?假如:串口中断来了,你想立即执行【串口解析任务】,怎么办呢?
     (1)、定义一个信号量
      (2)、定义一个【串口解析任务】
      (3)、【串口解析任务】的优先级比较高,目的是中断服务程序发送信号量后,能够立即CPU的控制权,达到立即同步的目的。
      (4)、中断服务程序的结尾发送信号量
当串口中断来了,在中断服务程序结尾,发送该信号量,该信号量会唤醒【串口解析任务】,【串口解析任务】立即得到CPU的控制权,开始解析串口数据。
回复 支持 反对

使用道具 举报

发表于 2020-6-11 22:25:39 | 显示全部楼层
确实RTOS编程模式和前后台编程模式差别太大啦!要想顺利的从前后台编程模式转到RTOS模式编程需要大量的实践呀!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-31 05:56 , Processed in 0.025455 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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