通信介绍
单工:只在一个方向上传数据传输 半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输 全双工:允许数据同时在两个方向上传输
同步通信:带时钟同步信号传输。SPl、I2C通信接口 异步通信:不带时钟同步信号。UART(通用异步收发器)
UART:通用异步收发器 USART:通用同步异步收发器
一、串口通信
USAR1串口实验步骤
USART_SR 状态寄存器 USART_ DR 数据寄存器 USAR1_ BRR 波特率寄存器 USAR1_CR1 控制寄存器
总结步骤
第一步:开启串口时钟,RCC_APB2PeriphClockCmd() 第二步:GPIO模式配置参数初始化,GPIO_Init(); 第三步:串口配置参数初始化,USART_Init() 第四步:允许开启串口中断,USART_ITConfig() 第五步:配置NVIC中断优先级,NVIC_Init() 第六步:使能串口,USART_Cmd(); 第七步:编写串口中断服务函数,void USART1_IRQHandler(void)
- 开启串口时钟
串口是挂载在 APB2 下面的外设,GPIO设置为复用模式,所以也要开始GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init();
USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 1 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_Cmd(USART1, ENABLE);
void USART1_IRQHandler(void)
|