找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2429|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32外部中斷及程序補(bǔ)充說明

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:763998 發(fā)表于 2020-6-22 17:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

外部中斷的概述

4.1.1 NVIC 特性

              STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 個可屏蔽中斷通道。

              嵌套向量中斷控制器 (NVIC) 和處理器內(nèi)核接口緊密配合,可以實(shí)現(xiàn)低延遲的中斷處理和晚到中斷的高效處理。

4.1.2 外部中斷/事件控制器 (EXTI)

              外部中斷/事件控制器包含多達(dá) 23 個用于產(chǎn)生事件/中斷請求的邊沿檢測器。

4.1.3 向量表

使能相應(yīng)中斷需要查詢相應(yīng)向量號。82個(從0到81,剛剛82個)。

4.1.4 EXTI 主要特性

《1》每個中斷 /事件線上都具有獨(dú)立的觸發(fā)和屏蔽

《2》每個中斷線都具有專用的狀態(tài)位

《3》支持多達(dá)23個軟件事件/中斷請求

4.1.5 EXTI 框圖

外部中斷需要打通的線路。

4.1.6 外部中斷/事件線映射

4.2 按鍵外部中斷配置流程

4.2.1 搭建框架

寫出如圖所示的注釋。

找到按鍵引腳、中斷號

找到對應(yīng)中斷線,連接

配置模塊寄存器

在同一中斷線上,可以同時設(shè)置上升沿和下降沿觸發(fā)。即任一邊沿都可觸發(fā)中斷。

4.2.2 代碼分析

1.開啟模塊時鐘與GPIO時鐘

2.連接中斷線

先清零,在寫入需要的數(shù)據(jù),保證功能開啟正確。

3.配置邊沿檢測

按鍵1,空閑狀態(tài)位為低電平,適合上升沿觸發(fā),

按鍵2、3、4,空閑狀態(tài)為 高電平,適合下降沿觸發(fā)

4.開啟模塊中斷

開啟中斷屏蔽寄存器,相當(dāng)于圖中寫1的位置輸出1,與門,全1出1。

或門有1出1,所以我們需要設(shè)置軟件中斷事件寄存器為不開啟狀態(tài),即為默認(rèn)關(guān)閉狀態(tài),進(jìn)而得到圖中的0,邊沿檢測電路,檢測按鍵按鍵,輸出1,即可觸發(fā)外部模塊的中斷,不過還需要開機(jī)NVIC中斷先,才能真正的中斷。

5.開啟NVIC中斷

6.中斷函數(shù)的配置

  • 找到中斷外部中斷線0的中斷服務(wù)函數(shù)

  • 按鍵,按鍵會有一個不穩(wěn)定期、抖動,需要延時越過不穩(wěn)期。

  • 出中斷時,需要請中斷標(biāo)志,不然它會一直進(jìn)。

rc_w1解讀:此位可以讀取、此位寫1會被清零,清零的意思是變成0。

4.4.3 補(bǔ)充

《1》為什么沒給外部中斷配置優(yōu)先級?

中斷的優(yōu)先級,可配,可不配,因為我在實(shí)驗,可以不配,可根據(jù)需求,如多并發(fā)的任務(wù)設(shè)置中斷優(yōu)先級。

《2》外部中斷與串口中斷代碼對比。

串口中斷代碼:

外部中斷代碼:

上兩圖分析,串口,我們配置了優(yōu)先級,外部中斷沒有配置優(yōu)先級,如果外部中斷沒有配置優(yōu)先級,NVIC如何知道誰先誰后呢?同時來先響應(yīng)誰呢?其實(shí)每個外部中斷都有自己的自然優(yōu)先級,在不配置搶占優(yōu)先級與子優(yōu)先級時,默認(rèn)使用自然優(yōu)先級。

以外部中斷線為例,前面藍(lán)色框里面的數(shù)字,代表向量號6、7、8、9、10。紅色框的數(shù)字代表自然優(yōu)先級,數(shù)字越小,優(yōu)先級越高。

《3》按鍵1外部中斷配置框圖

  • MCU、NVIC、EXTI的關(guān)系?

NVIC是MCU的秘書,管理值所有的外部中斷;EXTI是NVIC的助理,處理外交事務(wù),所有片外外設(shè)的中斷事件歸它管。如按鍵就屬于片外外設(shè)。

  • 片內(nèi)外設(shè)、片上外設(shè)、片外外設(shè)?

NVIC就是屬于---片內(nèi)外設(shè)(在內(nèi)核里面,屬于片內(nèi)外設(shè))

USART\GPIO就屬于---片上外設(shè)(在內(nèi)核外面,但在芯片里面,屬于片上外設(shè),)

LED\按鍵就屬于---片外外設(shè)(在芯片外面,屬于片外外設(shè))

  • 為什么外部中斷沒有配置復(fù)用功能?

EXTI只是NVIC的處理,管理著片外外設(shè)的中斷事件,而NVIC在內(nèi)核里面,GPIO和內(nèi)核直接交互,因此我們配置通用模式。而且復(fù)用去的是片上外設(shè),從片上外設(shè)出來,如下圖。

而我們按鍵配置EXTI去的是NVIC,NVIC屬于片內(nèi)外設(shè)。所以配置通用。

通用模式:內(nèi)核直接和GPIO“相連”,復(fù)用模式:GPIO先通過片上外設(shè),最后才通過內(nèi)核。

4.3 程序說明

《1》點(diǎn)亮一盞燈四種操作

可以好好研讀,就不解析了。

《2》初始化函數(shù)都有寄存器版庫函數(shù)版

《3》寄存器與庫函數(shù)的分析

寄存器:應(yīng)用編程接口,對于MCU來說,一切配置最終都?xì)w于寄存器配置。

庫函數(shù):對寄存器操作進(jìn)行了封裝,目的是提高開發(fā)效率。

寄存器是易于學(xué)習(xí)和理解的,不懂的都可以翻手冊理解。庫函數(shù)必須在理解寄存器的基礎(chǔ)上,才能靈活運(yùn)用,不然你不能真正理解每個初始化函數(shù)參數(shù)的含義。

寄存器不好復(fù)用,比如配置了串口1之后再去配置串口2,需要查閱手冊,修改比較多的參數(shù),而庫函數(shù)只需要修改小部分參數(shù),即可配置好、效率高,無需翻閱手冊。

《4》一般的按鍵實(shí)現(xiàn)與狀態(tài)機(jī)的按鍵實(shí)現(xiàn)

一般的按鍵實(shí)現(xiàn);單擊、連按


狀態(tài)機(jī)的按鍵實(shí)現(xiàn):單擊、雙擊、長按

狀態(tài)機(jī)很好用,是一種思想,值得好時間研究。

《4》重定向打印函數(shù)

把printf打印方向重定向到這里,下圖。

printf默認(rèn)往某個內(nèi)存打印,你可以具體告訴它,往哪里打印,如上面重定向。

就這?嗯,沒了。。。



以上的Word格式文檔51黑下載地址:
外部中斷.docx (3.96 MB, 下載次數(shù): 8)
外部中斷.7z (288.59 KB, 下載次數(shù): 10)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表