LCD5510写字符程序移植到STM32G071运行出现错误

2019-03-23 14:49发布

这是向LCD5110写字符的函数,在SMT32F103下能够正常运行,可是在STM32G071下编译能够通过,下载到开发板运行则出错,调试发现,在执行循环时第一遍能通过,第二遍开始时就出现系统错误,跳到错误处理函数里。请教各位是什么原因,该如何解决

  1. /*********************************************/
    * 函数名称: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);     //插入空列
        }  
    }

111.jpg222.jpg333.jpg

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
hujj
1楼-- · 2019-03-23 19:31

从调试情况看,似乎是循环的下标出错引起的,但看不明白的是第一遍执行前和执行后,i的值是不在范围内(not in scope),进入第二遍出错后,i的值变成了0x00000000。

hujj
2楼-- · 2019-03-23 22:44
 精彩回答 2  元偷偷看……
littleshrimp
3楼-- · 2019-03-23 23:02
调试模式下监视一下各个变量,重点看一下*stru-32有没有超出aASC_5的范围
littleshrimp
4楼-- · 2019-03-24 02:06
hujj 发表于 2019-1-14 08:37
从调试情况看,似乎是循环的下标出错引起的,但看不明白的是第一遍执行前和执行后,i的值是不在范围内(not ...

i的问题把编译优化去掉看看
hujj
5楼-- · 2019-03-24 04:49
 精彩回答 2  元偷偷看……
damiaa
6楼-- · 2019-03-24 05:23
十有八九是指针的值算出的结果超出数组下标问题。

一周热门 更多>