// key_row &= ((GPIO_ReadInputDataBit( GPIOB, GPIO_Pin_12) << 0)| //第四列
// (GPIO_ReadInputDataBit( GPIOB, GPIO_Pin_14) << 1)| //第三列
// (GPIO_ReadInputDataBit( GPIOD, GPIO_Pin_8) << 2)| //第二列
// (GPIO_ReadInputDataBit( GPIOD, GPIO_Pin_10) << 3)); //第一列
key_row &= (((GPIOB->IDR &(1<<12)) << 0) |((GPIOB->IDR&(1<<14)) << 1) | ((GPIOD->IDR&(1<<8)) << 2) |((GPIOD->IDR&(1<<10)) << 3));
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
key_row &= (((GPIOB->IDR &(1<<12)) << 0) | 。。。。。。。
(GPIOB->IDR &(1<<12))有两个结果
一)是等于0
二)等于0x1000
你的预设是它等于1, 分别在这儿
把它改为
key_row &= ((GPIOB->IDR >>12)&1) |((GPIOB->IDR>>13)&2) | ((GPIOD->IDR>>6) &4) |((GPIOD->IDR>>7)& 8));
一周热门 更多>