1.串口簡介
通用同步異步收發器(USART)提供了一種靈活的方法與使用工業標準NRZ異步串行數據格式的外部設備之間進行全雙工數據交換。 USART利用分數波特率發生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網),智能卡協議和IrDA(紅外數據組織)SIR ENDEC規范,以及調制解調器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實現高速數據通信。
任何USART雙向通信至少需要兩個腳:接收數據輸入(RX)和發送數據輸出(TX)。
RX:接收數據串行輸。通過過采樣技術來區別數據和噪音,從而恢復數據。
TX:發送數據輸出。當發送器被禁止時,輸出引腳恢復到它的I/O端口配置。當發送器被激活,并且不發送數據時, TX引腳處于高電平。在單線和智能卡模式里,此I/O口被同時用于數據的發送和接收。
串口特性:
● 全雙工的,異步通信
● NRZ標準格式
● 分數波特率發生器系統
─ 發送和接收共用的可編程波特率,最高達4.5Mbits/s
● 可編程數據字長度(8位或9位)
● 可配置的停止位-支持1 或2個停止位
2.硬件接口
在本開發板中,提供串口接口有兩個,一個是普通串口USART1,一個是低功耗串口LPUART1。LPUART1可以通過32.768 kHz驅動,波特率可達9600bps,我們這以普通串口為例。
根據原理圖,USART1_TX和PC4相連,USART1_RX和PC5相連。

3.串口配置



3.代碼生成

3.1 printf重定向實現
int fputc(int c, FILE *stream)
{
huart1.Instance->TDR=c;
while( !(huart1.Instance->ISR&1<<7)){}
return c;
}
3.2 串口中斷
STM32G431芯片有讀數據寄存器RDR和發送數據寄存器TDR。
讀數據寄存器RDR:

發送數據寄存器TDR:

void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
uint8_t c;
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
c=huart1.Instance->RDR;//接收數據
huart1.Instance->TDR=c;
/* USER CODE END USART1_IRQn 1 */
}
3.3 主函數



-
STM32
+關注
關注
2276文章
10942瀏覽量
359062 -
串口
+關注
關注
14文章
1570瀏覽量
77644 -
USART
+關注
關注
1文章
198瀏覽量
31153 -
HAL
+關注
關注
2文章
71瀏覽量
12759
發布評論請先 登錄
相關推薦
評論