打印
[活动]

【G32A1465 测评】key中断

[复制链接]
84|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjb1|  楼主 | 2024-12-17 15:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
七、Key中断
这个实验非常简单,本实例利用测评三、的GPIO_LCD直接完成。
打开PINS_LED工程,打开main.c;用打开文件的方式打开工程PINS_isr\Souse\main.c就像下截图那样,下图1
打开对勾描述的main.c,观察代码,发现有一段描述key中断的函数:
void KEY_IRQHandler(void){
    if((PINS_ReadPmInt**(PMC) & (1<<KEY1_PIN)) != 0) { /* Get interrupt flag */
        LED_On(LED_RED);
        PINS_ClrPinInt**Cmd(PMC, KEY1_PIN);kk=101; /* Clear interrupt flag */
    }else if((PINS_ReadPmInt**(PMC) & (1<<KEY2_PIN)) != 0){
        LED_Off(LED_RED);
        PINS_ClrPinInt**Cmd(PMC, KEY2_PIN);kk=202; /* Clear interrupt flag */
    }else{
        PINS_ClrPmInt**Cmd(PMC); /* Clear interrupt flags for all pins in the port */
    }
}
为了能在LCD中显示按键值,我们将key1定义为101key2定义为202;奸商棕色有下划线的部分,当然在自定义全局变量里增加一个:
int kk=0;
将这段代码拷贝到本工程main.c的所有sysTick函数的后边即可。因为用了中断,主函数中原来的这串代码就不用了,本例用/**/注释掉了。打开对勾的main.cmain函数中多了两行代码:
/* set PMC interrupt callback function */
INT_SYS_InstallHandler(PMC_IRQn,&KEY_IRQHandler,(ISR_T*) 0);
/* Enable PMC interrupt */
INT_SYS_EnableIRQ(PMC_IRQn);
将他们拷贝到本main.c工程main函数的加载项位置,我加在串口初始化之前,前后有关系吗?除了与系统和系统时钟之外,其他的先后次序关系不大,仅仅跟那个函数先用有关,比如某些函数启动过程需要打印参数以便观察,那么串口初始化就必须放在这函数之前,以此类推。
之后在LCD显示中增加一个外部变量:extern int kk;


   增加显示key值的项即可。见照片2



7_01.jpg (146.21 KB )

7_01.jpg

7_02.jpg (767.24 KB )

7_02.jpg

使用特权

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

本版积分规则

个人签名:永远好心情 [img]https://bbs.21ic.com/static/image/s

57

主题

259

帖子

1

粉丝