MSP432笔记

您所在的位置:网站首页 按键控制led灯程序 MSP432笔记

MSP432笔记

2023-08-25 13:25| 来源: 网络整理| 查看: 265

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 { } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3