您的位置:首页 > 编程语言 > PHP开发

STM8库文件判断指定IO输入引脚电平GPIO_ReadInputPin有问题

2017-06-07 10:55 281 查看
声明:本文转载自http://blog.csdn.net/lan120576664/article/details/24203639

/**
* @brief Reads the specified GPIO input data pin.
* @param GPIOx : Select the GPIO peripheral number (x = A to I).
* @param GPIO_Pin : Specifies the pin number.
* @retval BitStatus : GPIO input pin status.
*/
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));
}
以上是ST文件读取指定IO口电平原型。

如果你使用类似
if(GPIO_ReadInputPin(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7) == SET)
{
.....
}
这样的判断代码,你会发现永远的不到你想要的。
原因是BitStatus是个enum类型,其实而enum从某个层面上说它是与int类型相似。
所以你用
BitStatus test = GPIO_ReadInputPin(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7) ;
你会发现,test值是个8位的数,而非类似BOOL的0或1.
所以你可以考虑将代码修改为
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
return ((GPIOx->IDR & (uint8_t)GPIO_Pin) ? SET : RESET);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  STM8 IO电平 读取问题
相关文章推荐