嵌入式 > 技术百科 > 详情

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

发布时间:2020-12-22 发布时间:
|

/**

  * @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);





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
安森美半导体助力汽车朝电气化及智能化发展