KST-STM32学习之USART

发布者:艺泉阁最新更新时间:2022-01-30 来源: eefocus关键字:KST-STM32  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 中断服务函数

关键字:KST-STM32  USART  内部集成 引用地址:KST-STM32学习之USART

上一篇:KST-STM学习之I2C+SPI
下一篇:原子的串口ISP一键下载研究

推荐阅读最新更新时间:2024-11-09 12:00

如何在STM32F4 ARM MCU和Python之间建立USART通信
步骤1:软件和硬件要求 在硬件方面,您需要: STM32F4发现板(或其他任何STM32板) USB转TTL转换器 在软件方面: STM32CubeMX Keil uVision5 已安装串行库的Python 步骤2:STM32CubeMX配置 首先让我们了解我们想要做什么。我们希望通过USART从Python将数据传输到板上,并检查是否有正确的数据并切换LED。因此,我们需要启用USART和Led。 从“连接性”选项卡中启用USART2。 将模式更改为异步 波特率更改为9600 Bits/s 无奇偶校验的字长为8位 无奇偶校验位 从DMA设置中以特殊模式添加USART2_RX 从NVIC设置中启用USART2全局中断 然后生
[单片机]
STC8G 系列单片机规格参数 -- 内部集成了增强型的双数据指针
注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O 口模式 2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻 3、当使能 P5.4 口为复位脚时,复位电平为低电平 4、对于 STC8G1K08-20PIN 系列 B 版芯片,P5.4 作 I/O 口使用时,电流不要超过50mA,也不要有强的冲击 5、STC8G1K08-20PIN 系列芯片所支持的 USB 下载为 I/O 口软件模拟的 USB 通信, 不
[单片机]
STC8G 系列单片机规格参数 -- <font color='red'>内部</font><font color='red'>集成</font>了增强型的双数据指针
STM32F0xx _USART收发配置详细过程
前言 串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。 今天主要总结串口简单且常用的功能,发送字符和中断接收字符。今天提供的串口发送功能将在后面的各个模块总结中都需要使用到,主要用于验证和测试各项功能的正确性。 ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。
[单片机]
STM32F0xx _<font color='red'>USART</font>收发配置详细过程
LPC824-串口USART
串行口是单片机的标准配置,通过它可以与计算机进行通信,也可以用它来下载程序,下面就来讨论一下LPC824的串口应用。LPC824具备有3个串口,称为通用异/同步收发器(USART),下图给出了它们的内部结构。 从上图中可以看到,UART位于APB设备区,它不仅仅具有TXD和RXD功能,还拥有完整9针串口的所有引脚,因此直接用LPC824来开发Modem控制器是很方便的。当然,一般情况下若只与PC机通信或多机通信,只需要用TXD和RXD两个引脚就可以了。 下表给出了USART接口用到的全部寄存器描述,3个USART的寄存器全部一样,其基址分别为0x40064000(USART0)、0x40068000(USART1)、0x
[单片机]
LPC824-串口<font color='red'>USART</font>
为什么晶振不集成到芯片内部去?
原因1、早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。 原因2、芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是石英 (二氧化硅),没法做在一起,但是可以封装在一起,目前已经可以实现了,但是成本就比较高了。 原因3、晶振一旦封装进芯片内部, 频率也固定死了,想再更换频率的话,基本也是不可能的了,而放在外面, 就可以自由的更换晶振来给芯片提供不同的频率。有人说,芯片内部有 PLL,管它晶振频率是多少,用 PLL 倍频/分频不就可以了,那么这有回到成本的问题上来了,100M 的晶振集成到芯片里, 但我用不了那么高的频率,我只想用 10M 的频率, 那我
[单片机]
为什么晶振不<font color='red'>集成</font>到芯片<font color='red'>内部</font>去?
USART1_IRQHandler 函数的理解
1 void USART1_IRQHandler(void) //串口 1 中断服务程序 2 { 3   u8 Res; 4   #if SYSTEM_SUPPORT_OS //如果 SYSTEM_SUPPORT_OS 为真,则需要支持 OS 5   OSIntEnter(); 6   #endif 7   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 8   //接收中断(接收到的数据必须是 0x0d 0x0a 结尾) 9   { 10     Res =USART_ReceiveData(USART1);//(USART1- DR); //读取接收到
[单片机]

推荐帖子

C 的 移位操作
逻辑左移时,最高位丢失,最低位补0;逻辑右移时,最高位补0,最低位丢失;算术左移时,依次左移一位,尾部补0,最高的符号位保持不变;算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;循环左移时,将最高位重新放置最低位;循环右移时,将最低位重新放置最高位;使用循环操作的一个目的就是把每一位连续放到最左边,以判定数据的符号。如果要把一个数字的高位部分和低位部分互换,采用一位操作就很方便,速度很快。C的移位操作
Jacktang 微控制器 MCU
I2C总线驱动库学习分享
I2C库函数主机模式收发控制函数I2CMasterInitExpClk()用来初始化I2C模块为主机模式,并选择通信速率为100kbps的标准模式还是400kbps的快模式,但在实际编程时常常以更方便的宏函数I2CMasterInit()来代替。函数I2CMasterEnable()和I2CMasterDisable()用来使能或禁止主机模式下总线的收发函数I2CMasterControl()用来控制I2C总线在主模式下收发数据的各种总线动作。在控制总线收发数据之前要调用函
eeleader 微控制器 MCU
如何正确解锁LM3S8962
首先我们要认识为什么芯片会被锁,解锁前也必须确认芯片是否真的被锁。由于本人所用的是8962的片子,所以就有针对性的讲解一下。好,废话不多说了。一般8962被锁是由于JTAG口被当作GPIO口用,当我们POR时,PB7PC0-PC3是默认为JTAG口,如果我们在程序里面将这5个口当作了GPIO口来操作,那么就会锁死芯片的flash,这也是初学者必须要了解的一件事。那么下面我们就介绍一种解锁的方法:利用FTDI-JTAG来解锁:利用这种方法比较麻烦,需要设置LMF
shilaike 微控制器 MCU
焊盘外径应该比过孔大多少呢
假如器件管脚直径1毫米,选过孔1.2毫米,焊盘外径应该是多大,应该比过孔多多少?太小了就没法焊锡了吧?焊盘外径应该比过孔大多少呢一般按管脚粗细的经验值设置过孔大小,这方面的资料也很多,开始画图可以参考标准设置
clinken PCB设计
LSD-TEST3S8962_V1.0开发板的光盘?
RT,非常感谢!补充:看来有LSD-TEST3S8962_V1.0这个开发板不多。 LSD-TEST3S8962_V1.0开发板的光盘?太大了,在论坛不能传,晚上回去联系我QQ,我传给你光盘资料太大了回复楼主ebuffalo的帖子你给老峰要回复楼主ebuffalo的帖子开始看错了,利尔达8962的光盘窝没有,9B96的我有有人传吗,我也需要!关注原帖由fengzhang2002于2011-1-1502:09发表开始看错了,利尔达896
ebuffalo 微控制器 MCU
99.9%的ACDC开关电源都会因为这个隐蔽BUG导致自身或者后级电路过早失效
在其他网站看到的一篇文章分享极其简单的一条安规标准要求插头脱离电源后1秒内,X电容上的残余电压降到额定工作电压的37%以内。这本是一条保护操作人员人身安全的规定。谁曾想,这个放电时间对于50/60赫兹的交流电源极其不合理,当从正半周进入负半周,电容上的极性电荷基本上只释放了很有限的一部分,对于10毫秒的半周期时间来说,1秒,是100倍时长。这些极性电荷在负半周等效为一个大电容,必然从电源汲取大电流充电,这样的充电效应,在插头插拔瞬间,或者电源开关瞬间,存在不可避免的电火花
电机知多少 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved