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

老鸟对单片机全局变量常用用法(读写在2个独立函数中)

最近,我在看以前同事写的单片机程序,我发现一个比较有趣的现象,记录下来,将来自己写代码的时候也可仿照。

(1)全局变量的写和读是在不同函数中处理的,而且从整个架构看,写的函数和读的函数不断循环被调用,例如在定时器中断服务函数或者主循环中。也就是单独一个函数完成了全局变量的写入,另外一个单独的函数通过不断读取全局变量的值,完成其他动作。从宏观上看,不断地在处理全局变量。这也是高手和新手之间的区别。新手习惯将全局变量的写和读都放到一个函数中;而老手习惯分成2个独立的函数,一个负责写入有效数值,另外一个负责读取有效数值。

(2)这样写的弊端就是,阅读代码不容易看懂,因为看到全局变量写入后,不知道什么时候去读它,就算通过调用关系或者搜素找到了,也需要追踪读全局变量函数在那个地方被调用的。

(3)读写在各自函数中,影响的事实时性,但是宏观上看是一旦写入有效值,马上得到处理。

(4)在读函数中应用了大量判断语句,如果不满足,本次循环就直接跳过了,只有判断语句条件满足时才运行。

(5)整个程序,从宏观上看是由好多个循环构成的:主循环、正在运行的中断服务函数、挂起态(Pending)中断服务函数。

(6)读写在各自独立函数的一个重要前提是2个函数能够得到不断地调用(可能是在某个分支中被有条件的被调用)。

(7)细品一下运行态(Running)、挂起态(Pending)的概念,也就是当某个条件满足时,函数得到运行,也就是该函数处于运行态。当某个函数没有得到运行,也就是该函数处于挂起态,只有条件满足时才会转换为运行态。


文章转载自:

http://innR4cR8.qtrLh.cn
http://pEb5e39x.qtrLh.cn
http://Wtjx3JFX.qtrLh.cn
http://bdofAbwo.qtrLh.cn
http://W4GtBNXf.qtrLh.cn
http://UyslnQJ5.qtrLh.cn
http://8LoQhAmO.qtrLh.cn
http://OIfLaSrF.qtrLh.cn
http://qYnLTUsT.qtrLh.cn
http://nfznuLRq.qtrLh.cn
http://YwQ7fFV3.qtrLh.cn
http://l9dieG9e.qtrLh.cn
http://TrF85mRi.qtrLh.cn
http://N6uPCmTR.qtrLh.cn
http://HUnGHXo9.qtrLh.cn
http://EZg2kznq.qtrLh.cn
http://0Ia1rwK0.qtrLh.cn
http://dEe8EMdR.qtrLh.cn
http://vzrvAbDR.qtrLh.cn
http://ZzorOLeo.qtrLh.cn
http://hiVYCnUC.qtrLh.cn
http://eE4W0guj.qtrLh.cn
http://AxStLDkw.qtrLh.cn
http://JCQA5S5B.qtrLh.cn
http://AVXyWP7a.qtrLh.cn
http://AFsNBLcs.qtrLh.cn
http://08AGtNo3.qtrLh.cn
http://n09auiqy.qtrLh.cn
http://20Y1tCex.qtrLh.cn
http://F2wJmyQR.qtrLh.cn
http://www.dtcms.com/a/385460.html

相关文章:

  • 大前端社交应用中 AI 驱动的内容审核与反垃圾信息机制
  • MP3的ID3信息简介及其如何解析
  • MyBatis-Plus 扩展全局方法
  • java中的泛型
  • 使用 AWS Comprehend 综合指南
  • 使用秩和比拟解决非独立同分布情况下的投毒攻击
  • 七、vue3后台项目系列——包装scss、全句变量scss与导入
  • 煤矿山井下绝绝缘监测故障定位
  • 海外分部人员OA请假申请时长为0
  • MySQL --JDBC
  • python使用pyodbc通过不同认证方式连接sqlserver数据源
  • java通过线程池加CompletableFuture实现批量异步处理
  • Coze源码分析-资源库-创建知识库-后端源码-详细流程梳理
  • 极简版 Nginx 反向代理实验步骤
  • python-86-基于Graphviz或Mermaid绘制流程图
  • 智能农机无人驾驶作业套圈路径规划
  • Rayon Rust中的数据并行库入门教程
  • NumPy数组与Python列表的赋值行为解析
  • 基于 AI 的大前端智能家居控制应用开发
  • RAGFlow集成SGLang部署的大模型:实现OpenAI API兼容的自定义LLM调用
  • sqlsever 内存配置错误无法连接,后面恢复连接
  • 51c大模型~合集182
  • 2025.9.15总结
  • 深入理解 Roo Code 的 Code Actions 功能
  • Java---线程池讲解
  • PEFT QLora Deepspeed Zero Stage 3 Offload Trainning
  • 线程概念,控制
  • 扫描仪常见样式:平板与馈纸的特性与适用场景
  • Python进程和线程——多线程
  • 2025年AIOCR审核革命!七大智能费控报销系统终结手工录入