请教,不明原因的代码区溢出复位
单片机型号是STC32G12K128。
自己画板子弄了一个带触摸屏的小玩意,,目前还是在调试阶段,代码量不多,出问题的是一个TFT屏幕画方框的函数以及触摸屏的触摸。
具体故障就是,如果整个程序调用了这个画方框的函数,然后任何时候使用触摸就会触发复位(不触摸屏幕就不会),通过查询复位标志寄存器RSTFLAG是第2位代码区溢出标志ROMOVF置1了。
但是注释掉用到这个画方框的函数的地方,使用触摸屏完全正常;或者调用很多次这个画方框函数,只要不触摸屏幕也没事。
这是整个程序编译后的大小:
这是设置,基本都是照着参考手册设置的:
这是TFT屏幕画方框的函数lcd_box,以及上一级画方块的函数lcd_block,不过调用这个画方块的函数不会造成复位
(我这个画方框就是连续画4次,长度为1以及宽度为1的“方块”,各两次):
触摸屏使用的是中景园的3.5寸的电容屏裸屏,屏幕IC是ST7796,用的16位并行模式,用单片机P7和P0传输高8位和低8位数据;触摸IC是GT911,用的硬件IIC传输数据。
触摸是创建了一个结构体,2个unsigned int数组各5个变量用来存放5个触摸点的坐标,以及一个unsigned char变量存放读取到的触摸点数。
GT911设置了如果发生触摸就让INT引脚拉低,单片机持续检测这个引脚,如果拉低了就执行读取坐标的操作,再重置GT911的状态,有点多具体可以下载看看后面的程序包。
板子的电路如下,没画原理图,画的不是太好并且有点不太好看请见谅(那个32P的FPC排线口连接屏幕,右上的那个8P连接的触摸):
最后我是我这个程序的keil5程序压缩包,如果有大佬愿意帮忙看看的话。。。或者大佬们如果有知道有那些情况会发生这个代码区溢出的可能原因也可以讲讲。。我慢慢排除调试一下。。谢谢各位大佬。
页:
[1]