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

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

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

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

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

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

TI MSPM0L1306開發(fā)板簡介

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

基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

評論