串口通信基本原理
1. 處理器與外部設置通信的基本方式
- 并行通信:數據各個位同時傳輸
- 串行通信:數據按位順序傳輸
在串行通信中,按照數據的傳輸方向,又分為:
- 單工:數據傳輸只支持在一個方向傳輸
- 半雙工:允許數據在兩個方向上傳輸,但是,在某一時刻,只允許數據在一個方向上傳輸,它實際上是一種切換方向的單工通信
- 全雙工:允許數據在倆個方向上傳輸,因此,全雙工是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力
2、串行通信的通信方式
- 同步通信:帶時鐘同步信號傳輸
SPI、IIC通信 - 異步通信:不帶時鐘同步信號
UART(通用異步收發器)、單總線 - USART:通用同步異步收發器
3、常見串行通信接口
4、UART異步通信方式引腳連接方法
- RXD:數據輸入引腳。數據接收
- TXD:數據發送引腳。數據發送
STM32串口常用寄存器和庫函數
1、常用的串口相關寄存器
- USART_SR:狀態寄存器
- USART_DR:數據寄存器
- USART_BRR:波特率寄存器
2、串口操作相關庫函數
void USART_Init(); //串口初始化:波特率,數據字長,奇偶校驗,硬件流控以及收發使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相關中斷void USART_SendData();//發送數據到串口,DR
uint16_t USART_ReceiveData();//接受數據,從DR讀取接受到的數據FlagStatus USART_GetFlagStatus();//獲取狀態標志位
void USART_ClearFlag();//清除狀態標志位
ITStatus USART_GetITStatus();//獲取中斷狀態標志位
void USART_ClearITPendingBit();//清除中斷狀態標志位
3、波特率計算方法
串口配置的一般配置
串口時鐘使能,GPIO時鐘使能:RCC_APB2PeriphClockCmd();
串口復位:USART_DeInit(); 這一步不是必須的
GPIO端口模式設置:GPIO_Init(); 模式設置為GPIO_Mode_AF_PP
串口參數初始化:USART_Init();
開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個步驟)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);