标准库与HAL库实现重定向到串口
在STM32测试串口的时候,需要在开发板和上位机之间传输数据,可以用c语言中的printf()函数简化传输。把要printf的东西选择一个通道print出去,可能是UART0,UART1,或者虚拟的UART。
NOTES:
1.调用printf需先导入stdio.h头文件
2.需勾选Target中的use MicroLIB
RCC:NUCLEO-L476RG只有一个32.768KHz的RTC晶振,故在RCC配置只需要配置High Speed Clock:Crystal/Ceramic Resonator
时钟配置Clock Configuration,把HCLK设置为80MHz(2次回车键确认)
SYS:调试下载口设置为SWD
串口配置开发板USB的Debug口对应USART2,mode:asynchronous,Parameter Setings->NVIC Setting:勾选global interrupt.
在uart.h中
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
/* USER CODE BEGIN Prototypes */
int fputc(int ch, FILE *f);
/* USER CODE END Prototypes */
在uart.c中,必须在extern UART_HandleTypeDef huart2;后面
/* USER CODE BEGIN 1 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
return ch;
}
/* USER CODE END 1 */
在其他.c函数中调用printf实现重定向打印只需要添加
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "usart.h"
/* USER CODE END Includes */