初学stm32 ——— 串口通信
目录
STM32的串口通信接口
UART异步通信方式特点:
串口通信过程
STM32串口异步通信需要定义的参数:
USART框图:
常用的串口相关寄存器
串口操作相关库函数
编辑
串口配置的一般步骤
STM32的串口通信接口
- UART:通用异步收发器
- USART:通用同步异步收发器
大容量STM32F10x系列芯片,包含3个USART和2个UART;(USART可以设置成UART,所有有5个UART)
UART异步通信方式引脚连接方法:
RXD:数据输入引脚。数据接收
TXD:数据发送引脚。数据发送
串
STM32F103芯片的5个串口对应的引脚号:
串口号 | RXD | TXD |
1 | PA10 | PA9 |
2 | PA3 | PA2 |
3 | PB11 | PB10 |
4 | PC11 | PC10 |
5 | PD2 | PC12 |
UART异步通信方式特点:
- 全双工异步通信
- 分数波特率发生器系统,提供精确的波特率。发生和接收共用的可编程波特率,最高可达4.5Mbit/s
- 可编程的数据子长度(8位或者9位)
- 可配置的停止位(支持1或者2位停止位)
- 可配置的使用DMA多缓冲器通信。
- 单独的发送器和接收器使能位。
- 检测标志:1 接收缓冲器 2发送缓冲器空 3传输结束标志
- 多个带标志的中断源。触发中断。
- 其他:校验控制,四个错误检测标志。
串口通信过程
STM32串口异步通信需要定义的参数:
- 起始位
- 数据位(8位或者9位)
- 奇偶校验位(第9位)
- 停止位(1,15,2位)
- 波特率设置
USART框图:
常用的串口相关寄存器
- USART_SR状态寄存器
- USRAT_DR数据寄存器
- USRAT_BRR波特率寄存器
串口操作相关库函数
void USART_Init();//串口初始化:波特率,数据字长,奇偶校验,硬件流控制以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断
void USART_SendData();//发送数据到串口,DR
uint16t USART_ReceiveData();//接收数据,从DR读取接收到的数据
FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断状态标志位
串口配置的一般步骤
①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
②串口复位:USART_DeInit();这一步不是必须的
③GPIO端口模式设置:GPIO_Init();模式设置参考STM32中文参考手册8.1.11外设GPIO配置
④串口参数初始化:USART_Init();
⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤):
NVIC_Init();
USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数:USARTx_IRQHandler();
⑧串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接收数据,从DR读取接收到的数据
⑨串口传输状态获取:
FlagStatus USART_GetFlagStatus(UASRT_typeDef* UASRTx uint16_t USART_FLAG);
void USART_ClearITPendingBit(UASRT_TypeDef* UASRT, uint16_t USART_IT);