STM32使用 sprintf 函数时遇到的造成死机的原因

使用环境(蓝色粗体字为特别注意内容)
1、软件环境:Keil MDK 5.15
2、硬件环境:STM32F103C8T6最小系统

今天在进行STM32编程的时候出现一个奇怪的错误,程序阻塞在一个函数里面,查了半天发现阻塞在sprintf函数中!!!我们来看看问题现场。

串口打印了第一句,就卡死了,下一句没有执行到。

查看了原因如下

void foo(char *path)
{
	...
	printu("enter dir:%s\r\n", path);
	sprintf(path + i, "/%s", fn);
	printu("enter1 dir:%s\r\n", path);
	...

}

调用 foo("0:");

造成对path数组的访问越界了!调用的时候写成如下形式即可:

char path[10] ="0:";
foo(path);

 

你可能感兴趣的:(MCU-STM32)