DMA模式:非堵塞模式。 发送函数: 用于开启DMA发送 - HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
[color=rgb(51, 102, 153) !important]复制代码
参数: huart: 指向串口结构体的指针。 pData: 指向发送数据块的指针 Size: 发送数据的数量 返回值:HAL status,HAL_OK ,HAL_ERROR,HAL_BUSY
接收函数:用于开启DMA接收 - HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
[color=rgb(51, 102, 153) !important]复制代码
参数: huart: 指向串口结构体的指针。 pData: 指向接收数据块的指针 Size: 接收数据的数量 返回值:HAL status,HAL_OK ,HAL_ERROR,HAL_BUSY ,HAL_TIMEOUT 必须接收到指定数量的数据才会完成一次DMA传输。 相关的回调函数(使用回调函数需要开启串口中断): HAL_UART_TxHalfCpltCallback():一半数据(half transfer)发送完成后,通过中断处理函数调用。 HAL_UART_TxCpltCallback():发送完成后,通过中断处理函数调用。 HAL_UART_RxHalfCpltCallback():一半数据(half transfer)接收完成后,通过中断处理函数调用。 HAL_UART_RxCpltCallback():接收完成后,通过中断处理函数调用。 HAL_UART_ErrorCallback():传输过程中出现错误时,通过中断处理函数调用。 可以在回调函数里定制自己的代码。 暂停DMA传输: - HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
[color=rgb(51, 102, 153) !important]复制代码
恢复DMA传输: - HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
[color=rgb(51, 102, 153) !important]复制代码
停止DMA传输: - HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
[color=rgb(51, 102, 153) !important]复制代码
参数:huart: 指向串口结构体的指针。 返回值:HAL status,HAL_OK
下面通过简单的例子说明: 发板的USART3使用的是PB10和PB11引脚,但是使能USART3的时候默认引脚是PC10和PC11。因此需要先配置PB10和PB11引脚,在使能USART。相关的电路图如下:
|