1.cubemx配置串口通信
Mode :
- Asynchronous : 异步, 整个过程,不会阻碍发送者的工作。
- Synchronous : 同步, 同步信息一旦发送,发送者必须等到应答,才能继续后续的行
为。 - Single Wire : 单总线, 半双工。
波特率和一些奇偶校验位的设置,发送和接收设置一样就ok。
2.串口代码的使用
我一般使用printf函数进行串口输出
重定向fputc函数
int fputc (int ch , FILE *f){
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1,temp,1,2);
return ch;
}
3. 编写函数代码
//发送数据
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData,
uint16_t Size, uint32_t Timeout);
//接收数据
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData,
uint16_t Size, uint32_t Timeout);
//发送中断
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//接收中断
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData
, uint16_t Size);
//使用DMA发送
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//使用DMA接收
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//DMA暂停
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
//DMA恢复
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
//DMA停止
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);