1.串口簡介
通用同步異步收發(fā)器(USART)提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。 USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實(shí)現(xiàn)高速數(shù)據(jù)通信。
任何USART雙向通信至少需要兩個腳:接收數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX)。
RX:接收數(shù)據(jù)串行輸。通過過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。
TX:發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的I/O端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時, TX引腳處于高電平。在單線和智能卡模式里,此I/O口被同時用于數(shù)據(jù)的發(fā)送和接收。
串口特性:
● 全雙工的,異步通信
● NRZ標(biāo)準(zhǔn)格式
● 分?jǐn)?shù)波特率發(fā)生器系統(tǒng)
─ 發(fā)送和接收共用的可編程波特率,最高達(dá)4.5Mbits/s
● 可編程數(shù)據(jù)字長度(8位或9位)
● 可配置的停止位-支持1 或2個停止位
2.硬件接口
在本開發(fā)板中,提供串口接口有兩個,一個是普通串口USART1,一個是低功耗串口LPUART1。LPUART1可以通過32.768 kHz驅(qū)動,波特率可達(dá)9600bps,我們這以普通串口為例。
根據(jù)原理圖,USART1_TX和PC4相連,USART1_RX和PC5相連。
3.串口配置
3.代碼生成
3.1 printf重定向?qū)崿F(xiàn)
int fputc(int c, FILE *stream)
{
huart1.Instance->TDR=c;
while( !(huart1.Instance->ISR&1<<7)){}
return c;
}
3.2 串口中斷
STM32G431芯片有讀數(shù)據(jù)寄存器RDR和發(fā)送數(shù)據(jù)寄存器TDR。
讀數(shù)據(jù)寄存器RDR:
發(fā)送數(shù)據(jù)寄存器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;//接收數(shù)據(jù)
huart1.Instance->TDR=c;
/* USER CODE END USART1_IRQn 1 */
}
3.3 主函數(shù)
-
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356003 -
串口
+關(guān)注
關(guān)注
14文章
1554瀏覽量
76514 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30856 -
HAL
+關(guān)注
關(guān)注
2文章
70瀏覽量
12615
發(fā)布評論請先 登錄
相關(guān)推薦
評論