×
单片机 > 单片机程序设计 > 详情

STM8S库GPIO_ReadInputPin函数问题

发布时间:2020-05-30 发布时间:
|

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

}


关键字:STM8S库  GPIO_ReadInputPin  函数问题

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

热门文章 更多
51单片机CO2检测显示程序解析