38 HAL UART Generic Driver //HAL串口通用驱动
38.1 UART Firmware driver registers structures //串口固件驱动寄存器结构
38.1.1 UART_InitTypeDef
UART_InitTypeDef被定义在stm32f1xx_hal_uart.h头文件中
数据字段:
• uint32_t BaudRate 波特率
• uint32_t WordLength 字长
• uint32_t StopBits 停止位
• uint32_t Parity 奇偶校验位
• uint32_t Mode 模式
• uint32_t HwFlowCtl 硬件流控制
• uint32_t OverSampling 过采样
字段的文档:
• uint32_t UART_InitTypeDef::BaudRate
这个成员变量配置了串口通信的波特率,波特率的计算公式如下:
– IntegerDivider = ((PCLKx) / (16 * (huart->Init.BaudRate)))
– FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5
• uint32_t UART_InitTypeDef::WordLength
指定在一个帧中传输或接收的数据位的数目。这个参数可以是UART_Word_Length的值
• uint32_t UART_InitTypeDef::StopBits
指定传输的停止位的数目,这个参数可以是USART_Stop_Bits的值
• uint32_t USART_InitTypeDef::Parity
指定奇偶校验模式。这个参数可以是USART_Parity的值
Note:
—当奇偶校验位被使能时,将计算出的奇偶校验插入到所传输数据的MSB位置(当字长设置为9位数据位时为第9位;当单词长度设置为8位数据时,为第8位)。
• uint32_t USART_InitTypeDef::Mode
指定是否启用或禁用接收或传输模式。此参数可以是USART_Mode的值
• uint32_t USART_InitTypeDef::CLKPolarity
指定串行时钟的稳定状态。这个参数可以是usart_clock_polar的值
• uint32_t USART_InitTypeDef::CLKPhase
指定进行位捕获的时钟转换,这个参数可以是USART_Clock_Phase的值
• uint32_t USART_InitTypeDef::CLKLastBit
指定最后传输数据位(MSB)对应的时钟脉冲是否必须在同步模式下输出到SCLK pin上。该参数可以是USART_Last_Bit的值
39.1.2 __USART_HandleTypeDef
__USART_HandleTypeDef被定义在stm32f1xx_hal_usart.h头文件中
数据字段:
• USART_TypeDef * Instance
• USART_InitTypeDef Init
• uint8_t * pTxBuffPtr
• uint16_t TxXferSize
• __IO uint16_t TxXferCount
• uint8_t * pRxBuffPtr
• uint16_t RxXferSize
• __IO uint16_t RxXferCount
• DMA_HandleTypeDef * hdmatx
• DMA_HandleTypeDef * hdmarx
• HAL_LockTypeDef Lock
• __IO HAL_USART_StateTypeDef State
• __IO uint32_t ErrorCode
字段的文档:
• USART_TypeDef* __USART_HandleTypeDef::Instance
USART寄存器基地址
• USART_InitTypeDef __USART_HandleTypeDef::Init
Usart通信参数
uint8_t* __USART_HandleTypeDef::pTxBuffPtr
指向Usart Tx发送传输缓冲区的指针
• uint16_t __USART_HandleTypeDef::TxXferSize
Usart Tx传输大小
• __IO uint16_t __USART_HandleTypeDef::TxXferCount
Usart Tx传输计数器
• uint8_t* __USART_HandleTypeDef::pRxBuffPtr
指向Usart Rx接收传输缓冲区的指针
• uint16_t __USART_HandleTypeDef::RxXferSize
Usart Rx传输大小
• __IO uint16_t __USART_HandleTypeDef::RxXferCount
Usart Rx传输计数器
• DMA_HandleTypeDef* __USART_HandleTypeDef::hdmatx
Usart Tx DMA句柄参数 //DMA是直接存储器访问的意思
• DMA_HandleTypeDef* __USART_HandleTypeDef::hdmarx
Usart Rx DMA句柄参数
• HAL_LockTypeDef __USART_HandleTypeDef::Lock
锁定对象
• __IO HAL_USART_StateTypeDef __USART_HandleTypeDef::State
Usart通信状态
• __IO uint32_t __USART_HandleTypeDef::ErrorCode
USART 错误的代码
39.2 USART Firmware driver API description //USART固件驱动的API描述
接下来的章节将列举USART库中的不同的函数
39.2.1 How to use this driver //如何使用这个驱动
USART的HAL驱动可以像下面示范的使用:
1. 先声明一个USART_HandleTypeDef结构体(eg. USART_HandleTypeDef husart).
2. 通过实现HAL_USART_MspInit() API来初始化USART低级资源
a) 使能USARTx接口时钟
b) USART引脚配置:
使能USART GPIOS的时钟
配置USART的引脚位可复用推挽输出
c) 如果你需要中断进程,就进行NVIC配置:(用到了这三个API:HAL_USART_Transmit_IT(), HAL_USART_Receive_IT()and HAL_USART_Tr
ansmitReceive_IT())
配置USARTx的中断优先级
使能NVIC USART IRQ句柄
d) 如果你需要使用DMA进程就进行DMA配置(用到了这三个API:HAL_USART_Transmit_DMA()HAL_USART_Receive_DMA() and HAL_USART_TransmitReceive_DMA())
为发Tx/Rx通道声明一个DMA句柄结构
使能DMAx接口时钟
用需要的Tx/Rx参数配置已声明的DMA句柄结构
配置发送/接收通道
将初始化的DMA句柄关联到USART DMA Tx/Rx句柄。
配置优先级,并为了在DMA Tx/Rx通道上进行传输完全中断使能NVIC
配置USARTx中断优先级并使能NVIC USART IRQ句柄(用于DMA非循环模式下发送补全检测的最后一个字节)
3. 在这个初始化过的husart结构体中对Baud Rate, Word Length, Stop Bit, Parity, Hardware flow control and Mode(Receiver/Transmitter)进行编程
4. 通过调用HAL_USART_Init()初始化USART的寄存器
这些API还是通过调用定制的HAL_USART_MspInit(&husart) API来配置低等级的硬件像GPIO, CLOCK, CORTEX…
Note:特定的在发送和传输过程中的USART中断(传输完成中断,RXNE中断和错误中断)将用宏指令__HAL_USART_ENABLE_IT() and __HAL_USART_DISABLE_IT()进行处理
5. 三种操作模式在驱动内是可用的:
轮询式输入输出操作
使用HAL_USART_Transmit()在阻塞模式中发送大量数据
使用HAL_USART_Receive()在阻塞模式中接收大量数据
中断式输入输出操作
使用HAL_USART_Transmit_IT()在阻塞模式中发送大量数据
在传输结束时执行HAL_USART_TxHalfCpltCallback,用户可以通过定制函数指针HAL_USART_TxCpltCallback来添加自己的代码
使用HAL_USART_Receive_IT()在非阻塞模式接收大量数据
在接收端执行HAL_USART_RxCpltCallback函数,用户可以通过自定义函数指针HAL_USART_RxCpltCallback来添加自己的代码
在传输错误的情况下,执行HAL_USART_ErrorCallback()函数,用户可以通过自定义函数指针HAL_USART_ErrorCallback来添加自己的代码
DMA模式输入输出操作
使用HAL_USART_Transmit_DMA()在非阻塞模式(DMA)下发送大量数据
在传输结束时执行HAL_USART_TxHalfCpltCallback,用户可以通过定制函数指针HAL_USART_TxHalfCpltCallback来添加自己的代码
在传输结束时执行HAL_USART_TxCpltCallback,用户可以通过自定义函数指针HAL_USART_TxCpltCallback来添加自己的代码
使用HAL_USART_Receive_DMA()以非阻塞模式(DMA)接收大量数据
在接收端执行HAL_USART_RxHalfCpltCallback,用户可以通过自定义函数指针HAL_USART_RxHalfCpltCallback来添加自己的代码
在传输的接收端执行HAL_USART_RxCpltCallback,用户可以通过定制函数指针HAL_USART_RxCpltCallback来添加自己的代码
在传输错误的情况下,会执行HAL_USART_ErrorCallback()函数,用户可以通过自定义函数指针HAL_USART_ErrorCallback来添加自己的代码
使用HAL_USART_DMAPause()暂停DMA传输
使用HAL_USART_DMAResume()恢复DMA传输
使用HAL_USART_DMAStop()停止DMA传输
串口HAL驱动宏命令列表
__HAL_USART_ENABLE:使能USART
__HAL_USART_DISABLE:失能USART
__HAL_USART_GET_FLAG : 检查是否设置了指定的USART标志
__HAL_USART_CLEAR_FLAG : 清除指定的USART挂起标志
__HAL_USART_ENABLE_IT: 使能指定的USART中断
__HAL_USART_DISABLE_IT: 失能指定的USART中断
39.2.2 Callback registration //回调注册
当编译定义USE_HAL_USART_REGISTER_CALLBACKS设置为1时,允许用户动态配置驱动程序回调。
使用函数@ref HAL_USART_RegisterCallback()来注册一个用户回调。函数@ref HAL_USART_RegisterCallback()允许注册以下回调:
TxHalfCpltCallback: Tx半完成回调
TxCpltCallback: Tx完成回调
RxHalfCpltCallback: Rx半完成回调
RxCpltCallback: Rx完成回调
TxRxCpltCallback: TxRx完成回调
ErrorCallback:错误回调
AbortCpltCallback:中止完成回调
MspInitCallback : USART MspInit
MspDeInitCallback : USART MspDeInit
39.2.3 Initialization and Configuration functions //初始化和配置函数
HAL_USART_Init()函数遵循USART同步配置过程(有关这些过程的详细信息,请参阅参考手册(STM32F10Xxx MCUs的RM0008和用于STM32F10Xxx MCUs的RM0041)STM32F100xx单片机))。
这个章节包含了以下API:
HAL_USART_Init
HAL_USART_DeInit
HAL_USART_MspInit
HAL_USART_MspDeInit
39.2.4 IO操作函数
本小节提供了一组允许管理USART同步数据传输的函数。
USART只支持主模式:它不能接收或发送与输入时钟相关的数据(SCLK总是输出)。
传输方式有两种:
阻塞模式:通信在轮询模式下执行。所有数据处理的HAL状态在完成传输后由相同的函数返回。
非阻塞模式:通信通过中断或者DMA被执行,这些API返回了HAL的状态。当使用中断模式或者DMA IRQ,数据进程的结束将通过专用的USART IRQ显示
HAL_USART_TxCpltCallback(),HAL_USART_RxCpltCallback()和HAL_USART_TxRxCpltCallback()将分别在发送或者接收进程结束时执行,当检测到通信错误时,将执行HAL_USART_ErrorCallback()
阻塞模式API是:
HAL_USART_Transmit() 单工模式
HAL_USART_Receive() 在全双工模式仅接收
HAL_USART_TransmitReceive() 全双工模式
非阻塞模式带中断的API:
HAL_USART_Transmit_IT() 单工模式
HAL_USART_Receive_IT() 在全双工中仅接收
HAL_USART_TransmitReceive_IT()全双工模式
HAL_USART_IRQHandler()
带DMA的非阻塞模式函数是:
HAL_USART_Transmit_DMA() 单工模式
HAL_USART_Receive_DMA() 在全双工模式仅接收
HAL_USART_TransmitReceive_DMA() 全双工模式
HAL_USART_DMAPause()
HAL_USART_DMAResume()
HAL_USART_DMAStop()
在非阻塞模式下提供了一组完整的传输回调:
HAL_USART_TxHalfCpltCallback()
HAL_USART_TxCpltCallback()
HAL_USART_RxHalfCpltCallback()
HAL_USART_RxCpltCallback()
HAL_USART_ErrorCallback()
HAL_USART_TxRxCpltCallback()
非阻塞模式传输可以使用Abort API中止:
HAL_USART_Abort()
HAL_USART_Abort_IT()
对于基于中断的中止服务(HAL_USART_Abort_IT),提供一个完整的中止回调:
HAL_USART_AbortCpltCallback()
在非阻塞模式传输中,可能发生的错误被分成了两类,错误这样解决:
错误认为是可恢复和非阻塞的:传输可以直到最后,但是错误的严重性是由用户进行评估的,接收到的字符恢复并存放在Rx缓冲区,错误代码被设置允许用户确认错误类型
这部分包含了以下API:
HAL_USART_Transmit
HAL_USART_Receive
HAL_USART_TransmitReceive
HAL_USART_Transmit_IT
HAL_USART_Receive_IT
HAL_USART_TransmitReceive_IT
HAL_USART_Transmit_DMA
HAL_USART_Receive_DMA
HAL_USART_TransmitReceive_DMA
HAL_USART_DMAPause
HAL_USART_DMAResume
HAL_USART_DMAStop
HAL_USART_Abort
HAL_USART_Abort_IT
HAL_USART_IRQHandler
HAL_USART_TxCpltCallback
HAL_USART_TxHalfCpltCallback
HAL_USART_RxCpltCallback
HAL_USART_RxHalfCpltCallback
HAL_USART_TxRxCpltCallback
HAL_USART_ErrorCallback
HAL_USART_AbortCpltCallback
39.2.5 Peripheral State and Errors functions //外围状态和错误函数
本小节提供了一组函数,允许返回USART通信过程的状态,返回在通信过程中的外围错误
HAL_USART_GetState()可以有效地检查运行时USART外围的状态
HAL_USART_GetError()可以检查出出现在运行过程中的错误
39.2.6 Detailed description functions //函数的详细描述
HAL_USART_Init
函数名:
HAL_StatusTypeDef HAL_USART_Init (USART_HandleTypeDef * husart)
函数描述:
通过USART_InitTypeDef中特定的参数初始化USART并且初始化相应的句柄
参数:
husart:是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
HAL:status
HAL_USART_DeInit
函数名:
HAL_StatusTypeDef HAL_USART_DeInit (USART_HandleTypeDef * husart)
函数描述:
反初始化USART外围设备
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
HAL:status
HAL_USART_MspInit
函数名:
void HAL_USART_MspInit (USART_HandleTypeDef * husart)
函数描述:
USART MSP Init.
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
None
HAL_USART_MspDeInit
函数名:
void HAL_USART_MspDeInit (USART_HandleTypeDef * husart)
函数描述:
USART MSP DeInit.
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
None
HAL_USART_Transmit
函数名:
HAL_StatusTypeDef HAL_USART_Transmit (USART_HandleTypeDef * husart, uint8_t * pTxData, uint16_t Size, uint32_t Timeout)
函数描述:
阻塞模式单工发送大量数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
Timeout: 超时持续时间
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量。
HAL_USART_Receive
函数名:
HAL_StatusTypeDef HAL_USART_Receive (USART_HandleTypeDef * husart, uint8_t * pRxData, uint16_t Size, uint32_t Timeout)
函数描述:
全双工在阻塞模式下接收大量数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
Timeout: 超时持续时间
返回值:
HAL: status
Notes:
为了接收同步数据,同时传输虚拟数据
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),接收到的数据被处理为u16的集合。在这种情况下,Size必须表示通过pRxData可用的u16的数量。
HAL_USART_TransmitReceive
函数名:
HAL_StatusTypeDef HAL_USART_TransmitReceive (USART_HandleTypeDef * husart, uint8_t * pTxData, uint8_t * pRxData, uint16_t Size, uint32_t Timeout)
函数描述:
全双工模式下发送和接收大量数据(阻塞模式)
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
Timeout: 超时持续时间
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据和接收的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData和pRxData可用的u16数量
HAL_USART_Transmit_IT
函数名:
HAL_StatusTypeDef HAL_USART_Transmit_IT (USART_HandleTypeDef * husart, uint8_t * pTxData, uint16_t Size)
函数描述:
非阻塞状态下单工发送数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量
USART错误无法避免溢出错误
HAL_USART_Receive_IT
函数名:
HAL_StatusTypeDef HAL_USART_Receive_IT (USART_HandleTypeDef * husart, uint8_t * pRxData, uint16_t Size)
函数描述:
非阻塞模式单工接收数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量
HAL_USART_TransmitReceive_IT
函数名:
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT (USART_HandleTypeDef * husart, uint8_t * pTxData, uint8_t * pRxData,
uint16_t Size)
函数描述:
全双工模式发送接收数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量
HAL_USART_Transmit_DMA
函数名:
HAL_StatusTypeDef HAL_USART_Transmit_DMA (USART_HandleTypeDef * husart, uint8_t * pTxData, uint16_t Size)
函数描述:
在DMA模式下单工发送大量数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量
HAL_USART_Receive_DMA
函数名:
HAL_StatusTypeDef HAL_USART_Receive_DMA (USART_HandleTypeDef * husart, uint8_t * pRxData, uint16_t Size)
函数描述:
DMA模式全双工接受数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向数据缓冲区(u8或u16数据元素)的指针。
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData提供的u16的数量
必须配置USART DMA传输通道,以便为从机生成时钟当启用USART奇偶校验(PCE = 1)时,接收到的数据包含奇偶校验位
HAL_USART_TransmitReceive_DMA
函数名:
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA (USART_HandleTypeDef * husart, uint8_t * pTxData, uint8_t * pRxData, uint16_t Size)
函数描述:
DMA模式下全双工接收发送数据
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
pTxData:指向Tx数据缓冲区(u8或u16数据元素)的指针。
pRxData:指向Rx数据缓冲区(u8或u16数据元素)的指针
size:要发送的数据元素的数量(u8或u16)。
返回值:
HAL: status
Notes:
当UART奇偶校验不启用时(PCE = 0),并且字长被配置为9位(M1-M0 = 01),发送的数据和接收的数据被处理为u16的集合。在这种情况下,Size必须表示通过pTxData和pRxData可用的u16数量
当启用USART奇偶校验(PCE = 1)时,接收到的数据包含奇偶校验位
HAL_USART_DMAPause
函数名:
HAL_StatusTypeDef HAL_USART_DMAPause (USART_HandleTypeDef * husart)
函数描述:
暂停DMA传输
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
HAL: status
HAL_USART_DMAResume
函数名:
HAL_StatusTypeDef HAL_USART_DMAResume (USART_HandleTypeDef * husart)
函数描述:
恢复DMA传输
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
HAL: status
HAL_USART_DMAStop
函数名:
HAL_StatusTypeDef HAL_USART_DMAStop (USART_HandleTypeDef * husart)
函数描述:
停止DMA传输
参数:
husart: 是指向USART_HandleTypeDef结构体的指针包含了特定UART模块的配置信息
返回值:
HAL: status
HAL_USART_ Abort
函数名:
HAL_StatusTypeDef HAL_USART_Abort (USART_HandleTypeDef * husart)
函数描述:
中止正在进行的传输(阻塞模式)
参数:
husart: USART处理
返回值:
HAL: status
HAL_USART_Abort_IT
函数名:
HAL_StatusTypeDef HAL_USART_Abort_IT (USART_HandleTypeDef * husart)
函数描述:
中止正在进行的传输(中断模式)
参数:
husart: USART处理
返回值:
HAL: status
Notes:
此过程在中断模式下执行,这意味着只有在执行用户中止完成回调时(而不是在退出函数时),中止过程才被认为是完成的。
HAL_USART_IRQHandler
函数名:
void HAL_USART_IRQHandler (USART_HandleTypeDef * husart)
函数描述:
这个函数处理USART中断请求
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_TxCpltCallback
函数名:
void HAL_USART_TxCpltCallback (USART_HandleTypeDef * husart)
函数描述:
Tx传输完成的回调
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_TxHalfCpltCallback
函数名:
void HAL_USART_TxHalfCpltCallback (USART_HandleTypeDef * husart)
函数描述:
Tx半转移完成回调
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_TxHalfCpltCallback
函数名:
void HAL_USART_RxCpltCallback (USART_HandleTypeDef * husart)
函数描述:
Rx传输完成的回调
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_RxHalfCpltCallback
函数名:
void HAL_USART_RxHalfCpltCallback (USART_HandleTypeDef * husart)
函数描述:
Rx半转移完成回调
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_TxRxCpltCallback
函数名:
void HAL_USART_TxRxCpltCallback (USART_HandleTypeDef * husart)
函数描述:
Tx/Rx传输完成的回调非阻塞进程
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_ErrorCallback
函数名:
void HAL_USART_ErrorCallback (USART_HandleTypeDef * husart)
函数描述:
USART错误回调
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
None
HAL_USART_AbortCpltCallback
函数名:
void HAL_USART_AbortCpltCallback (USART_HandleTypeDef * husart)
函数描述:
终止完成回调
参数:
husart: husart: USART handle
返回值:
None
HAL_USART_GetState
函数名:
HAL_USART_StateTypeDef HAL_USART_GetState (USART_HandleTypeDef * husart)
函数描述:
返回USART状态
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
HAL:state
HAL_USART_GetError
函数名:
uint32_t HAL_USART_GetError (USART_HandleTypeDef * husart)
函数描述:
返回USART错误代码
参数:
husart: 指向一个USART_HandleTypeDef结构的指针,该结构包含指定USART模块的配置信息。
返回值:
USART:错误代码
39.3 USART Firmware driver defines //USART固件驱动定义
下一节列出了模块的各种定义和宏
USART Clock
USART Clock Phase
USART_PHASE_1EDGE
USART_PHASE_2EDGE
USART Clock Polarity
USART_POLARITY_LOW
USART_POLARITY_HIGH
USART Error Code
HAL_USART_ERROR_NONE
HAL_USART_ERROR_PE // Parity error奇偶校验位错误
HAL_USART_ERROR_NE // Noise error噪声错误
HAL_USART_ERROR_FE // Frame error帧错误
HAL_USART_ERROR_ORE // Overrun error溢出错误
HAL_USART_ERROR_DMA // DMA transfer error DMA传输错误
USART Flags
USART_FLAG_TXE // Transmit data register empty flag
USART_FLAG_TC //Transmission Complete flag
USART_FLAG_RXNE // Receive data register not empty flag
USART_FLAG_IDLE // Idle Line detection flag
USART_FLAG_ORE // Overrun Error flag
USART_FLAG_NE // Noise Error flag
USART_FLAG_FE // Framing Error flag
USART_FLAG_PE // Parity Error flag
USART Interrupts Definition
USART_IT_PE
USART_IT_TXE
USART_IT_TC
USART_IT_RXNE
USART_IT_IDLE
USART_IT_ERR
USART Last Bit
USART_LASTBIT_DISABLE
USART_LASTBIT_ENABLE
USART Mode
USART_MODE_RX
USART_MODE_TX
USART_MODE_TX_RX
USART NACK State
USART_NACK_ENABLE
USART_NACK_DISABLE
USART Parity
USART_PARITY_NONE
USART_PARITY_EVEN //偶
USART_PARITY_ODD //奇
USART Number of Stop Bits
USART_STOPBITS_1
USART_STOPBITS_0_5
USART_STOPBITS_2
USART_STOPBITS_1_5
USART Word Length
USART_WORDLENGTH_8B
USART_WORDLENGTH_9B