一、question
对stm32烧录程序后,有时会出现程序不允许的问题,只有当我们debug运行后程序才开始运行。针对这个问题一般采用两种方案,下文详细说明。
二、解决方案
1.在函数中加入以下程序
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
详情代码可以参考相关某点原子的例程代码。
2.打开以下选项
点击魔术棒,勾选上Use MicroLIB,如下图
通过这两种方式均可让程序成功运行,读者可自行尝试。
本项专栏致力于解决STM32开发常遇到的问题,可以后续关注!还请诸君多多点赞!