MSP432笔记 |
您所在的位置:网站首页 › 按键控制led灯程序 › MSP432笔记 |
GPIO按键外部中断
所用板卡 MSP432P401R LaunchPad 按键电路图 { 设置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 |