这两天测试按键功能,万万没想到小小的按键测试却花费了两天的时间,而且K1仍未测试成功。
首先照例先运行厂家提供的例程,编译下载后,K3和K4反映正常,K1和K2无动于衷。仔细查看代码,原来又是例程中K1和K2的引脚与评测板实际不符,评测板上这两个按键引脚分别是PB1和PB2,而例程中这两个引脚却分别是PC13和PA0,详见下图:
修改了引脚宏定义:
修改宏定义并下载后测试,现象照旧,仔细检查是相关的代码未修改,于是又修改了引脚配置的代码:
之后又接着修改了中断配置的代码:
还修改和添加了中断处理的代码,顺便将原来的LED顺序也修改成对应的按键:
最后再测试,K2按键有了反映,但K1仍然无反映。测试着分析电路,K1按键仅仅是添加了电阻和电容,应该是起着延时作用吧,但无论如何按键,均无反映,反复尝试了多种方法依旧无效。于是我又将代码移植到我的测试项目里继续用轮询和中断两种方式同时测试,详见下图:
我将两种方式获得的结果显示在LCD上:
紧接等号的是轮询法获得的值,键未按下时为高电平1,之后的是中断法获得的值,未按键时除WK_UP(K2)为1外其余为0。
测试结果:K3和K4两种方式都正常,K1仍然无任何反映,K2在我的测试项目中按下之后却造成死机(尚未查证在哪里死循环)。
鉴于时间关系,按键的测试不得不告一段落。
|