在REAL6410开发平台上,独立按键驱动(KeyUserDef)和矩阵键盘驱动(keypad)两个只能有一个在系统中使用,不能同时使用。所以:
首先,打开REAL6410V1的工程文件,在解决方案资源管理器中,使得C:/WINCE600/SMDK6410/src/DRIVES/keybd中的KeyUserDef(独立按键驱动)在编译时不被包含(按右键选择exclude from build)。
其次,REAL6410 WINCE6自带的矩阵键盘驱动KEYBD驱动有问题,接上8*8的键盘后,只有两行有反应,其他6行没有反应,经反复诊断,需要再keymatrix.cpp中的函数GPIO_CtrlHandler中添加pGPIOReg->GPNCON = (pGPIOReg->GPNCON & ~(0xffff<<0)) | (0xaaaa<<0) ——因为若不加这句,只有7、8行所有列有输出,其他行没有。分析原因,可能是由于GPN也可以被配置成Key pad ROW的功能,所以有可能其他地方配置GPN导致冲突。