<·font color=00008b size=5 face=“楷体” >stm32串口通信:
1、处理器与外部设备通信的两种方式:
⋅
\cdot
⋅并行通信
传输原理:数据各个位同时传输
优点:速度快
缺点:占用引脚资源多
⋅
\cdot
⋅串行通信
传输原理:数据按位顺序传输
优点:占用引脚资源少
缺点:传输速度较慢
2、串行通信:
按数据传输方向:
单工:
数据传输只支持在一个方向上的传输
半双工:
允许数据在两个方向上的传输,但是,在某一个时刻,只允许数据在一个方向的传输,它实际上是一种切换方向的单工通信
全双工:
允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信的结合,它要求发送设备和接收设备都有独立的接收和发送能力
串行通信的通信方式:
同步通信:带时钟同步信号传输----SPI、IIC通信接口
异步通信:不带时钟同步信号传输----UART(通用异步收发器,单总线)一定要约定好波特率
STM32的串口通信接口:
⋅
\cdot
⋅UART:通用异步收发器
⋅
\cdot
⋅USART:通用同步异步收发器
大容量STM32F10x系列芯片,包含3个USART和2个UART.
UART框图分析
接收数据
发送数据
波特率控制
波特率配置
控制寄存器SR和CR1
寄存器(常用寄存器)
常用的串口相关寄存器
⋅
\cdot
⋅USART_SR状态寄存器
⋅
\cdot
⋅USART_DR数据寄存器
⋅
\cdot
⋅USART_BRR波特率寄存器
SR是状态位寄存器
DR是数据位寄存器
BRR是波特率配置寄存器
波特率计算方法
常用库函数
波特率
资产
停止位
奇偶校检位
模式
使能
第一步
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能串口时钟
第二步
GPIO端口模式设置
GPIO_InitTypeDef GPIO_Initstruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能串口时钟
GPIO_Initstruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Initstruct.GPIO_Pin=GPIO_Pin_9;//输出
GPIO_Initstruct.GPIO_Speed=GPIO_Speed_10MHZ;
GPIO_Init(GPIOA,&GPIO_Initstruct);
GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Initstruct.GPIO_Pin=GPIO_Pin_10;//输出
GPIO_Initstruct.GPIO_Speed=GPIO_Speed_10MHZ;
GPIO_Init(GPIOA,&GPIO_Initstruct);
第三步
串口配置
第四步
使能串口
如果要设置中断
首先中断分组配置
在misc.h里面找NVIC_PriorityGroupConfig()
即:
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
}
然后中断设置
串口中断函数