《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。程式寫好以後發現始終無法進入中斷,開始查...