基于STM32CubMX和HAL库的外设开发(五、串口通信)

基于STM32CubMX和HAL库的外设开发

第五讲 串口通信

串口的重要性

串口作为单片机的重要外部接口,也是软件开发的重要调试手段。使用cubeMX大大简化了串口的配置,不需要懂寄存器的操作,只需要根据所需配置好串口的参数,eg.波特率,奇偶校验,数据位数,停止位数,采样率。
此讲我们介绍如何使用cubeMX配置串口使开发板通过USB串口与电脑通信

cubeMX工程中串口的参数配置

基于STM32CubMX和HAL库的外设开发(五、串口通信)

编写代码

串口相关的常用函数

1、串口发送
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
//huart:串口句柄,表示由哪个串口输出
//pData:要发送数据的头指针,即起始地址
//Size:要发送的字节数
//Timeout:等待数据发送的最长时间,若使用HAL_MAX_DELAY表示无限等待下去,直到发送完为止
//使用示例
HAL_UART_Transmit(&huart1,(uint8_t *)"hello world\r\n",20,50);
2、串口接收
HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
//huart:串口句柄,表示由哪个串口输出
//pData:要接收数据的头指针,即起始地址
//Size:要接收的字节数
//Timeout:等待数据发送的最长时间,若使用HAL_MAX_DELAY表示无限等待下去,直到接收完为止
//使用示例
HAL_UART_Receive(&huart1,(uint8_t *)"hello world\r\n",20,50);

应用功能实现

串口调试助手的使用

基于STM32CubMX和HAL库的外设开发(五、串口通信)
单片机下载好程序之后,配置好串口参数,点击打开串口即可接收

示例1:向串口发送确定字符

代码:

HAL_UART_Transmit(&huart1,(uint8_t *)"hello w\r\n",20,50);

结果
基于STM32CubMX和HAL库的外设开发(五、串口通信)

示例2:串口收发

代码

/* USER CODE BEGIN PV */
unsigned char revBuff[64];
/* USER CODE END PV */
while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
//串口收发
		HAL_UART_Receive(&huart1,revBuff,2,HAL_MAX_DELAY);
		HAL_UART_Transmit(&huart1,revBuff,2,HAL_MAX_DELAY);
		
   }

结果
基于STM32CubMX和HAL库的外设开发(五、串口通信)

示例3:串口发送命令控制led灯的亮灭

(参考上一篇按键示例)

  /* USER CODE BEGIN WHILE */
	HAL_UART_Transmit(&huart1,(uint8_t*)"I am ready\r\n",sizeof("I am ready\r\n"),HAL_MAX_DELAY);
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
//串口控制led
HAL_UART_Receive(&huart1,&revByte,1,HAL_MAX_DELAY);//
		if(revByte=='N')
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
		if(revByte=='F')
			HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
}
上一篇:STM32串口DMA空闲中断


下一篇:STM32HAL库移植FreeModbus协议