HAL库用起来的确相对来说更直观一些,但是用习惯了标准库感觉来回调用函数,有些繁琐,然而CubeMX直接生成HAL库非常好用,还是要学习一下的。
首先Cube中配置完成后,基本不用改什么,直接调用
uint8_t aTxBuffer[] = "*********SENDING DATA with DMA***********\r\n";
HAL_UART_Transmit_DMA(&huart1,aTxBuffer,sizeof(aTxBuffer));// DMA发生数据
就可以实现单次的发送了;
然后为了可以连续发送,需要将HAL_UART_StateTypeDef复位成HAL_UART_STATE_READY;
typedef enum
{
HAL_UART_STATE_RESET = 0x00U, /*!< Peripheral is not yet Initialized
Value is allowed for gState and RxState */
HAL_UART_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use
Value is allowed for gState and RxState */
HAL_UART_STATE_BUSY = 0x24U, /*!< an internal process is ongoing
Value is allowed for gS

本文介绍了如何使用HAL库结合DMA进行UART的收发操作。通过CubeMX配置HAL库,简单调用函数实现单次发送,并在发送完成后重置状态为HAL_UART_STATE_READY。为了实现连续发送,需要在用户文件中定义相关函数。此外,还提到了串口的定长接收函数,数据会被存储到指定缓冲区。不定长接收的实现留作后续内容。
最低0.47元/天 解锁文章
4669

被折叠的 条评论
为什么被折叠?



