• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

单片机TM4C123学习(二):中断与按键控制

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.按键初始化

按键K1——PD7

按键K2——PF4

按键K3——PA3

按键K4——PA2

    //
    // key1 init
    // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);已经在LED init写过了,不然也是要写的
GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);

也就是说,按键初始化只需要(外部设备使能和)设置管脚类型为输入两个步骤。

2.中断使能

三个步骤:设置端口中断类型,使能端口中断,为端口注册一个中断处理句柄

    //
    // interrupt enable--key1
    //
    GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_FALLING_EDGE);    //设置PD7中断类型为下降沿触发
    GPIOIntEnable(GPIO_PORTD_BASE,GPIO_PIN_7);        //使能PF4中断
    GPIOIntRegister(GPIO_PORTD_BASE, Key1IntHandler);  //为PF4注册一个中断处理句柄        
void Key1IntHandler()
  {
    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0<<6);//红灯亮
    GPIOIntClear(GPIO_PORTD_BASE,GPIO_INT_PIN_7);//清除key1
  }

特别注意的是,中断处理句柄中最后要清除按键状态,表示这个中断已经处理完毕

void Key34IntHandler()
  {
    uint32_t IntStatus_raw;
    IntStatus_raw = GPIOIntStatus( GPIO_PORTA_BASE, 0); //读GPIORIS寄存器
    if(IntStatus_raw & GPIO_INT_PIN_3)  // PA3引脚有中断事件
    {
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);//蓝灯亮
        GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_3);//清除key3
    }
    if(IntStatus_raw & GPIO_INT_PIN_2)  // PA2引脚有中断事件
    {
        GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);//灭灯
            GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);//灭灯
            GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//灭灯
        GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_2);//清除key4
    }
  }

一个模块需要共用一个中断入口,所以按键3和4需要合在一起写


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
斐波那契数列算法(c#版)发布时间:2022-07-13
下一篇:
C++线程安全的单例模式发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap