当前位置:首页 > 单片机 > 单片机
[导读]1、貌似的变量冲突程序中有一个全局变量赋值gUI = 0x0A;可是发现gUI并没有获得这个值,而是另一个位于RAM区首地址0x2000 0000的全局变量获得了这个值,感觉奇怪,堆栈溢出?后来检查发现,在程序的前一个子函数中有语

1、貌似的变量冲突
程序中有一个全局变量赋值gUI = 0x0A;可是发现gUI并没有获得这个值,而是另一个位于RAM区首地址0x2000 0000的全局变量获得了这个值,感觉奇怪,堆栈溢出?
后来检查发现,在程序的前一个子函数中有语句:


char ID[8];

sprintf(ID, "%02X%02X%02X%02X", Card_Id[0], Card_Id[1], Card_Id[2], Card_Id[3] );

OLED_8x16StrP(0,2,(u8 *)ID); //液晶显示ID号


上面代码中ID[8]缺少了字符串结束符,而OLED_8x16StrP()函数是以字符串结束符,也就是某个字节为0值判断显示结束的,于是不知道这个函数一直执行到了哪里,最终导致了貌似堆栈溢出的这样的现象,将char ID[8]修改为char ID[9]就ok了。
说白了还是相当于数组溢出了。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭