久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2738|回復: 2
收起左側

(菜鳥筆記)對比STC單片機說STM32F1xx的外部中斷

[復制鏈接]
ID:104497 發表于 2021-2-21 16:14 | 顯示全部樓層 |閱讀模式
   在外部中斷操作過程中,STM32F引用了‘中斷’和‘事件’兩個概念,對于俺這樣的初學者來說,這兩個概念比較容易產生混淆,其實對比STC單片機類似的過程就可以明確加以區分。
    STC單片機的外部中斷引腳(INT0、INT1)不僅能通過一系列配置產生外部中斷,還可以干預針對引腳T0或T1的脈沖計數,下圖是STC單片機INT0中斷和T0計數之間的關聯邏輯。
圖13.jpg


    我們用這個圖來說明中斷和事件的概念。
    從圖中可以看出,INT0(P3.2腳)可以獨立產生下降沿中斷或上升沿/下降沿中斷,(后者的意思是上升沿和下降沿都可以產生中斷,)也可以不產生中斷,僅僅參與T0計數器的脈沖門控制。
    如果INT0用來產生中斷,配置TCON寄存器的IT0選擇下降沿觸發模式或上升沿/下降沿觸發模式,再使能IE0和EA,那么它就是一個‘中斷’源;如果它是用來控制T0脈沖,進而由T0產生計數溢出中斷,那就轉而操作T0_GATE和TR0,就可以閉合或斷開T0脈沖通道,此時的INT0就是觸發T0計數的成因之一,或者說,它是觸發T0計數中斷的‘事件’之一。
    類似的概念也出現在STM32F1xx當中,但過程要比STC復雜一些。
圖14.jpg

    圖中以PC5和PC9的下降沿作為中斷源,它們將通過一個比較復雜的設置通道進入NVIC中斷邏輯。這兩個下降沿也可以充當事件源,用來產生事件脈沖。
    STM32F1xx的所有GPIO引腳都可以充當‘中斷’源或‘事件’源,不像STC那樣只有孤零零的INT0和INT1。STM32F1xx把所有的GPIO引腳按位序分成了若干組,也就是PA0、PB0……PG0這7個0序引腳放在一組,直至PA15、PB15……PG15為第15組,總計16個組。通過寄存器設置,每組可以選擇其中一個引腳作為‘值日生’產生中斷/事件,如此一來,分為16組的112個引腳就可以同時生成7個外部中斷請求/事件觸發。哦?怎么不是16個中斷請求呢?原來0~4組可以生成獨立的外部中斷/事件EXTI0~EXTI4,而5~9組和10~15組只能各自產生一個外部中斷/事件EXTI9_5和EXTI15_10。STM32F1XX把這7個二級中斷源/事件源又稱為‘中斷線’,在手冊里叫LINE0~LINE[9:5]、LINE[15:10]。
    某一組從七個引腳中選出一個‘值日生’是寄存器AFIO_EXTICR1~AFIO_EXTICR4的功勞,每個寄存器用4個位EXTIx[3:0]管一組,比方說圖中5線組到底選誰是由AFIO_EXTICR2的EXTI5[3:0]的值說了算,當EXTI5[3:0]=0010時,PC5就被選中了,所以AFIO_EXTICR的作用相當于多路選擇開關。
    下一關是通過EXTI_RTSR和EXTI_FTSR的TR5和TR9確定邊沿觸發方式,圖中示例是選擇下降沿觸發。很不幸的是,STM32F1XX雖然可以選定上升沿和下降沿均可觸發,但它沒有像STC一樣的電平觸發,這給某些應用帶來了不便。
    再往后就進入了‘復雜’的重點區域,造成復雜局面的寄存器有4個:軟件中斷/事件寄存器EXTI_SWIER、外部中斷掛起寄存器EXTI_PR、外部事件屏蔽寄存器EXTI_EMR和外部中斷屏蔽寄存器EXTI_IMR。通過這4個家伙,剛才哪些中斷線可以像STC一樣產生中斷請求,也可以以事件源的方式觸發脈沖發生器產生事件脈沖。
    EXTI_EMR和EXTI_IMR比較好理解,負責屏蔽EXTI5事件線路的是EXTI_EMR的MR5,負責屏蔽EXTI5中斷線路的是EXTI_IMR的MR5,寫0將屏蔽所在線路不產生事件或中斷。
    最麻煩的是這兩個與門前面的EXTI_SWIER和EXTI_PR。
    如果我們想讓PC5成為EXTI5之后只產生中斷,那么,EXTI_EMR的MR5寫0屏蔽事件線路,EXTI_IMR的MR5寫1開放中斷線路,EXTI_SWIER的SWIER5寫0(其實也不用特意寫0,因為它的復位值就是0。)EXTI5有效的下降沿通過或門,在圖中的位置向下進入與門之后形成EXTI9_5中斷線,同時,EXTI_PR的PR5就會自動置1,如果此時NVIC_ISER0的SETENA23為1,就會產生外部中斷請求,至于其優先級如何就要看NVIC_IP5的IP[23]是什么值了。
    注意,在上述過程中這個SWIER5千萬不要寫1,否則不管PC5來沒來下降沿,只要EXTI_IMR的MR5=1就會立刻產生EXTI9_5中斷請求。這個功能到底是干什么的,俺也沒搞明白。
    EXTI_PR其實是一個中斷標志寄存器,作用類似于STC單片機TCON中的IE0或IE1。EXTI5有效了,EXTI_PR的PR5就被硬件置1,等NVIC響應這個中斷以后,要軟件清除它。需要注意的是,清除PR5不是寫0,而是寫1。
    另外,EXTI_PR和EXTI_SWIER是相互關聯的:PR5寫1不僅能夠清除PR5,還同時清除SWIER5;如果SWIER5寫1,則PR5也會被自動置1。 這就是圖中想要表達的意思。
    最后說說STM32F1xx搞出來一個EXTI_PR的另外用途。
    如果PC5和PC9要同時產生中斷,而它們又處于同一個中斷線EXTI9_5上,NVIC的中斷響應程序EXTI9_5_IRQHandler咋知道到底是PC5的EXTI5還是PC9的EXTI9呢?當然了,它是不知道的,這就需要在程序中判斷EXTI_PR的PR5和PR9到底誰是1了。

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:57414 發表于 2021-6-7 13:52 | 顯示全部樓層
樓主你好,我看你發帖所用到的圖片都很精美,請問是您自己畫的還是從其它學習資料中截圖的?
回復

使用道具 舉報

ID:404881 發表于 2021-6-9 00:08 | 顯示全部樓層
樓主好細心,感謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看欧美一区 | 欧美日本韩国一区二区 | 成人妇女免费播放久久久 | 在线中文字幕日韩 | 国产一区视频在线 | 羞羞网站免费观看 | 中文精品一区二区 | 91久久国产综合久久 | 久久久久久国产一区二区三区 | 国产精品久久久久9999鸭 | 日韩一级| 成人免费小视频 | 午夜视频一区 | 国产视频一区二区 | 国产精品一区二区免费 | 久久久精品 | 久久精品国产99国产精品 | 精品少妇一区二区三区日产乱码 | 国产精品福利在线 | 国产人成精品一区二区三 | 九九成人 | 国产精品久久久久久久久 | 国产日韩欧美 | 国产精品免费一区二区三区四区 | 日本不卡一区 | 99re视频在线观看 | 欧美成人免费在线视频 | 日韩视频一区二区在线 | 国产精品视频一二三区 | 亚洲国产精品久久久 | 日日夜夜免费精品视频 | 欧美一级片免费看 | 精品一区二区三区在线观看国产 | 日韩精品视频一区二区三区 | 亚洲国产精品自拍 | 久久精品色视频 | 国产精品自在线 | 免费黄色大片 | 中文字幕99 | 欧美视频二区 | 亚洲在线一区二区 |