KST-STM32学习之USART

举报
ReCclay 发表于 2022/02/21 23:49:01 2022/02/21
【摘要】 1、STM32F103ZE 单片机内部集成有 3(USART)+2(UART)个串行通信接口。 2、相应的串行通信接口对应的管脚。 3、注意了,USART和UART是不一样的! USART - 既...

1、STM32F103ZE 单片机内部集成有 3(USART)+2(UART)个串行通信接口。

2、相应的串行通信接口对应的管脚。
这里写图片描述

3、注意了,USART和UART是不一样的!

USART - 既能实现同步通信,又可以异步通信。
UART - 只能实现异步通信。

4、几个标志位的认识

发送数据寄存器的数据传送到移位寄存器后,发送数据寄存器(TDR)就空了,这个时候硬件会将TXE置位。向TDR中写数据会自动清除TXE

TXE置位,并且没有数据再写入TDR,这个时候硬件会将发送完成标志位(TC)置位。我们实际中发送完成与否用TXE。

同时还可通过TXEIE或者TCIE设置相应的中断使能,从而进入相应的中断服务函数!

注:USART发送功能(TE)置位后,将发送一个空闲帧(0xFF),如果此时没有数据发送,TXE标志位和TC标志位会一直处于置位状态,且如果此时是能了TXEIE或者TCIE,将不断的重复执行串口中断服务函数。

由于 TDR 寄存器一旦为空,TXE 标志位会硬件置位,进而触发中断,所以当不发送数据时要及时关闭发送中断。

5、关于接受数据

相比于发送数据,接受数据似乎更简单了点。
接受完毕后,硬件设置接收数据寄存器非空标志位(RXNE),当去读数据,这个标志位会自动清除,当然也可以手动清除

6、关于引脚配置

TXD 引脚配置为复用推挽输出模式
RXD 引脚配置为浮空输入模式

7、配置流程总结

  • 使能 USART 时钟及配置相关引脚

    • 注意看对应USART在那个总线上,并且相应引脚应该是什么模式
  • USART 外设初始化参数设置

    • 波特率,数据位等,使能发送和接收功能,××_Init进行初始化。一旦使能发送功能,便会开始发送空闲帧。
  • 串口中断优先级

  • 使能 USART 中断

    • 注意在此只使能串口接收中断,发送中断必须在发送前使能,发送完毕后关闭,否则程序会重复执行中断服务函数。
  • 使能 USART 外设

  • 编写 USART 中断服务函数

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/81259577

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。