笔记(STM32篇)day12——USART串口介绍、串口初始化结构体

目录

一、USART介绍

1、USART简介

2、USART功能框图

二、串口初始化结构体

参考


一、USART介绍

1、USART简介

        通用同步异步收发器 (Universal Synchronous Asynchronous Receiver and Transmitter) 是一个串行通 信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个 UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART
        USART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一个 USART
通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。

2、USART功能框图

        USART功能框图可以分为4部分:1至4按顺序分别为引脚、数据寄存器、控制器、波特率。

        1、引脚:一般常用的就是RX和TX,用于UART异步通信,SCLK在同步通信时使用,其他引脚用于单线、硬件流控制等其他用途。
        2、数据寄存器DR:低9位或8位有效(取决于控制寄存器CR的M位设置数据长度),分为接收数据寄存器RDR和发送数据寄存器TDR,在接收或发送时通过移位寄存器进行逐位接收或发送。
        3、控制寄存器CR:负责USART使能、接收发送的标志位、字长设置、校验使能、校验选择等。
        4、波特率寄存器BRR:(波特率指每秒发送数据量,若码元有两个信息,那么一个码元代表一个二进制位,比特率和波特率则一致)此寄存器存放USARTDIV,tx或rx的波特率计算:波特率=Fck/(16*USARTDIV)

二、串口初始化结构体

        使用固件库编程,找到stm32f10x_usart.c和stm32f10x_usart.h,对串口结构体的定义就在.h文件中如下。

1、USART初始化结构体

        1) USART_BaudRate:波特率设置。一般设置为 2400 9600 19200 115200 。标准库函数会根据
设定值计算得到 USARTDIV 值,从而设置 USART_BRR 寄存器值。
        2) USART_WordLength:数据帧字长,可选 8 位或 9 位。它设定 USART_CR1 寄存器的 M 位的值。如果没有使能奇偶校验控制,一般使用 8 数据位;如果使能了奇偶校验则一般设置为 9 数据位。
        3) USART_StopBits:停止位设置,可选 0.5 个、 1 个、 1.5 个和 2 个停止位,它设定 USART_CR2寄存器的 STOP[1:0] 位的值,一般我们选择 1 个停止位。
        4) USART_Parity:奇偶校验控制选择,可选 USART_Parity_No( 无校验 ) USART_Parity_Even( 偶校验) 以及 USART_Parity_Odd( 奇校验 ) ,它设定 USART_CR1 寄存器的 PCE 位和 PS 位的值。
        5) USART_Mode: USART 模式选择,有 USART_Mode_Rx USART_Mode_Tx ,允许使用逻辑或运算选择两个,它设定 USART_CR1 寄存器的 RE 位和 TE 位。
        6) USART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式才有效,可选有
typedef struct {
    uint32_t USART_BaudRate; // 波特率
    uint16_t USART_WordLength; // 字长
    uint16_t USART_StopBits; // 停止位
    uint16_t USART_Parity; // 校验位
    uint16_t USART_Mode; // USART 模式
    uint16_t USART_HardwareFlowControl; // 硬件流控制
} USART_InitTypeDef;

2、USART时钟初始化结构体

typedef struct {
    uint16_t USART_Clock; // 时钟使能控制
    uint16_t USART_CPOL; // 时钟极性
    uint16_t USART_CPHA; // 时钟相位
    uint16_t USART_LastBit; // 最尾位时钟脉冲
} USART_ClockInitTypeDef;

参考

[野火®]STM32库开发实战指南——基于野火指南者开发板 — [野火]STM32库开发实战指南——基于野火指南者开发板 文档

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值