单片机学习小组
直播中

张秀兰

7年用户 1267经验值
私信 关注

如何实现按下按键会翻转板载LED灯状态?

如何实现按下按键会翻转板载LED灯状态?

回帖(1)

何壮梦

2022-2-8 13:50:26
本次按键实验是采用了板载的两个按键分别对应的P1.1与P1.4口,具体迁移到其他IO口的外部中断请移步原理图。


实验现象:按下按键会翻转板载LED灯状态。


key.c
#include "key.h"




void Key_Init(void)
{
        /* Configuring P1.1 as an input and enabling interrupts */
       
        /*配置1.1口为上拉输入*/
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
        /*清除IO口的中断标志位*/
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
        /*使能P1.1的外部中断(这里只是一个引脚)*/
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
        /*使能P1端口的中断(这里是一个大端口,包括多个引脚)*/
    MAP_Interrupt_enableInterrupt(INT_PORT1);
       
        /* Configuring P1.4 as an input and enabling interrupts */
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN4);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN4);
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN4);
    MAP_Interrupt_enableInterrupt(INT_PORT1);
       
}




/* GPIO ISR */
/*端口1中断处理函数*/
void PORT1_IRQHandler(void)
{
    uint32_t status;


    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);


    /* Toggling the output on the LED */
    /*检测到P1.1产生外部中断的处理*/
    if(status & GPIO_PIN1)
    {
        MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
    }
       
        if(status & GPIO_PIN4)
        {
                MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
        }


}


key.h
#ifndef __KEY_H
#define __KEY_H


/* DriverLib Includes */
#include


void Key_Init(void);




#endif


需要注意的一点是,只有这几个端口能产生外部中断(查阅库函数手册)



举报

更多回帖

发帖
×
20
完善资料,
赚取积分