首页 > 其他分享 >STM32 HAL库学习 (2) USART实验

STM32 HAL库学习 (2) USART实验

时间:2023-03-18 15:34:43浏览次数:36  
标签:初始化 HAL 函数 USART UART STM32 设置 串口

使用STM32F407
串口:PA9、PA10(利用CH340G驱动)

1.stm32f4xx_hal_uart.c 函数说明

  1. HAL_UART_Init 函数
    要使用一个外设首先要对它进行初始化,所以先看串口的初始化函数,其声明如下:
        HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
    ⚫ 函数描述:
    用于初始化异步模式的收发器。

⚫ 函数形参:
形参 1 是串口的句柄,UART_HandleTypeDef 结构体类型,其定义如下:
image
1)Instance:指向 UART 寄存器基地址。实际上这个基地址 HAL 库已经定义好了,可以选择范围:USART1~ USART3、USART6、UART4、UART5。
2)Init:UART 初始化结构体,用于配置通讯参数,如波特率、数据位数、停止位等等。下面我们再详细讲解这个结构体。
3)AdvancedInit:用于配置高级功能,如自动波特率,MSB 先行等。
4)pTxBuffPtr,TxXferSize,TxXferCount:分别是指向发送数据缓冲区的指针,发送数据的大小,发送数据的个数。
5)pRxBuffPtr,RxXferSize,RxXferCount:分别是指向接收数据缓冲区的指针,接受数据的大小,接收数据的个数。
6)Mask:UART 数据接收寄存器的掩码,用于存放数据的校验位。
7)hdmatx,hdmarx:配置串口发送接收数据的 DMA 具体参数。
8)Lock:对资源操作增加操作锁保护,可选 HAL_UNLOCKED 或者 HAL_LOCKED 两个参数。如果 gState 的值等于 HAL_UART_STATE_RESET,则认为串口未被初始化,此时,分配锁资源,并且调用 HAL_UART_MspInit 函数来对串口的 GPIO 和时钟进行初始化。
9)gState,RxState:分别是 UART 的发送状态、工作状态的结构体和 UART 接受状态的结构
体。HAL_UART_StateTypeDef 是一个枚举类型,列出串口在工作过程中的状态值,有些值只
适用于 gState,如 HAL_UART_STATE_BUSY。
10)ErrorCode:串口错误操作信息。主要用于存放串口操作的错误信息。

UART_InitTypedef:
image
1)BaudRate:波特率设置。一般设置为 2400、9600、19200、115200。
2)WordLength:数据帧字长,可选 8 位或 9 位。这里我们设置为 8 位字长数据格式。
3)StopBits:停止位设置,可选 0.5 个、1 个、1.5 个和 2 个停止位,一般我们选择 1 个停止位。
4)Parity:奇偶校验控制选择,我们设定为无奇偶校验位。
5)Mode:UART 模式选择,可以设置为只收模式,只发模式,或者收发模式。这里我们设置为全双工收发模式。
6)HwFlowCtl:硬件流控制选择,我们设置为无硬件流控制。
7)OverSampling:过采样选择,选择 8 倍过采样或者 16 过采样,一般选择 16 过采样。
    ⚫ 函数返回值:
    HAL_StatusTypeDef 枚举类型的值,有 4 个,分别是 HAL_OK 表示成功,HAL_ERROR 表示错误,HAL_BUSY 表示忙碌,HAL_TIMEOUT 超时。后续遇到该结构体也是一样的。

标签:初始化,HAL,函数,USART,UART,STM32,设置,串口
From: https://www.cnblogs.com/sathiala/p/17230867.html

相关文章

  • STM32 HAL库学习(F407ZGT6) (1)-晶振/时钟树
    对于STM32F4系列的芯片,正常工作的主频可以达到168Mhz,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十Khz的时钟即可。同一个电路,时钟越快......
  • Halcon 22.11版本激活试用方法
    参考地址:https://github.com/lovelyyoshino/Halcon_licenses亲测有效在页面当月文件夹下载(或复制license内容后新建license.dat文件)将对应Halcon版本当月的dat文件放到H......
  • stm32F0中断系列详解
    1、中断的概念 概念:程序执行过程中CPU会遇到一些特殊情况,是正在执行的程序被“中断”,cpu中止原来正在执行的程序,转到处理异常情况或特殊事件的程序去执行,结束后再返......
  • Datawhale跟李沐大神合作举办 (动手学深度学习) !
    三月的组队学习跟李沐大神合作举办(动手学深度学习),欢迎感兴趣的小伙伴报名学习,另外,欢迎志同道合的小伙伴了解、加入Datawhale!跟李沐导师:动手学深度学习!动手学深度学习......
  • keil在线调试STM32,点三次运行才能跑到main的问题
    遇到的问题是,在include了,并调用对象的pushback()函数,就会出现需要点击3次才能全速运行。目前解决的办法是勾选microlib选项,但会出现警告说microlib不支持C++暂不清楚这......
  • ES6-ES11 ES11String.prototype.matchAll
    原视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title......
  • stm32报错
    1、 declarationmaynotappearafterexecutablestatementinblock关于编译错误的小伙伴:error:#268:declarationmaynotappearafterexecutablestatementinb......
  • STM32串口通信
    STM32串口通信目录STM32串口通信串口常用寄存器串口配置的步骤和函数完整程序串口常用寄存器USART_SR 状态寄存器USART_DR数据寄存器USART_BRR波特率寄存器......
  • 简单部署halo博客(待完善)
    第一步,购买服务器,安装宝塔linux面板。第二步,在宝塔linux面板的软件商店安装docker管理器第三步,配置阿里云镜像加速修改镜像加速vim/etc/docker/daemon.json粘贴{......
  • (8)STM32开发例程 mpu6050
      https://www.youtube.com/watch?v=ImctYI8hgq4         ......