问题1:(与编译器无关)在程序中加入printf语句实现串口的输出,但未写重定向函数fputc
解决方法:int fputc(int ch, FILE *f)
{
USART_SendData(USART1,(uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC)
== RESET )
{}
return ch;
}
问题2(与编译软件有关):fputc编写无误,使用的是MDK4.22-3.40之间的编译环境,未使用微型库(MicroLIB),
因为printf()之类的函数,使用了半主机模式。使用微型库的话,不会使用半主机模式,所以就没有问题。
解决方法:在Option中勾上MicroLIB,重新编译
问题3:fputc编写无误,不用微库,依然可以使用printf
解决方法:在程序中加入下列程序
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
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 is typedef’ d in stdio.h. */
FILE __stdout;
问题4:不想修改程序
解决方法:使用3.4以下版本
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>