芒种风向标:「技术」为什么单片机C语言编程时某一变量有时被修改乱码
文章图片
【芒种风向标:「技术」为什么单片机C语言编程时某一变量有时被修改乱码】最近一个项目里面 , 用C语言在单片机里面定义了一个状态机全局变量 , 这个变量随时会改变 , 用于切换触摸屏的界面 ,
可是程序运行中出现了一个问题 , 这个状态机号总是出现了被莫名奇妙改变的问题 , 导致触屏不能正常跳转到预设的界面 ,
经过检查分析 , 可能有两个原因:
?)全局变量与局部变量同名重复定义 。 有可能是你定义了一个与全局变量一样名字的局部变量 , 并在子程序里面修改了变量值 。
?)缺少volatile修饰符 。 C语言中volatile修饰符不常用 , 它的作用是明确该变量是变化的 , 防止编译器对该变量进行优化 , 让处理器在运行时每次都从内存中读取数据 , 而不是用寄存器中的备份数据 。 此修饰命令建议仅对全局有重要作用的关键变量使用 。
用法:定义时:volatileunsignedchara//定义了一个字符变量a
经检查是第2个原因 , 在程序中定义变量时添加volatile修饰符后问题解决 。
推荐阅读
- 二台格物设计的与时俱进
- ZAKERCTP、刀片、无钴……动力电池新技术的幕后黑手是谁?
- 李先生看点技术人员都要抱着电脑睡,在珠峰海拔6500米5G基站难度非常大
- 华为■美国无奈宣告“妥协”,将采用华为5G技术,任正非果然没有说错
- 数码狂人“云演唱会”会成为音乐产业新常态吗,5G+4K+VR+多视角技术融合
- IT168“共享智能”技术,AI华人科学家张本宇解密蚂蚁
- LX杂谈荣耀X10内部结构图曝光:Mate系列大面积石墨烯散热技术下放!
- 天津经济技术开发区“海陆空”五大集群助力泰达跻身“国字头”数字服务出口基地
- 科学技术宅试用荣耀新机之后,发现大挖孔设计方向错了!,小米高管表示
- 德国WellcometLDM& TRIPLE LDM 获专利的技术-干涉波长,NOBLESSE