MSP432笔记——按键中断

发布者:大酉幽华1最新更新时间:2022-08-10 来源: csdn关键字:MSP432  按键中断  外部中断 手机看文章 扫描二维码
随时随地手机看文章

GPIO按键外部中断

所用板卡 MSP432P401R LaunchPad

按键电路

MSP432LaunchPad按键

按键连接GPIO P1.1 P1.4

按键外围电路

按键按下时,对应IO变化为低电平,按键必须使用上拉电阻

程序编写

使用库函数 driverLib


main中需要的步骤

{


设置IO输入/输出方向,带上拉电阻的输入模式

清除中断标识位,在配置时就需要清除标志位

设置中断触发边沿,上升沿/下降沿

使能GPIO中断

使能总中断(3个中断函数)

}

main源码


int main(void)

{

    /* Stop Watchdog  */

    MAP_WDT_A_holdTimer();


    //GPIO Interrupt test

    GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1,GPIO_PIN1); //P1.1 button1

    GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1,GPIO_PIN4); //P1.4 button2


    GPIO_clearInterruptFlag(GPIO_PORT_P1,GPIO_PIN1);  //清空中断标识位

    GPIO_clearInterruptFlag(GPIO_PORT_P1,GPIO_PIN4);  //清空中断标识位


    GPIO_interruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN1,GPIO_HIGH_TO_LOW_TRANSITION);   //edge

    GPIO_interruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN4,GPIO_HIGH_TO_LOW_TRANSITION);   //edge


    GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN1);

    GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN4);


    //使能中断

    Interrupt_enableInterrupt(INT_PORT1);

    Interrupt_enableSleepOnIsrExit();

    Interrupt_enableMaster();


while(1)

    {

        

    }

}


中断服务函数,P1接口有中断服务函数,需要自己编写其中内容,

具体函数名位于项目路径下的/ccs/startup_msp432p401r_ccs.c文件中

中断服务函数名声明位置

P1.0~P1.15所有位产生中断都会进入此中断函数,在中断服务函数中再去分辨是哪一位触发了中断

使用&按位与,中断状态status & 相应的位地址,

因为产生中断后,在相应位的中断上是1,与这一位相与结果是1,中断状态与非产生原因的位相与,结果为0


中断服务函数PORT1_IRQHandler,需要的步骤

{


获取中断状态 status

清除中断标志位

根据status判断是哪一位发生中断

用户自定的程序

}


void PORT1_IRQHandler(void)

{


    //中断服务

    uint32_t status = GPIO_getEnabledInterruptStatus(GPIO_PORT_P1); //获取中断状态

    GPIO_clearInterruptFlag(GPIO_PORT_P1,status); //清除标志位


    if(status & GPIO_PIN1)

    {

        GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN0);    //off

    }

    else if( status & GPIO_PIN4 )

    {

        GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);    //on

    }

    else

    {


    }

}

关键字:MSP432  按键中断  外部中断 引用地址:MSP432笔记——按键中断

上一篇:MSP432笔记——TIM定时器中断
下一篇:MSP432使用步进电机

推荐阅读最新更新时间:2024-11-10 15:42

基于51单片机之外部中断实验
************************** Copyright(C) CaKe **************************************** =================================== ==============**版权信息 : CaKen工作室 ============== ==============**文件名 : main.c ============== ==============**作者 : CaKen ============== ==============**版本号 : V1.0
[单片机]
2416开发记录十一:按键驱动(platform/中断
在前面几章的基础上编写了一个按键中断的驱动,并验证成功。 这里用到了字符设备驱动,platform驱动,并有资源的获取,算是比较全面的platform驱动了。 首先是设备模块代码 //my2416PlatformKeyDev.c #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
[单片机]
嵌入式开发笔记-CCS平台-MSP432
注意事项 1、使能中断的单位是端口,因此无法做到只使能端口的某个引脚的中断而不使能该端口的其他引脚。所以如果一个端口有多个引脚是中断源,那么中断子程中应当增加语句,判断是哪一个中断源触发了中断。 2、中断子程不能传入参数、不能有返回值,应当是简短、高效的(在中断中做浮点运算、printf等操作是不明智的)。 3、条件表达式( 表达式1 ? 表达式2 : 表达式3 )比if-else语句在优化方面更好。 4、除非要利用溢出归零特性,否则循环变量一般使用无符号整型数(unsigned int)。 5、为了使程序更加高效,建议将所有函数的参数都控制在4个及以下。 6、CCS不支持引用传递!若想在函数中直接操作外部的变
[单片机]
STM32外部中断使用注意事项
stm32尽管所有的gpio都可以设置为外部中断的功能,但是不能把所有的gpio同时设置为外部中断。例如不能把PA0和PB0同时设置为外部中断,因为PA0和PB0共用一个中断线,MCU只把最后完成初始化的管脚设置为外部中断。 如果代码编写者明确知道PA0和PB0不会同时触发,并且触发有相互依赖关系,可以通过分时设置PA0和PB0的外部中断功能。但是在大多数情况下,外部中断的触发都是随机的,那么在设计原理图的时候就要考虑到这种情况,把用到的外部中断管脚设置到后缀不同的管脚上,如PA0,PA1,PB3,PC8,....PD12,PF16,在一个工程中最多能使用16个外部中断,并且每个管脚的后缀不同。 如果设计电路板没有考虑到这种情况,
[单片机]
51单片机——中断系统、外部中断、定时器中断、串口通信C语言入门编程
中断系统: 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。当几个中断源同时向 CPU请求中断,CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。STC89C5X 系列单片机提供了8个中断请求源,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(
[单片机]
51单片机——<font color='red'>中断</font>系统、<font color='red'>外部中断</font>、定时器<font color='red'>中断</font>、串口通信C语言入门编程
s3c2440之外部中断
对s3c2440的硬件操作无非就是配置寄存器,中断也不例外: 需要设置的寄存器: GPGCON :引脚配置寄存器,设置为第二功能,中断引脚; EINTPEND:中断挂起寄存器,当有中断发生且没有被屏蔽,相应位会自动置1,在进入中断服务程序后必须用软件将其相应位清0以免发生错误中断; SRCPND:源挂起寄存器由32位组成,其每一位都涉及一个中断源。如果中断源产生了中断则相应的位被置1并且等待中断服务。此寄存器指示出是哪个中断源正在等待请求服务。 注意:此寄存器不顾INTMAST的屏蔽位,由硬件自动将相应中断位置1,在进入中断服务程序后必须通过写1清除相应位,以防发生错误中断。 EINTMASK:外部中断屏蔽
[单片机]
s3c2440之<font color='red'>外部中断</font>
s3c6410外部中断号与引脚问题
在编写Linux驱动程序时。我想用某一个引脚做外部中断。可是在调用 int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs ), unsigned long irqflags, const char * devname, void *dev_id); 这个函数的时候遇到了一个问题,irq是个硬件终端号,可是究竟这个引脚相应的终端号是多少呢? 我在网上找资料说的都稀里糊涂的,不是我想要的答案。 于是我便在内核代码里找,以下贴出Linux内核代码的一段archarmmach-s3c6
[单片机]
ARM中外部中断的配置流程供参考
最近看ARM的外部中断的配置,具体的配置如下: 1)使能端口的时钟; 2)将需要的端口配置成输入端口,具体的寄存器为:端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH), 例如,GPIOA- CRL&=0XFFFFFFF0;//PA0设置成输入   GPIOA- CRL|=0X00000008; 设置该端口默认的电平,具体的寄存器为:端口输出数据寄存器(GPIOx_ODR) (x=A..E), 例如,GPIOA- ODR|=1 13; 3) 设置IO口和中断线的映射关系,ARM7中支持16个输入点,对应的配置寄存器为:外部中断/事件控制器(EXTIX) 寄存器(X:1~4), 设定需要配置的
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved