目录

STM32-蓝桥杯嵌入式LCD显示的问题

STM32-蓝桥杯嵌入式LCD显示的问题

STM32-sprintf的使用问题

今天在做蓝桥杯嵌入式的时候,遇到了一个非常奇怪的问题,记录一下

首先如下图,在while循环中,写了这么一段led的显示的程序,开发板的运行状态达到了期望的运行状态

https://i-blog.csdnimg.cn/blog_migrate/bd1b796de46784b09f848159b5c53b45.png

然后,我将上面这一段程序写成一个函数,如下图

https://i-blog.csdnimg.cn/blog_migrate/9304b1ab3b9c148ca6bb78a4f65020a7.png

此时运行程序,开发板的运行状态和之前的结果就不一样了,相当于程序卡死在某个地方一样

最后找到解决方法,

一、将uint8_t lcd_string[20];定义成全局变量,程序运行正常。

二、如下图所示,定义成局部变量,但是在使用sprintf的时候的格式化字符串要分开使用,即定义成两个,分别是

uint8_t lcd_string1[20];

uint8_t lcd_string2[20];

https://i-blog.csdnimg.cn/blog_migrate/6c5e0c8efe4bc63aac28aaa6b94af1bb.png

具体原因不明,但是感觉应该是sprintf导致的,所以我在使用sprintf的时候,还是最好memset清空一下字符串,否则可能会出现一些奇怪的问题。