引用正点原子的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("OKn"); 程序会跑不起来,去掉这条运行正常,有人遇到同样的问题吗? |