/* 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,要留意板子上,是按本来的引脚连的,仍是重映射后的,假如是重映射后的,请参阅第2点.
2.假如衔接是重映射后的引脚,请在原初始化之前,加一个重映射函数,当然ST例程中也有这部分代码,能够参阅.