这是向LCD5110写字符的函数,在SMT32F103下能够正常运行,可是在STM32G071下编译能够通过,下载到开发板运行则出错,调试发现,在执行循环时第一遍能通过,第二遍开始时就出现系统错误,跳到错误处理函数里。请教各位是什么原因,该如何解决
/*********************************************/ * 函数名称:LCD_write_ASCII * 函数功能:显示字符串5*7(8) * 入口参数:x,y,cid :显示ASCII字符 * 出口参数:无 编号(行号)32~127 * 备注:ASCII码表的数组ASC_5[95][8]来寻址 *********************************************/ void LCD_write_ASCII(u8 X,u8 Y,u8 *stru) { u8 i; LCD_set_XY(X,Y); //定位(左上角) while (1) { for ( i=0; i<5> { LCD_write_byte(ASC_5[*stru-32][i],1); } stru++; if(*stru == '\0') break; //在每个字符串的最后,会有一个'\0' LCD_write_byte(0x00,1); //插入空列 } }
从调试情况看,似乎是循环的下标出错引起的,但看不明白的是第一遍执行前和执行后,i的值是不在范围内(not in scope),进入第二遍出错后,i的值变成了0x00000000。
i的问题把编译优化去掉看看
一周热门 更多>