文章目录
前言
我们在使用STM32进行串口通讯的时候,无法使用printf进行输出,必须重新定义标准库函数里与输出函数相关的函数。例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:只要自己添加一个int fputc(int ch, FILE *f)函数,能够输出字符就可以了。
一、新建项目
按照stm32CUBEMX配置RCC,UART,SYS。
配置sys
配置RCC
配置时钟
配置UART1
二、重定向
1.加入重定向代码
代码如下(示例):代码加在USART.C的/* USER CODE BEGIN 1 */里面
/* USER CODE BEGIN 1 */
#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 */
/* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 1 */
记得在 UART.C和MAIN.C中添加 #include "stdio.h"
2.读入数据
代码如下(示例):main.c循环中填写
printf("还不会吗?我要生气了\r\n");
3.效果
总结
记录一下,怕忘了。