第1 想用GPIO的输入值做判断, 但是GPIO不是连续的,
不连续也可以判断啊
例如
A=ReadInputData(GPIOA);
如果你用了 PA0 , 用了PA2, 不用PA1
对PA0做判断 , 就先A&0xfffe, 再判断啊 (假设低电平0就表示按下)
对PA2做判断 , 就先A&0xfffb, 再判断啊 (假设低电平0就表示按下)
第2
GPIO_ReadInputDataBit() , GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2)
既然是Bit,那么就当然一个Bit对应一个脚,所以你就不能把这么多个脚 或 运算啊
自己去看函数的原型啊 !!!!
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
uint8_t bitstatus = 0x00;
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
{
bitstatus = (uint8_t)Bit_SET;
}
else
{
bitstatus = (uint8_t)Bit_RESET;
}
return bitstatus;
}
|