[英]need to use delay in a interrupt function using an STM32F4
所以我正在使用基於 STM32F4 的裸骨板(Black Pill)為我的項目運行程序,我使用 STM32CubeIDE 進行代碼生成
您剛剛看到的圖是我在油漆上簡單制作的圖表,用於解釋我的項目圍繞電感負載保護以防止短路,(無關緊要,只是澄清)我使用中斷,其中第一個中斷在電流觸發時觸發達到參考值 1 值一旦 if 達到值參考值 1 就會觸發第二個中斷,因為在我的情況下無法過濾當前噪聲,我必須避免觸發 int 2 的指令,因為我放置了一個更大的延遲噪聲周期(約 100ns)如果延遲結束並且 int trigger 仍然打開(高),關閉系統(更改輸出)如果延遲結束並且 int trigger 關閉(低),保持系統運行(保持初始輸出)
這是我到目前為止想出的代碼
enter code here
我相信您正在尋找的是“計時器”和一些中斷處理魔術。 我會擴大一點。
如果您的中斷關閉(僅在NVIC中,其余已配置),但發生了中斷觸發事件,則中斷將不會觸發(顯然)。 但是如果你在那之后在 NVIC 中啟用中斷,它會立即觸發。
例子:
我的想法如下。
在中斷 1 處理程序中,您做了兩件事。
當中斷 1 觸發時,它立即禁用中斷 2 並啟用定時器。 定時器最終觸發它自己的中斷,它在 NVIC 中啟用中斷 2。 如果發生中斷 2 事件,將立即調用中斷 2 處理程序。 否則,中斷 2 將不會觸發。
在所有這些等待期間,您的 MCU 可以自由地做任何想做的事,完全中斷實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.