请问STM32F7li怎么判断IO口状态?

2019-07-18 17:30发布

#define BUSY(x)        GPIO_Pin_Set(GPIOD,PIN8,x)
while(BUSY == 1);  这样写为什么会报错 未定义

原子的案例里这样也不能写
   u8 GPIO_Pin_Get(GPIO_TypeDef* GPIOD,u16 pin8)
        {
            IF(GPIOD->IDR&pin8)return 1;
                else return 0;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
xieweibin
1楼-- · 2019-07-19 12:37
本帖最后由 无薪税绵 于 2018-4-4 15:58 编辑

建议,使用HAL库吧,方便。
用法:
if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_8)==0)
{
     ;
}
else
{
   ;
}

如果想用宏的话,可以这样:
#define BUSY HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_8)


关于详细的 STM32使用HAL库操作GPIO ,请参考:
https://www.cnblogs.com/feipeng8848/p/7248898.html
bbslsk
2楼-- · 2019-07-19 16:00
这个函数是写,你要找到读的函数才行
ctwewer
3楼-- · 2019-07-19 20:34
 精彩回答 2  元偷偷看……
zhouxk
4楼-- · 2019-07-19 23:51
宏定义相当于替换,你看看 while(GPIO_Pin_Set(GPIOD,PIN8) == 1) 是个什么?
GPIO_Pin_Set()一般是没有返回值的viod类型, 不知道你的函数定义里面是什么样的。标准库函数中,读是“void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)”,写是“uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)”




至于下面一条说 “原子的案例里这样也不能写”,那得看报什么错?本身这个函数这样写是没有语法问题的。
阿信509
5楼-- · 2019-07-20 02:19
GPIO_Pin_Set(GPIOD,PIN8,x)直接这样调用会报错吗?
jf_90560470
6楼-- · 2019-07-20 06:04
大家多多指教,多多学习,活到老学到老,哈哈哈哈哈哈

一周热门 更多>