单片机用了不少,但按键中断确是第一次碰到。以往用其他系列MCU做按键处理时除了不停扫描按键外,还要考虑按键消抖(有的就地延时消抖,有的用定时器消抖,但后者效率明显高于前者,而前者程序叫后者简单一点)。程序虽不复杂,但却很恶心人。用过瑞萨的按键中断后只有一个感觉,非常棒。按键按下去后,自动进入按键中断,想在执行下一次按键中断,必须先释放按键后再次按键才能启动新按键动作。程序上面很简单,处理按键从来没有这么潇洒过。
R5F104LE有8个按键中断口,发布在P70~P77。我的智能用电监控、保护系统用到了6个按键中断(位于P70~P75),其他2个口未使能按键中断(即P76~P77只是普通IO口)。使用按键中断时需要注意的是,按键中断口不能悬空。
下面将讲解如何使用Code Generator生成按键中断代码,当然要实现按键功能需要手动添加代码。
[flash][/flash]
第一步:配置时钟。
第二步:按键中断设置。包括按键中断口选择及中断优先级。
第三步:生成代码。
生成代码如下图所示:
第四步:void hdwinit(void) 【系统初始化程序,见“r_systeminit.c”文件】声明
第五步:将“hdwinit() ”写入用户初始化程序进行初始化。【见“r_main.c”】
第六步:添加按键中断用户程序。实现按键次数统计。【见“r_cg_intc_user.c”】
第七步:在主程序中启动按键中断及看门狗,并添加喂狗程序。【见“r_main.c”】
第八步:修改为调试方式为E1 调试方式。并编译程序。
第九步:
仿真。连接开发板,进入仿真方式,按下P70时,程序进入按键中断处理相应程序。