STM8库文件判断指定IO输入引脚电平GPIO

xiaoxiao2021-02-28  98

声明:本文转载自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); }

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-36805.html

最新回复(0)