STM32之中斷事件
中斷和事件:
11:51 2018/7/30
中斷和事件是同一個觸發脈衝 中斷/事件
中斷是需要CPU參與的
需要軟體的中斷服務函式才能完成中斷後產生的結果;
事件是靠脈衝發生器產生一個脈衝,
進而由硬體自動完成這個事件產生的結果
當然相應的聯動部件需要先設定好,比如引起DMA操作,AD轉換等;
事件機制提供了一個完全有硬體自動完成的觸發到產生結果的通道,
不要軟體的參與,降低了CPU的負荷,節省了中斷資源,提高了響應速度(硬體總快於軟體)
是利用硬體來提升CPU晶片處理事件能力的一個有效方法;
例如:
外部I/O觸發AD轉換,來測量外部物品的重量:
傳統的中斷通道,需要I/O觸發產生外部中斷,外部中斷服務程式啟動AD轉換,
AD轉換完成中斷服務程式提交最後結果;
事件通道,I/O觸發產生事件,然後聯動觸發AD轉換,AD轉換完成中斷服務程式提交最後結果;
相比之下,後者不要軟體參與AD觸發,並且響應速度也更塊;
要是使用事件觸發DMA操作,就完全不用軟體參與就可以完成某些聯動任務了。
配置:
要產生中斷,必須先配置好並使能中斷線。
要產生事件,必須先配置好並使能事件線。
硬體中斷選擇
要配置 23 根線作為中斷源,請執行以下步驟:
配置 23 根中斷線的遮蔽位 (EXTI_IMR)
配置中斷線的觸發選擇位(EXTI_RTSR 和 EXTI_FTSR)
配置對應到外部中斷控制器 (EXTI) 的 NVIC 中斷通道的使能和遮蔽位,
使得 23 箇中斷線中的請求可以被正確地響應。
硬體事件選擇
要配置 23 根線作為事件源,請執行以下步驟:
配置 23 根事件線的遮蔽位 (EXTI_EMR)
配置事件線的觸發選擇位(EXTI_RTSR 和 EXTI_FTSR)
軟體中斷/ 事件選擇
可將這 23 根線配置為軟體中斷/事件線。以下為產生軟體中斷的步驟。
配置 23 根中斷/事件線的遮蔽位(EXTI_IMR、EXTI_EMR)
在軟體中斷暫存器設定相應的請求位 (EXTI_SWIER)
===============================================================================================
為什麼預裝暫存器TIMx_RCR的值要-1呢? 如要計數2000 就裝入2000-1
因為當遞增計數器的重負次數達到重複計數器暫存器中程式設計的次數加一次(TIMx_RCR+1)後,
產生更新事件UEV。