网站做数据监测,iis应用程序池与网站,宁波企业名称查询网站,微信小程序可视化编辑器免费学完标准库之后#xff0c;本来想学习freertos的#xff0c;但是看了很多教程都是移植的HAL库程序#xff0c;这里再学习一些HAL库的内容#xff0c;有了基础这里直接学习主要的外设。
HAL库对于串口主要有两个结构体UART_InitTypeDef和UART_HandleTypeDef#xff0c;前者…学完标准库之后本来想学习freertos的但是看了很多教程都是移植的HAL库程序这里再学习一些HAL库的内容有了基础这里直接学习主要的外设。
HAL库对于串口主要有两个结构体UART_InitTypeDef和UART_HandleTypeDef前者对串口的通信参数配置后者是对串口整体进行配置。
typedef struct
{uint32_t BaudRate; /* 波特率 */uint32_t WordLength; /* 字长 */uint32_t StopBits; /* 停止位 */uint32_t Parity; /* 校验位 */uint32_t Mode; /* UART 模式 */uint32_t HwFlowCtl; /* 硬件流设置 */uint32_t OverSampling; /* 过采样设置 */
}UART_InitTypeDef;
typedef struct
{USART_TypeDef *Instance; /* UART 寄存器基地址 */UART_InitTypeDef Init; /* UART 通信参数 */uint8_t *pTxBuffPtr; /* 指向 UART 发送缓冲区 */uint16_t TxXferSize; /* UART 发送数据的大小 */__IO uint16_t TxXferCount; /* UART 发送数据的个数 */uint8_t *pRxBuffPtr; /* 指向 UART 接收缓冲区 */uint16_t RxXferSize; /* UART 接收数据大小 */__IO uint16_t RxXferCount; /* UART 接收数据的个数 */DMA_HandleTypeDef *hdmatx; /* UART 发送参数设置DMA */DMA_HandleTypeDef *hdmarx; /* UART 接收参数设置DMA */HAL_LockTypeDef Lock; /* 锁定对象 */__IO HAL_UART_StateTypeDef gState; /* UART 发送状态结构体 */__IO HAL_UART_StateTypeDef RxState; /* UART 接收状态结构体 */__IO uint32_t ErrorCode; /* UART 操作错误信息 */
}UART_HandleTypeDef;
在CubeMX生成代码必须使用1.8.5的HAL库和1.8.0有些出入新定义了一些成员。在HAL_UART_Init()传入实例化的结构体就可完成串口的初始化。注意这里仅仅是通信相关的配置引脚的配置MX自动完成了如果使用了中断那么也自动设定。
串口的主要功能就是接收和发送。HAL_UART_Transmit和HAL_UART_Receive都是阻塞方式发送和接收执行完之后就不再执行还阻碍了其他代码的运行。一般使用中断方式进行收发涉及的比较复杂HAL_UART_Receive_IT()和HAL_UART_Transmit_IT()这里给出接收的图解。 发送和接收类似不再赘述