0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MSPM0L1306开发板教程之GPIO的中断

创易栈 来源:创易栈 2023-05-14 09:40 次阅读

导语:

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

TOUR

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

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

c5b0219c-f10e-11ed-90ce-dac502259ad0.png

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

c5d25d0c-f10e-11ed-90ce-dac502259ad0.png

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

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

c5f01ba8-f10e-11ed-90ce-dac502259ad0.png

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

c6293654-f10e-11ed-90ce-dac502259ad0.png

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

实操例程1

首先是CPU中断的方式

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

c690cf1c-f10e-11ed-90ce-dac502259ad0.png

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

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

c6bf362c-f10e-11ed-90ce-dac502259ad0.png

整个程序也是比较简单。

c6e044b6-f10e-11ed-90ce-dac502259ad0.png

配套工程名为 Interrput_CPU。

实操例程2

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

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

c70a5328-f10e-11ed-90ce-dac502259ad0.png

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

c741e11c-f10e-11ed-90ce-dac502259ad0.png

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

c76de168-f10e-11ed-90ce-dac502259ad0.png

配套工程名为 Interrput_Event。

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

c76de168-f10e-11ed-90ce-dac502259ad0.png

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

审核编辑:汤梓红

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

    关注

    68

    文章

    10860

    浏览量

    211726
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41492
  • 定时器
    +关注

    关注

    23

    文章

    3248

    浏览量

    114778
  • 开发板
    +关注

    关注

    25

    文章

    5046

    浏览量

    97438
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52088

原文标题:MSPM0L1306开发板教程3 - GPIO的中断

文章出处:【微信号:创易栈,微信公众号:创易栈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MSPM0L1306开发板程之OPA

    MSPM0L系列的OPA是一个轨到轨输入输出的可编程运算放大器,最大为32x,可以软件配置为零漂移斩波放大器以提高精度和漂移性能,有专门优化的输入管脚的型号可以达到10pA的输入偏置电流,标准模式为6MHz带宽,低功耗模式下带宽为1MHz,电流100uA。
    发表于 07-15 09:58 1993次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>OPA

    电赛:mspm0l1306开发板可以烧录程序,但是程序运行不了,怎么解决这个问题?

    mspm0l1306开发板可以烧录程序,但是程序运行不了,怎么解决这个问题?
    发表于 08-01 00:53

    MSPM0L1306开发板程之开发环境搭建

    TI的MSPM0L系列的开发,可以使用KEIL,IAR,CCS等开发环境。仿真器可以使用ARM开发常用的JLINK,以及TI的XDS仿真器。
    的头像 发表于 04-23 10:11 1.1w次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b><b class='flag-5'>开发</b>环境搭建

    MSPM0L1306开发板程之GPIO输入输出

    GPIO算是所有MCU入门的第一步,今天的教程就来教大家设置MSPM0L系列的GPIO的输入输出功能。
    的头像 发表于 05-04 17:22 6361次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b><b class='flag-5'>GPIO</b>输入输出

    MSPM0L1306开发板程之运行模式

    今天的教程讲下MSPM0L系列的运行模式。
    的头像 发表于 05-29 11:21 2980次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>运行模式

    MSPM0L1306开发板程之DMA

    DMA使用是一个不需要CPU干预,自己搬运数据的模块,在前面讲中断事件的章节里面,就有提到过事件的DMA通道,DMA事件路由(DMA Event Route)。
    的头像 发表于 06-09 18:21 2684次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>DMA

    MSPM0L1306开发板程之ADC

    MSPM0L系列的ADC是一个12bit的SAR ADC,采样频率最高1.45MHz,最高可做到11.2位的实际有效位(ENOB)。
    的头像 发表于 06-10 10:16 3699次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>ADC

    MSPM0L1306开发板程之通用定时器

    MSPM0L系列的通用定时器(TIMG)是一个16位的自动重装定时器,支持向下和上下计数两种模式,同时带有两个比较捕获单元,可以做到输出比较,输入捕获,PWM输出,单脉冲输出等功能。
    的头像 发表于 06-30 15:50 4227次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>通用定时器

    MSPM0L1306开发板程之I2C

    MSPM0L系列的I2C支持主从模式,有7位地址位可以设置,速率最大1Mbps,无论是主机或者从机,发送和接收都有独立的8个字节FIFO。
    的头像 发表于 06-30 15:50 4108次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>I2C

    MSPM0L1306开发板教程- NVM(FLASH)

    MSPMPL系列中的NVM(Non Volatile Memory)非易失性存储,也就是我们常说的FLASH。
    的头像 发表于 07-08 10:52 2916次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程- NVM(FLASH)

    MSPM0L1306开发板教程-SPI

    MSPM0L系列的SPI控制器最大频率是16MHz,支持3线和4线的模式,带有4个片选(CS),其中CS3支持命令模式(Command Mode)。
    的头像 发表于 07-08 10:56 2562次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程-SPI

    MSPM0L1306开发板程之COMP

    MSPM0L带有模拟比较器功能,可以用于模拟信号的比较,用于中断MCU或者触发MCU其他外设。
    的头像 发表于 07-15 09:56 2052次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>COMP

    MSPM0L1306开发板程之WWDT

    窗口看门狗WWDT,MSPM0L系列的看门狗的时钟使用的是32KHz的LFCLK,计数器有25位,寄存器可以有8个可选的计数周期,加上时钟的最大8分频,也就是有64档计数周期可选,从1.95ms到8190s,有两个阈值,关闭窗口(closed window)和打开窗口(open window)。
    的头像 发表于 07-15 10:01 1409次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教<b class='flag-5'>程之</b>WWDT

    TI MSPM0L1306开发板简介

    看参考设计的时候看到了这个芯片,和以往烂大街的芯片不一样,它发布于今年3月。这个芯片更是TI这个老师傅狠狠的将活注入到MCU里面产生的奇妙产物。
    的头像 发表于 12-15 10:00 6595次阅读
    TI <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>简介

    MSPM0L1306 LaunchPad开发套件(LP‑MSPM0L1306)

    电子发烧友网站提供《MSPM0L1306 LaunchPad开发套件(LP‑MSPM0L1306).pdf》资料免费下载
    发表于 10-29 09:44 1次下载
    <b class='flag-5'>MSPM0L1306</b> LaunchPad<b class='flag-5'>开发</b>套件(LP‑<b class='flag-5'>MSPM0L1306</b>)