当前位置: 首页 > news >正文

关于STM32单片机编程中大量使用全局变量而非使用函数调用的一些思考

背景:

最近我在看我以前2个同事写的STM32单片机程序,两个同事都使用了多任务编程,一个同事使用的是freeRTOS,另外一个同事使用的是裸机+定时器方式,我发现他们两者写程序的一些规律,现在记录下来,以便后面自己写代码的时候使用。

(1)单个任务是由全局变量+写读这些全局变量的函数组成的。整个项目分成了多个任务,每一个任务都是负责各自的工作,具体表现为定义一些结构体类型来描述自然或者现实中的事物,然后定义对应全局变量,通过调用该任务相关函数实现具体操作,具体表现为全局变量的读写操作。

(2)任务与任务之间如果需要通信的话,是通过读取对应任务的具体数值,然后进行判断,如果满足某条件则运行某些代码,如果满足其他条件则运行另外代码。这里需要注意的是,我两个同事都是直接去读取全局变量的值,而不是通过定义并调用某些接口函数。我这两天一直在思考这个问题,为什么使用全局变量而非使用接口函数呢?我感觉主要有以下几个原因。

<1>、STM32单片机代码的代码量不会太大,使用全局变量比使用接口函数更加便捷。接口函数首先需要定义函数、接口函数调用(参数传参)、接口函数声明等使用起来比较复杂。

<2>、IAR、keil MDK这些IDE支持debug调试功能,将全局变量添加到观察窗口更容易追踪问题的根源。

<3>、“代码的本质是一个数据处理器”,各个任务不断循环运行,根据不同情况最终表现为全局变量不同数据,这就是数据处理器的含义。也可以这样任务,函数运行的目的或者结果就是产生不同的数值并存储在全局变量中。因此,我在另外一个任务中去读取当前任务中的全局变量数值然后根据具体数值进行不同分支判断就可以。理论上,全局变量的不同数值代表运行了那些路子的代码,也代表具体发生了什么自然事件(具体情况)。

http://www.dtcms.com/a/419530.html

相关文章:

  • pc端网站开发房地产网
  • nginx中root和alias
  • JMeter 执行流程
  • 网站开发设计与实现云南楚雄网
  • Go 语言中映射(Map)使用场景
  • Go 中实现“面向对象”
  • 富阳做网站广州专业做网站多少钱
  • 威海网站开发公司电话手机软件怎么做出来的
  • 企业系统有哪些南通网站流量优化
  • nginx 的root跟alias的区别
  • 到底什么是智能网联汽车??第三期——汽车总线及车载网络系统
  • 网站做跳转影响排名吗wordpress在线考试插件
  • 网站开发行业推广网站开发合同是否专属管辖
  • 网站建设招聘启事太原城市建设招标网站
  • 做淘宝客为什么要做网站wordpress中文清爽博客主题:jishuzh主题分享
  • Vue表格多选后,将勾选数据返现到弹框中列表,部分数据出现丢失情况
  • CKAD-CN 考试知识点分享(16) 修改 container 名称
  • 东营优化网站中国石油大学网页设计与网站建设
  • 机器视觉:基于MTCNN与Caffe模型的人脸性别年龄统计系统实现
  • 手机网站开发升上去专门做消防器材的网站
  • Docker进程中的守护进程原理解析
  • ApplicationContext接口实现(四)
  • PyQt python 异步任务,多线程,进阶版
  • 磁盘物理坏块与逻辑坏块的区别
  • net asp网站开发长春哪有做网站公司
  • 【机器学习】监督学习 —— 决策树(Decision Tree)
  • (基于江协科技)51单片机入门:5.定时器
  • 怎么制作个人门户网站东莞常平中转场
  • 强化学习原理(四)
  • 做网站 毕业设计长沙企业网页设计哪家专业