STM32 printf程序会跑不起来

2019-07-14 16:06发布

引用正点原子的printf程序,串口1已正常配制了,发送接收数据正常,现想用printf信息,设置如下
#include "stdio.h"已在头文件中

//加入以下代码,支持printf函数,而不需要选择use MicroLIB         
#if 1
#pragma import(__use_no_semihosting)  //标准库需要的支持函数                           
struct __FILE
{
        int handle;
        /* Whatever you require here. If the only file you are using is */
        /* standard output using printf() for debugging, no file handling */
        /* is required. */
};
FILE __stdout; /* FILE is typedef’ d in stdio.h. */      
_sys_exit(int x) //定义_sys_exit()以避免使用半主机模式   
{
        x = x;
}
//重定向fputc函数
//printf的输出,指向fputc,由fputc输出到串口
//这里使用串口1(USART1)输出printf信息
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//等待上一次串口数据发送完成  
        USART1->DR = (u8) ch;              //写DR,串口1将发送数据
        return ch;
}
#endif

在主函数里引用printf("OK ");   程序会跑不起来,去掉这条运行正常,有人遇到同样的问题吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。