MSPM0L1306开发板教程之GPIO的中断

描述

导语:

前面已经演示了如何配置GPIO的输入和输出,这次就接着讲GPIO的中断如何使用

TOUR

首先MSPM0把CPU中断,DMA触发,以及外设触发外设,都统称为事件(Event)触发源称为事件发布者(Event Publisher),相应中断的外设被称为事件订阅者(Event Subscriber)。

Event的传播路由分为三类,第一个是静态事件路由(Static Event Route),就是指的事件发布者(Event Publisher)到事件订阅者(Event Subscriber)是固定路径,不可配置,例如外设到CPU的中断,中断标志位需要手动清除。

GPIO

第二种称为DMA事件路由(DMA Event Route),这个是外设与DMA的之间的点对点连接,路径不可配置,中断标志会自动清除

GPIO

第三种称为通用事件路由(Generic Event Route),就是外设到外设,外设到DMA,CPU之间的可配置连接,例如定时器触发ADC,IO触发IO,这些都是通用事件路由,中断标志会自动清除。

特别说明的是,在通用事件路由中,Event Publisher是一个,Event Subscriber最多支持到两个,也就是说,一个事件可以触发最多两个动作,例如一个按键可以触发两个GPIO进行翻转。

GPIO

下图是MSPM0L系列的事件的路由表,绿色线是Event Publisher的路径,红色是Event Subscriber的路径。

GPIO

在本次的教程中,将使接在用PA7按键触发PA0的LED点亮和熄灭,软件上使用CPU中断和通用事件路由两种方式。

实操例程1

首先是CPU中断的方式

用上一个GPIO的例程,在SYSCONFIG中,设置Key的中断为允许,中断方式为上升沿和下降沿都会触发,保存设置就可以了

GPIO

程序也是比较简单,第一步需要开启PA的中断,中断函数使用的是GROUP1_IRQHandler,为什么是这个中断函数,其实上面的事件路由表已经写了,GPIO到CPU的静态事件路由,中断请求使用的是GRP1.

关于中断函数的名称,可以在启动文件中找到中断向量表。

GPIO

整个程序也是比较简单。

GPIO

配套工程名为 Interrput_CPU。

实操例程2

第二种是使用通用事件路由的方法,让key直接触发LED的翻转,不经过CPU。

只需要在Key中配置事件发布通道,这里选择的是1通道。

GPIO

然后在LED中,配置事件订阅通道,这里还是选择1通道,就可以成功的把key的事件和LED连接起来,同时在输出策略这里配置为翻转,就可以实现LED的亮和灭。

GPIO

最后保存配置就可以了,来到程序中,可以看到main什么都不需要写,甚至连中断都不需要打开,因为这个是触发是通过外设到外设的连接,没有经过CPU干预,所以除了初始化配置也就没有任何额外的代码。

GPIO

配套工程名为 Interrput_Event。

MSPM0是允许静态事件路由和通用事件路由同时存在的,在GPIO事件路由表中,可以看到CPU IRQ和FPUB两个事件路由,也就是说,我们还可以写一个中断函数来控制其他的外设。

GPIO

这里需要说明的是,GPIO里的FPUB_0(事件发布端口)和FSUB_0(事件订阅端口)对应的是某一组GPIO里面的0-15管脚,FPUB_1和FSUB_2对应的是16-31管脚,也就是说,如果你想1个按键控制两个LED,这两个LED必须在不同GPIOx,或者至少在同一个GPIOx的不同区域(不能同时在0-15管脚或者16-31管脚)。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分