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-STM学习之I2C+SPI
下一篇:原子的串口ISP一键下载研究
推荐阅读最新更新时间:2024-11-09 12:00
推荐帖子
- 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倍时长。这些极性电荷在负半周等效为一个大电容,必然从电源汲取大电流充电,这样的充电效应,在插头插拔瞬间,或者电源开关瞬间,存在不可避免的电火花
- 电机知多少 电源技术
设计资源 培训 开发板 精华推荐
- 使用 ON Semiconductor 的 ML4841 的参考设计
- 使用 ON Semiconductor 的 CS52845 的参考设计
- 【涂鸦智能】万用遥控器
- LTC3624IDD 可调输出电压、具有 2.25MHz 的 2A 同步降压稳压器的典型应用
- ADM00555,MCP1662 LED 驱动器评估板
- 合宙iot power in
- LTC2992HMS 双向宽范围功率监视器的典型应用
- AKD4340-SB,AK4340 192kHz 采样 24Bit Delta Sigma DAC 评估板
- AC164138-2,用于 868、915MHz 无线射频收发器的演示板
- ADM7172CP-EVALZ,用于评估 ADM7172 2A 线性稳压器的评估板