1、根据串口的相关电路图对相应的管脚进行相应的设置。串口通信为异步通信因此选择工作模式为Asynchronous
2、进行相应的参数设置:波特率、传输数据长度、奇偶检验、停止位。这里选择默认的参数不进行设置。
3、后续其他设置与跑马灯设置相同。然后生成代码。
4、加在usart.c的/* USER CODE BEGIN 1 */里面加入重定向代码。在 usart.c和main.c中添加 #include "stdio.h")
/* 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 */
最后在添加测试代码如下(示例):main.c循环中填写
printf("hello,world\r\n");
补充说明
HAL_UART_Transmit()函数
该函数的作用是串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
函数参数:*huart UATR的别名 如 : UART_HandleTypeDef huart1; 别名就是huart1。
函数参数:*pData 需要发送的数据 。
函数参数:Size 发送的字节数。
函数参数:Timeout 最大发送时间,发送数据超过该时间退出发送 。返回值:HAL状态。