MSPM0G3507学习之中断

关于中断概念不多赘述,主要是了解M0系列的几种中断方式。(此文参考嘉立创提供的资料中文章总结)

首先引入一个概念:嵌套矢量中断控制器----NVIC,也在32中也非常重要,相信大家都了解过,主要用来管理外设中断。

查阅数据手册的时候,发现3507中只有两个外设中断组:INT_GROUP0、INT_GROUP1.本实验要用到的只有按键和LED,所以只有GPIO这一部分的中断,根据数据手册,可以知道GPIO的中断触发后,都是通过GRP1线将中断发布到总线,总线识别到之后就进入中断服务函数中执行内容。

本次实验的目标是通过五向按键来作为中断判断条件,当拨动 按键时,LED点亮,再次拨动熄灭。代码如下(期间延时是通过滴答定时器控制,也属于中断):

#include "ti_msp_dl_config.h"
volatile unsigned int delay_times = 0;
void delay_ms(unsigned int ms) 
{
    delay_times = ms;
    while( delay_times != 0 );
} 

int main(void)
{
    SYSCFG_DL_init();
    NVIC_EnableIRQ(PORTB_INT_IRQN);//开启按键引脚的GPIOB端口中断
    
    while (1) 
    {                        
    
    }
}

void SysTick_Handler(void)//滴答定时器的中断服务函数
{
    if( delay_times != 0 )
    {
        delay_times--;
    }
}

void GROUP1_IRQHandler(void)//Group1的中断服务函数
{
    //读取Group1的中断寄存器并清除中断标志位
    switch( DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1) )
    {
        //检查是否是KEY的GPIOA端口中断,注意是PORTB_INT_IIDX,不是PORTB_S1_IIDX
        case PORTB_INT_IIDX:
            //如果按键按下变为高电平
            if( DL_GPIO_readPins(PORTB_PORT, PORTB_S1_PIN) > 0 )
            {
                //设置LED引脚状态翻转
                DL_GPIO_togglePins(PORTA_PORT, PORTA_LED_PIN);
            }
        break;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值