STM32 printf 函数重映射
/* Private function prototypes -----------------------------------------------*/#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- >Libraries->Small printf set to Yes) calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* __GNUC__ */
/** * @brief Retargets the C library printf function to the USART. * @param None * @retval None */PUTCHAR_PROTOTYPE{ /* Place your implementation of fputc here */ /* Loop until the end of transmission */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} /* write a character to the USART */ USART_SendData(EVAL_COM1, (uint8_t) ch);
return ch;}
某人的解释:
这段代码的意思是将C 语言的库函数printf 重定向,或重映射,这词有点太专业,简单的讲:就是C 语言的库中printf 函数会调用PUTCHAR_PROTOTYPE 这个硬
件接口函数,向显示器上输出char 型变量,用来显示,STM32 当然是没有显示器的,所以就用UART 输出Char 型变量到PC 机,由PC 机的超级终端来显示,说白了,就
是原来送到显示器上的显示数据,现在送到STM32 的串口上;如果调不过去,你要
注意两点:1.你的板子上用的是不是USART1,如果是,那连到PC 的串口,就可以
在超级终端上,看到打印出来的东西了,如果不是,请参考第2 点.2.先将你的板子
上的USART 初始化,然后把PUTCHAR_PROTOTYPE 函数体中的USART1 换
成你现在用的那个USART.于免费送一个注意点,当然以上也都免费,呵呵
1.STM32 的外设输出引脚可以重映射,如USART2,要注意板子上,是按原来的引。