打印

【创龙TMS320C665x开发板试用】进阶篇之按键

[复制链接]
666|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FCCdsp|  楼主 | 2016-10-15 12:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1. 硬件电路
通过查看硬件原理图,用户自定义按键为GPIO0。

2. 按键配置
配置普通GPIO口、按键为输入、下降沿触发,使能中断。
GPIO中断使能寄存器:BINTEN
方向寄存器:DIR(与LED配置相似)
中断触发上升/下降沿寄存器:RSI/FAL
以上寄存器详GeneralPurpose Input Output (GPIO) User Guide.pdf。
代码:
    // 底板按键所在 GPIO
GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0,GPIO00_LENDIAN,  GPIO_NORMAL_ENABLED);
    // 底板按键
    GPIODirModeSet(SOC_GPIO_0_REGS, GPIO00_LENDIAN, GPIO_DIR_INPUT);
    // 配置为下降沿触发
GPIOIntTypeSet(SOC_GPIO_0_REGS,GPIO00_LENDIAN,GPIO_INT_TYPE_FALLEDGE);
    // 使能 GPIO BANK中断
GPIOBankIntEnable(SOC_GPIO_0_REGS);
3. 中断执行
进入中断清状态,并赋值FLAG。其中中断事件如下图:(GPIO中断事件)

// 禁用 GPIO 外设中断
    GPIOBankIntDisable(SOC_GPIO_0_REGS);
    // 清除系统中断状态
    IntEventClear(SYS_INT_GPINT);
    if(GPIOPinIntStatus(SOC_GPIO_0_REGS, GPIO00_LENDIAN) == GPIO_INT_PEND)
    {
       // 清除 GPIO 外设中断状态
       GPIOPinIntClear(SOC_GPIO_0_REGS, GPIO00_LENDIAN);
       if(Flag == 0)
       {
           Flag = 1;
       }
       else
       {
           Flag = 0;
       }
    }
    // 使能 GPIO 外设中断
    GPIOBankIntEnable(SOC_GPIO_0_REGS);
4. 配置中断
DSP可配置中断共有12个(INT4~INT15),将事件配置至中断输入并使能。
    // 注册中断服务函数
    IntRegister(C66X_MASK_INT4,USER0KEYIsr);
    // 映射中断到 DSP 可屏蔽中断
    IntEventMap(C66X_MASK_INT4,SYS_INT_GPINT);
    // 使能 DSP 可屏蔽中断
    IntEnable(C66X_MASK_INT4);
    // 使能 GPIO 外设中断
GPIOBankIntEnable(SOC_GPIO_0_REGS);
5. 运行
通过FLAG标志在主函数中运行,通过USER0按键可观察三个流水灯变化。
【按一下流水动作,再按一下停止。】

本资料来自于网络,只供学习!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

967

主题

1447

帖子

9

粉丝