博客
关于我
【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API
阅读量:510 次
发布时间:2019-03-07

本文共 2243 字,大约阅读时间需要 7 分钟。

STM32H7系列USART串口基础知识与HAL库API教程

##目录

  • 29.1 初学者重要提示
  • 29.2 串口基础知识
    • 29.2.1 串口硬件框图
    • 29.2.2 串口基本功能
    • 29.2.3 串口高级特性
    • 29.2.4 自适应波特率
    • 29.2.5 数据帧格式
    • 29.2.6 发送时序图
    • 29.2.7 同步串口与异步串口
    • 29.2.8 单工、半双工、全双工通讯
  • 29.3 串口的HAL库用法
    • 29.3.1 串口寄存器结构体
    • 29.3.2 串口句柄结构体
    • 29.3.3 串口底层配置
    • 29.3.4 串口状态标志清除问题
    • 29.3.5 串口初始化流程总结
  • 29.4 源文件stm32h7xx_hal_uart.c
    • 29.4.1 函数HAL_UART_Init
    • 29.4.2 函数HAL_UART_Transmit
    • 29.4.3 函数HAL_UART_Receive
    • 29.4.4 函数HAL_UART_Transmit_IT
    • 29.4.5 函数HAL_UART_Receive_IT
    • 29.4.6 函数HAL_UART_Transmit_DMA
    • 29.4.7 函数HAL_UART_Receive_DMA

##29.1 初学者重要提示

  • 从硬件框图开始了解串口基本功能。
  • 强调串口的异步通信特性。
  • 注意串口中断标志清除问题。
  • 了解串口高级特性,如超时接收检测和自适应波特率。
  • ##29.2 串口基础知识###29.2.1 串口硬件框图串口硬件框图展示了以下关键部分:

    • 中断接口:用于实现中断方式的串口唤醒和数据传输中断。
    • DMA接口:用于实现串口发送和接收的DMA方式。
    • 串口控制器:包含串口相关寄存器。
    • FIFO缓冲器:支持硬件FIFO功能。
    • TX和RX引脚互换功能:支持引脚电平翻转和互换。
    • 时钟:包括usart_pclkusart_ker_ck

    ###29.2.2 串口基本功能STM32H7系列支持以下串口基本功能:

    • 任意波特率:最高可达4.5Mbps。
    • 可编程数据字长度:支持7位、8位和9位。
    • 可配置停止位:支持1位或2位。
    • 数据传输检测:支持接收缓冲区满、发送空和传输结束标志。
    • 高级中断特性:支持CTS检测、LIN断开符检测等。

    ###29.2.3 串口高级特性相比F1和F4系列,STM32H7系列串口支持以下高级特性:

    • 数据逻辑电平翻转。
    • RX和TX引脚电平翻转。
    • 超时接收检测。
    • MSB优先发送。
    • 自适应波特率。
    • 外接RS-485切换功能。

    ###29.2.4 自适应波特率

    • 应用场合:适用于通信速度未知或时钟精度较低的情况。
    • 测量范围:基于usart_ker_ck_pres时钟源。
    • 测量方法:支持四种自适应模式,适用于不同通信需求。

    ###29.2.5 数据帧格式串口数据帧格式由MPCE位决定:

    • M位:控制帧长度(7位、8位或9位)。
    • PCE位:使能奇偶校验位。

    ###29.2.6 发送时序图时序图展示了串口发送过程中的关键事件:

    • TXE空中断:发送数据寄存器空。
    • TC中断:发送完成。

    ###29.2.7 同步串口与异步串口

    • 异步串口:按字符传输,起始位同步。
    • 同步串口:基于外部时钟同步,适合高速和大容量数据传输。

    ###29.2.8 单工、半双工、全双工通讯

    • 单工:单向通信,需两根线。
    • 半双工:双向通信,需两根线。
    • 全双工:双向通信,需三根线。

    ##29.3 串口的HAL库用法###29.3.1 串口寄存器结构体USART_TypeDef结构体定义了串口寄存器的基本功能。

    ###29.3.2 串口句柄结构体UART_HandleTypeDef结构体封装了串口的初始化参数和操作接口。

    ###29.3.3 串口底层配置串口配置包括:

    • 使能串口时钟。
    • 配置GPIO引脚。
    • 配置NVIC中断优先级。
    • 初始化DMA接口。

    ###29.3.4 串口状态标志清除问题通过__HAL_USART_GET_FLAG__HAL_USART_CLEAR_FLAG函数管理中断标志。

    ###29.3.5 串口初始化流程总结

  • 初始化串口底层(GPIO、时钟、中断)。
  • 配置串口参数(波特率、停止位、奇偶校验)。
  • 配置高级特性(如电平翻转、引脚互换)。
  • 调用HAL_UART_Init初始化串口。
  • ##29.4 源文件stm32h7xx_hal_uart.c###29.4.1 函数HAL_UART_Init初始化串口的基础和高级特性。

    ###29.4.2 函数HAL_UART_Transmit以查询方式发送数据,支持中断驱动。

    ###29.4.3 函数HAL_UART_Receive以查询方式接收数据,支持中断驱动。

    ###29.4.4 函数HAL_UART_Transmit_IT通过中断方式发送数据,支持FIFO和传空中断。

    ###29.4.5 函数HAL_UART_Receive_IT通过中断方式接收数据,支持FIFO和校验中断。

    ###29.4.6 函数HAL_UART_Transmit_DMA通过DMA方式发送数据,支持中断驱动。

    ###29.4.7 函数HAL_UART_Receive_DMA通过DMA方式接收数据,支持中断驱动。

    ##29.5 总结本章详细介绍了STM32H7系列USART串口的基础知识和HAL库API,涵盖了串口硬件框图、基本功能、高级特性以及HAL库的使用方法。通过本章内容,读者可以掌握串口通信的核心知识和实际应用技能。

    转载地址:http://gunjz.baihongyu.com/

    你可能感兴趣的文章
    MySQL 常见的开放性问题
    查看>>
    Mysql 常见错误
    查看>>
    mysql 常见问题
    查看>>
    MYSQL 幻读(Phantom Problem)不可重复读
    查看>>
    mysql 往字段后面加字符串
    查看>>
    mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
    查看>>
    MySQL 快速创建千万级测试数据
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    MySql 手动执行主从备份
    查看>>
    Mysql 批量修改四种方式效率对比(一)
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>