五.问题Debug
5.1 全键盘同时按下多个按键必现重启
复现:使用全键盘机器,同时按下多个按键>6个,
user版本机器会重启、debug版本机器会进入sysdump;
概率:100%;
原因:按下按键个数>6时,IRQ处理函数会一直读取按键内部0x10状态寄存器,直至其值bit7为0
导致IRQ被delay;IRQ配置成Top端,若IRQ无法立即return就会触发系统reboot;
分析:
解决:只处理2个按键,缩短中断函数处理时间
5.2 全键盘与九宫格版本互刷系统重启
复现:全键盘机器刷九宫格版本,开机后按up键必先重启;
概率:100%;
原因:key_report_value()函数只有if,else if没有else异常处理代码:互刷版本上报的键值无法识别后程序代码卡在for循环里无法return即中断函数无法return,触发系统reboot;
分析:
解决:添加else 语句