Keil环境,在调试STM32中犯过的错
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了 。
说白了还是相当于数组溢出了 。
【Keil环境,在调试STM32中犯过的错】
推荐阅读
- 浴缸怎么用
- 浴缸怎么洗白
- 卫生间装修防渗漏4大妙招
- 什么是卫生间隔断 卫生间成品隔断价格
- 硅藻泥的配方及优势有哪些 该如何选择
- 什么是新型地漏 卫生间新型地漏好吗
- 理论指导实践 卫浴品牌战略产品升值迫在眉梢
- 阳台装修省钱有道!阳台完全可以这样装
- 联发科在芯片行业已经有些年头了但一直受到高通排挤
- 如何乘着“新基建”这股东风,行走在充电桩产业八大发展趋势前列