• 資料介紹
    • 1、引言
    • 2、問題
    • 3、問題解決
    • 4、小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1436 UART RX是否可以同時使用EXTI外部中斷

03/11 16:57
943
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1436 UART RX是否可以同時使用EXTI外部中斷

596.64 KB

1、引言

UART 是個常用的通訊接口,平時處于高電平狀態(tài)。UART_RX 在接收數(shù)據(jù)時起始位會拉低電平這個動作。用戶想知道是否可以利用 I/O 口內(nèi)部的連接來使能 EXTI,通過外部中斷來發(fā)現(xiàn)這個動作,這是本文要探討的內(nèi)容。

2、問題

客戶在開發(fā)其產(chǎn)品過程中,使用了 STM32F401RCT6。產(chǎn)品需要執(zhí)行以下操作:主機發(fā)來命令→采集數(shù)據(jù)→數(shù)據(jù)處理→回傳結(jié)果。但是由于數(shù)據(jù)處理過程中的算法復(fù)雜,執(zhí)行時間較長,導(dǎo)致無法在限定的時間內(nèi)回傳結(jié)果。經(jīng)過一系列優(yōu)化后仍然還差一點點,所以客戶希望在主機通過 UART 發(fā)來的命令的起始位時,就開啟數(shù)據(jù)采集,而不必等待接收完成。這就要求了系統(tǒng)必須要在 UART_RX 收到的數(shù)據(jù)起始位就能夠得到通知,也就是必須在起始位就有個中斷。但是 STM32F4 中的 UART 外設(shè)并沒有提供在接收數(shù)據(jù)的起始位產(chǎn)生中斷的功能,而是接收完一個數(shù)據(jù)幀才能產(chǎn)生相應(yīng)通信中斷。

客戶最初也考慮到了如果將 UART_RX 從外部連接到另一個 I/O 口,然后配置這個 I/O口為下降沿外部中斷的輸入口,當(dāng) UART_RX 接收到數(shù)據(jù)的時候,起始位就會在這個 I/O口上產(chǎn)生外部中斷。但是,因為之前沒有這么考慮過,硬件上沒有預(yù)留,所以不好處理。想了解是否有更好的辦法解決這個問題。

3、問題解決

通過測試發(fā)現(xiàn),確實是可以在 PA3 作為 UART_RX 的時候使能其 EXTI 中斷功能,當(dāng)UART_RX 收到數(shù)據(jù)的時候,在數(shù)據(jù)起始位的下降沿就能產(chǎn)生一次 EXTI 中斷,這樣,用戶從 EXTI 中斷便可得知 UART_RX 已經(jīng)開始接收數(shù)據(jù),以并行執(zhí)行其他準(zhǔn)備任務(wù)。所以,我們的思路是正確且可行的。需要做的事情主要就是在 USART 的初始化之后,手動對 UART_RX 引腳所對應(yīng)的 I/O 口使能其 EXTI 功能并打開中斷。

4、小結(jié)

這個例子中,使用了 I/O 口作為復(fù)用引腳時,其 I/O 引腳仍然還是連接到內(nèi)部其他電路的,包括連接到輸入數(shù)據(jù)寄存器,連接到 EXTI 電路。所以,我們可以利用這種連接來幫助我們實現(xiàn)一些特殊的功能。

很多時候,有些問題可以通過 STM32 內(nèi)部的一些連接來實現(xiàn)一些特殊的使用情況。STM32 在內(nèi)部其實是提供很多內(nèi)聯(lián)的信號,特別是 TIM 外設(shè)、ADC 外設(shè)、DMA 外設(shè)等等。所以,在實際使用中,多動動腦筋,說不定就能找到一個簡單的解決方案。

資料預(yù)覽

相關(guān)推薦