1、STM32F103ZE 单片机内部集成有 3(USART)+2(UART)个串行通信接口。
2、相应的串行通信接口对应的管脚。
3、注意了,USART和UART是不一样的!
USART - 既能实现同步通信,又可以异步通信。
UART - 只能实现异步通信。
4、几个标志位的认识
发送数据寄存器的数据传送到移位寄存器后,发送数据寄存器(TDR)就空了,这个时候硬件会将TXE置位。向TDR中写数据会自动清除TXE
当TXE置位,并且没有数据再写入TDR,这个时候硬件会将发送完成标志位(TC)置位。
同时还可通过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
推荐阅读最新更新时间:2024-03-16 16:20
STM32 USART库函数介绍2
USART_Cmd函数的功能是使能或失能USART串口外设。 例:使能USART1 USART_Cmd(USART1,ENABLE); USART_ITConfig函数的功能是使能或者失能指定的USART串口中断。 USART_IT_PE 奇偶错误中断 USART_IT_TXE 发送中断 USART_IT_TC 传输完成中断 USART_IT_RXNE 接收中断 USART_IT_IDLE 空闲总线中断 USART_IT_LBD LIN中断检测中断 USART_IT_CTS CTS中断 USART_IT_ERR 错误中断 例:使能USART1接收中断 USART_Cmd(USAR
[单片机]
STM32学习之旅④ USART串口和上位机通信
一、认识其本质 (一)串口 串口是串行接口 (Serial Interface)的简称,它是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。 (二)协议 所谓协议,就是通信双方约定好的规定,通信双方只有遵守这个规定才能够完成任务。举个栗子就是周幽王烽火戏诸侯,
[单片机]
STM32的USART操作
通用同步异步收发器支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。 主要特性: 全双工的,异步通信 NR 标准格式 分数波特率发生器系统 -发送和接收共用的可编程波特率,最高到4.5Mbits/s 可编程数据字长度(8位或9位) 可配置的停止位 -支持1或2个停止位 LIN主发送同步断开符的能力以及LIN从检测断开符的能力 - 当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符 发送方为同步传输提供时钟 IRDA SIR 编码
[单片机]
STM32中USART 串口简单使用
使用查询方式的USART: 设置时钟: RCC_APB2Periph_AFIO 功能复用IO时钟 RCC_APB2Periph_GPIOA GPIOA时钟 RCC_APB2Periph_USART1 USART1时钟 你可以用 //使能串口1,PA,AFIO总线 RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1 ,ENABLE); 或直接 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALL,ENABLE); //全部APB
[单片机]
【STC15库函数上手笔记】4、USART串口
STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《STC库函数使用参考》 串口初始化函数 USART_Configuration COMx_InitDefine的定义见于文件 USART.H 。 typedef struct { u8 UART_Mode; u8 UART_BRT_Use; u32 UART_BaudRate; u8 Morecommunicate; u8 UART_RxEnable; u8 BaudRateDouble;
[单片机]
STM32串口USART1中断接收和中断发送
先贴出中断函数: view plain copy void USART1_IRQHandler(void){ IF (USART_GetiTStatus(USART1, USART_IT_RXNE) != RESET) { USART_ClearITPendingBit(USART1, USART_IT_RXNE); USART1_Buffer =USART_ReceiveData(USART1); //USART1_Buffesh是一个自己定义的接收数组 if(i 3){ SendFlag = 1; } } if(USART_GetITStatus(USART1, USART_I
[单片机]
SPI外设与USART外设之间通过DMA直接传输初步
选取DMA1 选取通道2 SPI1 USART3 根据上面这些配置初始化,参考32例程。 下面是我配置的SPI中断,我把它直接放在SPI初始化函数后面 先中断初始化 然后建立外设之间的连接 void SPI1_IRQHandler(void) USART3- DR=SPI1- DR; 再直接进行地址映射,把SPI1外设直接映射到USART3。 使能SPI的DMA发送请求PI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Tx|SPI_I2S_DMAReq_Rx, ENABLE); 就会启动DMA 主函数
[单片机]
串口中断服务函数解释USART1_IRQHandler(void)
void USART1_IRQHandler(void) // 1 ³ { u8 Res; #ifdef OS_TICKS_PER_SEC // ¹ ½ , ¹ ucosII . OSIntEnter(); #endif if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // ¾ ¼ ½ (½ ½ ¾ 0x0d 0x0a½ &s
[单片机]