c语言volatile_「技术」为什么单片机C语言编程时某一变量有时被修改乱码

9b3ff5cda91ff4a02f5f570ee165a759.png

最近一个项目里面,用C语言在单片机里面定义了一个状态机全局变量,这个变量随时会改变,用于切换触摸屏的界面,

可是程序运行中出现了一个问题,这个状态机号总是出现了被莫名奇妙改变的问题,导致触屏不能正常跳转到预设的界面,

经过检查分析,可能有两个原因:

•)全局变量与局部变量同名重复定义。有可能是你定义了一个与全局变量一样名字的局部变量,并在子程序里面修改了变量值。

•)缺少volatile修饰符。C语言中volatile修饰符不常用,它的作用是明确该变量是变化的,防止编译器对该变量进行优化,让处理器在运行时每次都从内存中读取数据,而不是用寄存器中的备份数据。此修饰命令建议仅对全局有重要作用的关键变量使用。

用法:定义时:volatile unsigned char a;//定义了一个字符变量a

经检查是第2个原因,在程序中定义变量时添加volatile修饰符后问题解决。

关注我,分享科技开发、高效思维、理财等的点点滴滴。微信公众号:yonkotech

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值