USB的中斷說明


STM32的USB模塊可以產生三種中斷:USB喚醒中斷、USB高優先級中斷和USB低優先級中斷,在STM32的參考手冊中沒有詳細說明這三種中斷對應哪些事件,現說明如下:


1)USB喚醒中斷:在中斷向量表中的位置是42。這個中斷在USB設備從暫停模式喚醒時產生,喚醒事件由USB_ISTR寄存器的WKUP位標識。


2)USB高優先級中斷:在中斷向量表中的位置是19。這個中斷僅由USB同步(Isochronous)模式傳輸或雙緩沖塊(Bulk)傳輸模式下的正確傳輸事件產生,正確傳輸事件由USB_ISTR寄存器的CTR位標識。


3)USB低優先級中斷:在中斷向量表中的位置是20。這個中斷由所有其它的USB事件產生,例如正確傳輸(不包括同步模式和雙緩沖塊模式)、USB復位等,事件標志位在USB_ISTR寄存器中。


在STM32的USB開發包的例子中包含了上述中斷的處理,例如在USB揚聲器的例子中,CTR_HP函數處理USB高優先級中斷;在所有例子中都有USB_Istr()函數處理USB低優先級中斷。

 
 usb中斷產生之后通過在usb中斷處理函數中查看USB中斷狀態寄存器 USB_ISTR確認產生中斷請求的事件-->通過USB_ISTR的DIR和EP_IP得知方向(IN OR OUT)和端點號-->查看對應端點寄存器位(見: USB培訓_Part2_USB_IP及其庫的使用PPT第44頁)
以F103為例:
端點在成功完成一次傳輸后, CTR位會被硬件置起,如果USB_CNTR上的相應位也被設置的話,就會產生中斷。與端點相關的中斷標志和USB_CNTR寄存器的CTRM位無關。這兩個中斷標志位將一直保持有效,直到應用程序清除了USB_EpnR寄存器中的相關中斷掛起位(CTR位是個只讀位)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM