我按下按键 能进入中断 可是返回键值总是读不对,可能是那些原因呀?谢谢!
返回的键值不正确可能是你的读取键值的函数有问题。
能帮我看看这个读取键值的函数不(我用的是stm32 Delay_us(1);延时1us) command=0x07; Delay_us(1); Resetload(); //命令开始 Delay_us(1); for(i=0;i<4;i++) { a=command&1; Delay_us(1); if(a==1) { GPIO_WriteBit(GPIOD,ch451_din,Bit_SET); Delay_us(1); } else { GPIO_WriteBit(GPIOD,ch451_din,Bit_RESET); Delay_us(1); } Delay_us(1); Resetdclk(); Delay_us(1); command>>=1; Delay_us(1); //右移一位 Setdclk() Delay_us(1); //产生时钟上升沿锁通知CH451输入位数据 } Setdload(); Delay_us(2000); //产生加载上升沿通知CH451处理命令数据 keycode=0; Delay_us(1); //清除keycode for(i=0;i<7;i++) { keycode<<=1; Delay_us(1); //数据作移一位,高位在前,低位在后 keycode|=ch451_dout; //从高到低读入451的数据 Delay_us(1); Resetdclk(); //产生时钟下升沿通知CH451输出下一位 Delay_us(1); Setdclk(); Delay_us(1); } ch451_key=keycode; //保存上次的键值
这个不是很好看,如果需要我们看的话,直接将你读取键值的波形抓出来看下。