【STM8】STM8固件库的坑(GPIO_ReadInputDataBit)
1. 问题
读取IO口输入,返回值有可能是0 或 1以外的值。问题出在GPIO_ReadInputDataBit()
这个函数。
BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));
}
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus, BitAction;
2. 解决
2.1 判断0
if(0 == GPIO_ReadInputDataBit(...))
{
}
else
{
}
2.2 修改固件库
BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
if(0 == (GPIOx->IDR & (uint8_t)GPIO_Pin));
return RESET;
else
return SET;
}