ST官网推出了库函数操作,大大方便了用户,但是库函数有一些问题,例如
1.库函数GPIO_ReadInputPin问题
以下是ST文件读取指定IO口电平原型
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));
}
当你在程序中调用
if(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);
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』