找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1703|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主

最近一个项目里面,在KEIL用C语言在单片机里面定义了一个状态机全局变量,这个变量随时会改变,用于切换触摸屏的界面,
可是程序运行中出现了一个问题,这个状态机号总是出现了被莫名奇妙改变的问题,导致触屏不能正常跳转到预设的界面,
经过检查分析,可能有两个原因:
•)全局变量与局部变量同名重复定义。有可能是你定义了一个与全局变量一样名字的局部变量,并在子程序里面修改了变量值。
•)缺少volatile修饰符。C语言中volatile修饰符不常用,它的作用是明确该变量是变化的,防止编译器对该变量进行优化,让处理器在运行时每次都从内存中读取数据,而不是用寄存器中的备份数据。此修饰命令建议仅对全局有重要作用的关键变量使用。
用法:定义时:volatile unsigned chara;//定义了一个字符变量a
经检查是第2个原因,在程序中定义变量时添加volatile修饰符后问题解决。
关注我,分享科技开发、高效思维、理财等的点点滴滴。公号:yonkotech

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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