stm32的中斷等待

2021-10-14 08:21:25 字數 947 閱讀 5952

《cotex-m3權威指南》——宋岩譯

《cotex-m3和cotex-m4權威指南》—— 清華大學出版社

可以看到,在m3和m4的中斷機制裡,就是存在至少12週期的延遲的。而這個延遲就是壓棧,跳轉等等一系列動作造成的。

如果優先順序不夠高,或有其它的關中斷操作什麼的,那這個延遲時間還會更長。

具體有哪些操作會導致延遲時間變長,書中都有詳細的描述。

筆者做了乙個實驗,實驗的具體步驟如下:

最終結果如下:

圖中,黃色是pwm的訊號,藍色是pa0的訊號。可以看到,pa0拉低電平之前,pwm就開始了新的乙個脈衝輸出。

根據stm32的參考手冊,定時器的pwm輸出是沒有等待的,即定時器計數完乙個週期的pwm後就會開始新的pwm輸出,根據《權威指南》由於中斷存在延遲,所以pwm的產生肯定會先於中斷處理函式執行。

所以再根據圖中的測試結果,可以得出,黃色上公升沿的時刻和藍色下降沿的時刻之間的差值,就約等於12週期的等待時間。

因為我反反覆覆測試了很多次,這個時間基本上就是固定在360ns,而之所以說約等於12個週期,是因為有各種人為誤差和儀器誤差。但這個360ns應該是差不了多少的了。

而由於在stm32當中,時鐘週期等於機器週期,這裡用的是180mhz的cotex-m4測試的。如果根據這個時鐘週期的12個週期計算,才66.6ns,還差很遠。

所以這個12個週期更像是指令週期。因為每個指令週期基本上都需要幾個機器週期,而又有壓棧時儲存器的傳輸操作,所以具體的時間就不好計算了。

STM32外部中斷

一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...

stm32外部中斷

外部中斷程式配置流程 rcc 時鐘配置 void rcc configuration void 時鐘配置 開啟各路時鐘 rcc apb2periphclockcmd rcc apb2periph usart1 rcc apb2periph gpioa rcc apb2periph afio,enab...

stm32外部中斷

好久沒玩微控制器了,最近閒著沒事想拿出來玩玩,沒想到乙個stm32的外部中斷讓我花費了兩天時間,好的的挫折啊!終於下午除錯成功,下面來說一下我的除錯之路吧!硬體就是兩個按鍵,四個led,led事共陽極接法,按鍵一端接地一端接gpio口,通過按鍵中斷控制led。程式寫好以後發現始終無法進入中斷,開始查...