一直以来,忘了从哪款芯片转过来的,总以为
BitStatus GPIO_ReadInputDataBit ( GPIO_TypeDef * GPIOx,
GPIO_Pin_TypeDef GPIO_Pin
)
这个函数读取到的是某个Pin的电平状态,返回的是0或者是1.而函数的返回类型也是BitStatue,这个原型的定义如下:
typedef enum FlagStatus BitStatus
enum FlagStatus
Enumerator:
RESET
SET
总以为返回值是RESET或者是SET。其实不是。
以PC3为例,当PC3接高电平的时候,GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_3)的返回值是0x04。接低电平的时候返回的是0。
以PB4为例,当PB4接高电平的时候,GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_3)的返回值是0x10。接低电平的时候返回的是0。
仔细看看库手册中是怎么说的呢?
Return values:
BitStatus : GPIO input pin status.
GPIO输入引脚的状态。这里实际应该理解为所用引脚GPIO组屏蔽其他引脚状态后的port值。
所以,当我们应用某个IO为输入引脚,判断这个引脚的电平状态的时候,是不可以用
if(GPIO_ReadInputDataBit == 1)这样的语句的,在设置为输入引脚的时候,必须要注意,切记,切记。
|