CubeMX会自动生成串口的句柄,包含串口的全部数据,比如:UART_HandleTypeDef huart1;
串口发送数据
常用函数
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);作用:通过串口向外发送数据参数huart:填写串口的句柄,比如&huart1参数pData:填写要发送数据的指针参数Size:填写要发送数据的数量,单位字节参数Timeout:超时时间,单位ms,比如HAL_MAX_DELAY无限期等待返回值:返回数据发送的结果。比如HAL_OK(成功)、HAL_ERROR(发送出错)、HAL_BUSY(串口忙)、HAL_TIMEOUT(发送超时)
示例:串口发送数据
1234567891011 | /* USER CODE BEGIN 2 */uint8_t byteNumber = 0x5a;uint8_t byteArray[] = {1,2,3,4,5};char ch = 'a';char *str = "Hello World"; HAL_UART_Transmit(&huart1, &byteNumber, 1, HAL_MAX_DELAY);HAL_UART_Transmit(&huart1, byteArray, 5, HAL_MAX_DELAY);HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), HAL_MAX_DELAY); /* USER CODE END 2 */ |
串口接收数据
常用函数
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);作用:通过串口接收数据参数huart:填写串口的句柄,比如&huart1参数pData:填写要接收数据的指针参数Size:填写要接收数据的数量,单位字节参数Timeout:超时时间,单位ms,比如HAL_MAX_DELAY无限期等待返回值:返回数据发送的结果。比如HAL_OK(成功)、HAL_ERROR(发送出错)、HAL_BUSY(串口忙)、HAL_TIMEOUT(发送超时)
示例:串口接收数据控制LED灯
123456789101112131415161718 | /* USER CODE BEGIN WHILE */while (1){uint8_t dataReceive;HAL_UART_Receive(&huart1, &dataReceive, 1, HAL_MAX_DELAY); if(dataReceive == '1'){ HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);}else if(dataReceive == '0'){ HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);} /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */} |