USART简介
cubeMX配置
-
串口工作模式
-
Parameter Settings(USART参数配置)
-
Basic Parameters
- Baud Rate:波特率
- Word Length:传输数据长度为
- Parity:奇偶检验
- Stop Bits:停止位
-
Advanced Parameters
- Data Direction:接收或发送
-
USART的NVIC接收中断
-
DMA数据自动发送或接受
keil使用流程
- cubeMX自动生成名为huartx的结构体(定义在usart.h文件中)
- 发送
/**
* @param huart UART handle.
* @param pData 指向发送数据缓冲区的指针 (u8 or u16 data elements).
* @param Size 待发送数据的个数(u8 or u16)
* @param Timeout 超时等待时间
* @retval HAL status
*/
HAL_UART_Transmit(&huartx, Buffer, NUMBER, 0x00100)
- 接收
- 先注册一个接受缓冲区
uint8_t Buffer[] = {0};
HAL_UART_Receive_IT(&huartx, Buffer, NUMBER);
每来一个字节数据就中断一次,等接收到 NUMBER 个字节数据后再统一进入回调函数进行处理。
- 回调函数
每次进入回调函数,就需要重新调用 HAL_UART_Receive_IT()
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USARTx)
{
HAL_UART_Receive_IT(&huartx, (uint8_t *)Buffer, NUMBER);
}
}
HAL库
发送接收函数
//串口发送,使用超时管理机制。
HAL_UART_Transmit()
//串口接收,使用超时管理机制。
HAL_UART_Receive()
//串口中断模式发送
HAL_UART_Transmit_IT()
//串口中断模式接收
HAL_UART_Receive_IT()
//串口DMA模式发送
HAL_UART_Transmit_DMA()
//串口DMA模式接收
HAL_UART_Receive_DMA()
回调函数
//一半数据(half transfer)发送完成后,通过中断处理函数调用。
HAL_UART_TxHalfCpltCallback()
//发送完成后,通过中断处理函数调用。
HAL_UART_TxCpltCallback()
//一半数据(half transfer)接收完成后,通过中断处理函数调用。
HAL_UART_RxHalfCpltCallback()
//接收完成后,通过中断处理函数调用。
HAL_UART_RxCpltCallback()
//传输过程中出现错误时,通过中断处理函数调用。
HAL_UART_ErrorCallback()
------ BY Flier
2023.10.3