stm32 SysTick/EXTI/USART中斷過程
本文中例子所使用的是stm32f103+標準庫函式, 宣告.
SysTick中斷過程
SysTick是配置好重灌載計數器(STK_LOAD)後, 並使能了SysTick.
SysTick功能框圖
每當隨著STK_CLK, 只要遞減計數器(STK_VAL)慢慢減到0後, 就會發生一次中斷, 進入到SysTick的中斷服務函式中.
也就是每過(STK_LOAD/STK_CLK)時間, 就發生一次中斷, 進入到中斷服務函式中.
EXTI中斷過程
EXTI功能框圖
EXTI是外部中斷, 配置好某個GPIO口, 並配置對應的EXTI, 設定為上升沿/下降沿/雙邊沿.
每當這個GPIO口發生了上升沿/下降沿/雙邊沿, 就發生一次中斷, 進入到EXTI的中斷服務函式中.
USART中斷過程
USART的中斷過程是配置USART函式中, 使能了一些中斷.
USART中斷事件
上列表格是所有USART可以發生的中斷, 若要允許中斷, 則要載USART_CR1中進行配置, 標準庫函式中USART_ITConfig()函式進行配置.
例如下列程式碼
USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE); //使能串列埠接收暫存器不為空中斷
USART_ITConfig ( DEBUG_USARTx, USART_IT_IDLE, ENABLE ); //使能串列埠匯流排空閒中斷
RXNE是接收暫存器不為空, 就是接收到一個位元組產生中斷
IDLE就是空閒線路, 也就是接收到一幀資料後產生中斷, 一幀資料就是這一次傳送的資料
例如當有一幀資料從USART傳送到stm32中
第一個位元組到接收暫存器後, RXNE被置1, 發生RXNE中斷
然後進入中斷服務函式, 執行程式, 清除RXNE
第二個位元組到接收暫存器後, RXNE被置1, 發生RXNE中斷
然後進入中斷服務函式, 執行程式, 清除RXNE
然後繼續接收, 等到這幀資料都接收完了
IDLE被置1, 發生IDLE中斷
然後進入中斷服務函式, 執行程式, 清除IDLE
標準庫中用USART_GetITStatus()函式來檢測標誌位是否被置1
在中斷服務函式快要結束要記得清除相應的中斷標誌位, 清除方法參考手冊中都有
對於RXNE: 對USART_DR讀操作或用USART_ClearITPendingBit()函式寫0
對於IDLE: 先讀USART_SR, 然後讀USART_DR (這個比較特殊, 不要被坑了!!!)
SHOUT OUT TO
STM32F系列USART的IDLE中斷要注意了
stm32串列埠中斷接收一幀資料
相關文章
- EXTI-外部中斷
- 暫時關閉EXTI外部中斷的一個坑 HK32(stm32沒有測試過)
- 初體驗FM33L0-Systick-單發中斷
- MySQL GTID複製中斷修復過程MySql
- Linux 核心處理中斷全過程解析Linux
- STM32使用串列埠實現USART1傳送字串串列埠字串
- 在 Python 除錯過程中設定不中斷的斷點Python除錯斷點
- STM32學習筆記——中斷筆記
- stm32-HAL使用usart傳送中斷判斷髮送標誌庫問題
- SysTick作用
- STM32中斷相關知識總結
- STM32 外部中斷使用方法總結
- vim編輯過程中斷,恢復時出現警告
- STM32記憶體分佈,啟動過程及bootloader記憶體boot
- STM32啟動過程解讀與跟蹤驗證
- 軟中斷排程時機
- 一次DG故障診斷過程分析
- STM32學習筆記之中斷筆記
- 程式設計師面試過程中,該怎麼判斷該公司好壞?程式設計師面試
- 成長,就是不斷向自己妥協的過程
- STM32--USART詳解
- 串列埠,COM口,UART,USART串列埠
- docker 容器中解析 PHP 過程DockerPHP
- jsp中呼叫儲存過程JS儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- STM32 串列埠進入中斷,但是沒有檢查到接收資料位!!!!串列埠
- 【圖片+程式碼】:GCC 連結過程中的【重定位】過程分析GC
- 軟體專案過程診斷與改進建議案例
- 記一次使用gdb診斷gc問題全過程GC
- .記一次使用gdb診斷gc問題全過程GC
- stm8系列--usart收發
- python中PCA的處理過程PythonPCA
- Javascript中new的執行過程JavaScript
- Keras中Mask的傳遞過程Keras
- thrift使用過程中的問題
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- 【STM32】【STM32CubeMX】STM32CubeMX的使用之二:外部中斷
- 伺服器斷電Oracle資料庫修復資料過程伺服器Oracle資料庫