c语言volatile_[技术]为什么单片机C语言编程时某一变量有时乱码
生活随笔
收集整理的這篇文章主要介紹了
c语言volatile_[技术]为什么单片机C语言编程时某一变量有时乱码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近一個項目里面,在KEIL中用C語言在單片機里面定義了一個狀態(tài)機全局變量,這個變量隨時會改變,用于切換觸摸屏的界面,
可是程序運行中出現(xiàn)了一個問題,這個狀態(tài)機號總是出現(xiàn)了被莫名奇妙改變的問題,導致觸屏不能正常跳轉(zhuǎn)到預設的界面,
經(jīng)過檢查分析,可能有兩個原因:
?)全局變量與局部變量同名重復定義。有可能是你定義了一個與全局變量一樣名字的局部變量,并在子程序里面修改了變量值。
?)缺少volatile修飾符。C語言中volatile修飾符不常用,它的作用是明確該變量是變化的,防止編譯器對該變量進行優(yōu)化,讓處理器在運行時每次都從內(nèi)存中讀取數(shù)據(jù),而不是用寄存器中的備份數(shù)據(jù)。此修飾命令建議僅對全局有重要作用的關(guān)鍵變量使用。
用法:定義時:volatile unsigned char a;//定義了一個字符變量a
經(jīng)檢查是第2個原因,在程序中定義變量時添加volatile修飾符后問題解決。
關(guān)注我,分享科技開發(fā)、高效思維、理財?shù)鹊狞c點滴滴。微信公眾號:yonkotech
總結(jié)
以上是生活随笔為你收集整理的c语言volatile_[技术]为什么单片机C语言编程时某一变量有时乱码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美观界面优秀做工 索尼55寸4K电视评测
- 下一篇: 地下城与勇士8周年是6月几号16还是18