中斷和事件:
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。
========================
如有不對之處望指出。一起學習共同進步
——十五