STM32HAL库中和串口有关的全部结构体和文件

一、结构体

USART_TypeDef

/** 
  * @brief Universal Synchronous Asynchronous Receiver Transmitter
  */
 
typedef struct
{
  __IO uint32_t SR;         /*!< USART Status register,                   Address offset: 0x00 */
  __IO uint32_t DR;         /*!< USART Data register,                     Address offset: 0x04 */
  __IO uint32_t BRR;        /*!< USART Baud rate register,                Address offset: 0x08 */
  __IO uint32_t CR1;        /*!< USART Control register 1,                Address offset: 0x0C */
  __IO uint32_t CR2;        /*!< USART Control register 2,                Address offset: 0x10 */
  __IO uint32_t CR3;        /*!< USART Control register 3,                Address offset: 0x14 */
  __IO uint32_t GTPR;       /*!< USART Guard time and prescaler register, Address offset: 0x18 */
} USART_TypeDef;

SR是状态寄存器,用于反映串口的各种状态,如发送完成标志、接收完成标志等;

DR是数据寄存器,用于存储要发送或已经接收的数据;

BRR是波特率寄存器,用于设置串口的通信波特率;

CR1CR2CR3是控制寄存器,用于配置串口的工作模式、数据格式、中断使能等;

GTPR是保护时间和预分频器寄存器。

UART_InitTypeDef

/**
  * @brief UART Init Structure definition
  */
typedef struct
{
  uint32_t BaudRate;                  /*!< This member configures the UART communication baud rate.
                                           The baud rate is computed using the following formula:
                                           - IntegerDivider = ((PCLKx) / (16 * (huart->Init.BaudRate)))
                                           - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */

  uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.
                                           This parameter can be a value of @ref UART_Word_Length */

  uint32_t StopBits;                  /*!< Specifies the number of stop bits transmitted.
                                           This parameter can be a value of @ref UART_Stop_Bits */

  uint32_t Parity;                    /*!< Specifies the parity mode.
                                           This parameter can be a value of @ref UART_Parity
           
### STM32 HAL中的串口接收结构体定义及使用方法 在STM32 HAL中,用于处理串口通信的主要结构体是`UART_HandleTypeDef`。此结构体包含了与特定UART/USART外设实例关联的所有必要信息[^1]。 对于具体的串口接收操作,通常会涉及到以下几个重要的成员变量: - `Instance`: 指向所使用的UART寄存器基地址。 - `Init`: UART初始化参数集合,其中包含波特率、字长、停止位等配置项。 - `gState`: 表示当前驱动状态(就绪、忙碌发送或接收数据等)。 - `RxState`: 接收专用的状态标志。 - `hdmarx`: 如果启用了DMA模式,则该字段指向相应的DMA句柄对象以便于管理传输过程[^2]。 当执行异步非阻塞方式下的接收任务时,可以调用如下API之一来启动接收流程: ```c // 单次读取指定数量的数据到缓冲区buffer中,直到接收到Size个字符或者发生错误为止. HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); // 利用DMA方式进行批量数据采集 HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); ``` 上述两个接口均支持回调机制,在完成预定长度的数据收集之后将会触发对应的事件处理器函数,允许应用程序开发者自定义后续逻辑处理动作。 为了确保程序能够正确响应各种异常情况以及正常结束条件,还需要注册并实现一些必要的回调函数,比如下面这些常见的例子: ```c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); // 当前批次接收完毕后的通知 void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart); // 遇到通讯错误时候的反馈 ``` 通过这种方式,可以在不占用CPU资源的情况下高效地完成大量连续性的输入工作,并且保持系统的实时性稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魂兮-龙游

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值