请问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条回答
nyvvhxcs
1楼-- · 2019-07-18 23:05
那应该怎么写
跨界F16
2楼-- · 2019-07-19 01:09
主要是你需要先说清楚到底想要干嘛,我们才能帮你达到
vyewrewr
3楼-- · 2019-07-19 01:27
while(BUSY == 1);
你这个BUSY编译器不认识啊,如果是调用GPIO_Pin_Set(GPIOD,PIN8,x),必须
while(BUSY(2) == 1);
这样编译器才认识BUSY是个啥东西。
函数再调用的时候不能只写函数名称,要写括号和参数的,你这里都没有,编译器怎能知道是要掉用什么,所以只能报错了。
nyvvhxcs
4楼-- · 2019-07-19 02:42
跨界F16 发表于 2019-5-16 19:56
主要是你需要先说清楚到底想要干嘛,我们才能帮你达到

就是判断BUSY 是否高电位
nyvvhxcs
5楼-- · 2019-07-19 06:27
vyewrewr 发表于 2019-5-16 20:11
while(BUSY == 1);
你这个BUSY编译器不认识啊,如果是调用GPIO_Pin_Set(GPIOD,PIN8,x),必须
while(BUSY(2) == 1);

这样写也不对呀
跨界F16
6楼-- · 2019-07-19 07:23
我只是说一个大概啊 从名字上来说GPIO_Pin_Get(GPIOD,PIN8),这样的名字是获取状态,当然如果这个函数返回的是1或者0那么就可以放在while里循环了。
if(GPIOD->IDR&pin8)关于这个 我认为应该写成 if((GPIOD->IDR&pin8)==0x100)这样 就行了。仅代表个人意见

一周热门 更多>