導語:
前面已經演示了如何配置GPIO的輸入和輸出,這次就接著講GPIO的中斷如何使用
TOUR
首先MSPM0把CPU中斷,DMA觸發(fā),以及外設觸發(fā)外設,都統(tǒng)稱為事件(Event)觸發(fā)源稱為事件發(fā)布者(Event Publisher),相應中斷的外設被稱為事件訂閱者(Event Subscriber)。
Event的傳播路由分為三類,第一個是靜態(tài)事件路由(Static Event Route),就是指的事件發(fā)布者(Event Publisher)到事件訂閱者(Event Subscriber)是固定路徑,不可配置,例如外設到CPU的中斷,中斷標志位需要手動清除。
第二種稱為DMA事件路由(DMA Event Route),這個是外設與DMA的之間的點對點連接,路徑不可配置,中斷標志會自動清除
第三種稱為通用事件路由(Generic Event Route),就是外設到外設,外設到DMA,CPU之間的可配置連接,例如定時器觸發(fā)ADC,IO觸發(fā)IO,這些都是通用事件路由,中斷標志會自動清除。
特別說明的是,在通用事件路由中,Event Publisher是一個,Event Subscriber最多支持到兩個,也就是說,一個事件可以觸發(fā)最多兩個動作,例如一個按鍵可以觸發(fā)兩個GPIO進行翻轉。
下圖是MSPM0L系列的事件的路由表,綠色線是Event Publisher的路徑,紅色是Event Subscriber的路徑。
在本次的教程中,將使接在用PA7按鍵觸發(fā)PA0的LED點亮和熄滅,軟件上使用CPU中斷和通用事件路由兩種方式。
實操例程1
首先是CPU中斷的方式
用上一個GPIO的例程,在SYSCONFIG中,設置Key的中斷為允許,中斷方式為上升沿和下降沿都會觸發(fā),保存設置就可以了
程序也是比較簡單,第一步需要開啟PA的中斷,中斷函數(shù)使用的是GROUP1_IRQHandler,為什么是這個中斷函數(shù),其實上面的事件路由表已經寫了,GPIO到CPU的靜態(tài)事件路由,中斷請求使用的是GRP1.
關于中斷函數(shù)的名稱,可以在啟動文件中找到中斷向量表。
整個程序也是比較簡單。
配套工程名為 Interrput_CPU。
實操例程2
第二種是使用通用事件路由的方法,讓key直接觸發(fā)LED的翻轉,不經過CPU。
只需要在Key中配置事件發(fā)布通道,這里選擇的是1通道。
然后在LED中,配置事件訂閱通道,這里還是選擇1通道,就可以成功的把key的事件和LED連接起來,同時在輸出策略這里配置為翻轉,就可以實現(xiàn)LED的亮和滅。
最后保存配置就可以了,來到程序中,可以看到main什么都不需要寫,甚至連中斷都不需要打開,因為這個是觸發(fā)是通過外設到外設的連接,沒有經過CPU干預,所以除了初始化配置也就沒有任何額外的代碼。
配套工程名為 Interrput_Event。
MSPM0是允許靜態(tài)事件路由和通用事件路由同時存在的,在GPIO事件路由表中,可以看到CPU IRQ和FPUB兩個事件路由,也就是說,我們還可以寫一個中斷函數(shù)來控制其他的外設。
這里需要說明的是,GPIO里的FPUB_0(事件發(fā)布端口)和FSUB_0(事件訂閱端口)對應的是某一組GPIO里面的0-15管腳,F(xiàn)PUB_1和FSUB_2對應的是16-31管腳,也就是說,如果你想1個按鍵控制兩個LED,這兩個LED必須在不同GPIOx,或者至少在同一個GPIOx的不同區(qū)域(不能同時在0-15管腳或者16-31管腳)。
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
10989瀏覽量
214805 -
中斷
+關注
關注
5文章
902瀏覽量
42289 -
定時器
+關注
關注
23文章
3268瀏覽量
116423 -
開發(fā)板
+關注
關注
25文章
5305瀏覽量
100314 -
GPIO
+關注
關注
16文章
1235瀏覽量
53164
原文標題:MSPM0L1306開發(fā)板教程3 - GPIO的中斷
文章出處:【微信號:創(chuàng)易棧,微信公眾號:創(chuàng)易?!繗g迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
MSPM0L1306開發(fā)板教程之OPA

電賽:mspm0l1306的開發(fā)板可以燒錄程序,但是程序運行不了,怎么解決這個問題?
MSPM0L1306開發(fā)板教程之開發(fā)環(huán)境搭建

MSPM0L1306開發(fā)板教程之DMA

MSPM0L1306開發(fā)板教程之通用定時器

MSPM0L1306開發(fā)板教程之I2C

MSPM0L1306開發(fā)板教程之WWDT

MSPM0L1306 LaunchPad開發(fā)套件(LP?MSPM0L1306)

評論