打印

LP-MSPM0L1306开发板试用体验+2 相同的配方,不同的味道(事件的处理)

[复制链接]
775|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 6552918 于 2023-10-31 23:29 编辑

在看MSPM0 L系列的用户手册是发现,文档中没有中断的章节而是多出了个事件,在ARM的内核文件中对中断和事件都有过描述,但仔细研究MSPM0 L用户手册后发现MSPM0的事件处理要比一般的MCU中的事件和中断要强大很多,有种相同的配方,不同的味道的意思!!!
首先MSPM0把CPU中断,DMA触发,以及外设触发外设,都统称为事件(Event)。触发源称为事件发布者(Event Publisher),相应中断的外设被称为事件订阅者(Event Subscriber)。


事件结构的路由有三种不同类型,用于将发布者连接到订阅者:CPU 中断事件、 DMA 触发事件和通用事件。
CPU 中断事件

DMA 触发事件

通用事件


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

下面我们通过例程来看一下上述内容的具体实现
首先看一下例程中的按键中断控制LED亮灭的例程,按下按键LED亮,松开按键LED灭。
按键配置如下,PA14为输入,并产生中断,触发条件为上升沿和下降沿都中断

LED配置为普通输出

代码操作实现如下,输入中断进行LED的输出控制。

实现上述功能还有一种使用通用事件路由的方法,让按键直接触发LED的翻转,不经过CPU。相关设置如下
按键管脚需要设置一个按键事件发布通道

LED管脚配置事件订阅和事件响应策略

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

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

总结,MPSM0L的事件处理功能非常强大,提供了除了DMA外的另外一种不经过CPU来处理任务的方式,因为MPSM0L主频不是很高,事件功能大大提高了MPSM0L的处理能力,实际使用中比较有意义。

使用特权

评论回复

相关帖子

沙发
xyz549040622| | 2023-11-30 22:51 | 只看该作者
MSPM0L系列的中断是通过事件路由来实现的。和传统的中断比起来,区别还是很大的。

使用特权

评论回复
板凳
6552918|  楼主 | 2023-12-1 09:40 | 只看该作者
xyz549040622 发表于 2023-11-30 22:51
MSPM0L系列的中断是通过事件路由来实现的。和传统的中断比起来,区别还是很大的。 ...

功能很强!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1243

帖子

9

粉丝