[STM32F0] IO口读出来的状态与IO口实际的状态不相符

[复制链接]
 楼主| yinxiangh 发表于 2020-7-4 23:07 | 显示全部楼层 |阅读模式
使用STM32031G4的过程中,碰到一个奇怪现象,IO口读出来的状态与IO口实际的状态不相符
lium 发表于 2020-7-4 23:33 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| yinxiangh 发表于 2020-7-4 23:38 | 显示全部楼层
也就是说:IO口用万用表去量测电平是3.3V的情况下,IDR读取对应的bit位为0。
wangzsa 发表于 2020-7-4 23:43 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| yinxiangh 发表于 2020-7-4 23:46 | 显示全部楼层
以下是本人的GPIO的初始化及使用部分。如有碰到类似情况的大神,还请指点问题出在哪。

*****************************初始化**********************************************      
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7|GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
         
  GPIO_ResetBits(GPIOB,GPIO_Pin_3);


*******************************使用部分*******************************************

    GPIO_ResetBits(GPIOB,GPIO_Pin_6);
    DelayTime(COUNT_SCL);

    GPIO_SetBits(GPIOB,GPIO_Pin_7);
    DelayTime(COUNT);
    GPIO_SetBits(GPIOB,GPIO_Pin_6);
    DelayTime(COUNT);

    while (err_time--)
    {                                
         GPIOB->MODER&=0xFFFF3FFF;
        if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7) == 0)          //在此时,PIN7外部量侧是高电平,但是程序读出来是低电平.  
        {
            GPIO_ResetBits(GPIOB,GPIO_Pin_6);
            GPIOB->MODER|=0x00004000;
            return true;
        }
}
chenho 发表于 2020-7-4 23:49 | 显示全部楼层
把 pin7 初始化成输入
 楼主| yinxiangh 发表于 2020-7-5 09:53 | 显示全部楼层
试过了,无影响。而且datasheet上描述的是不用设置成输入也能读取的。
 楼主| yinxiangh 发表于 2020-7-5 09:56 | 显示全部楼层
不用开漏试试没
lium 发表于 2020-7-5 10:00 | 显示全部楼层

设置成输入模式;
031没用过,030我在用,一样的;
 楼主| yinxiangh 发表于 2020-7-5 10:03 | 显示全部楼层
这个IO是当模拟IIC在用,外部有上拉电阻的。
 楼主| yinxiangh 发表于 2020-7-5 10:07 | 显示全部楼层
你所说的一样是指一样异常?
tian111 发表于 2020-7-5 10:12 | 显示全部楼层

GPIO的时钟没打开吧~
 楼主| yinxiangh 发表于 2020-7-5 10:15 | 显示全部楼层
打开了。
pangb 发表于 2020-7-5 10:20 | 显示全部楼层
你确定设置的为数字输入?
morrisk 发表于 2020-7-5 10:24 | 显示全部楼层
如果上面提问的都没有问题,还有一种可能就是这个单片机的的IO口坏掉了,更换管脚试一下
 楼主| yinxiangh 发表于 2020-7-5 10:34 | 显示全部楼层
确定上面提问的都没有问题。在手里所有的打样PCBA上都有同样的情况。
caoenq 发表于 2020-7-6 09:18 | 显示全部楼层
楼主要发财了,这么大的bug,不知道ST会给你多少封口费,以后楼主可以过着“睡觉睡到自然醒,数钱数到手抽筋”的日子了。
diweo 发表于 2020-7-6 15:15 | 显示全部楼层
理论上来说不论IO口如何设置,IDR总是能反映引脚的实际电平的。
IO口这么简单的东西,ST不太可能出BUG的。
我觉得要么是你量错了,要么是引脚虚焊,要么IO口坏了。没其他原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部