串口通信原理
通信方式:1.并行通信:数据各个位同时传输
2.串行通信:数据按位顺序传输,又分为单工,半双工,全双工。通信方式又分为同步通信和异步通信(是否带时钟同步信号)
stm32的串口通信接口:UART通用异步收发器,-RXD数据输入引脚,-TXD数据发送引脚发送和接受需要共用可编程波特率,单独的发送器和接受器使能位。USART通用同步收发器。
stm32串口异步通信需要定义的参数:1.起始位2.数据位(8或9)3.奇偶校验位(9)4.停止位(1,15,2位)
如图所示,接收位移寄存器和发送位移寄存器与各自数据寄存器相连接,同时与各自的控制相连来控制发送器时钟和接收器时钟,其控制信号(电流大小必须是n/16)来控制波特率。其中SR是各种标志位,CR1前半部分为异步中断控制(可以用于开启不同的中断),后半部分为其使能位。
stm32串口寄存器库函数配置
常用寄存器:
串口常用库函数:
void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断
串口初始化函数
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
DR寄存器
FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断状态标志位
SR寄存器
串口配置步骤:
NVIC_Init();
USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数:USARTx_IRQHandler();
⑧串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
⑨串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
代码展示