打印
[STM32F0]

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

[复制链接]
508|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
5
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;
        }
}

使用特权

评论回复
6
chenho| | 2020-7-4 23:49 | 只看该作者
把 pin7 初始化成输入

使用特权

评论回复
7
yinxiangh|  楼主 | 2020-7-5 09:53 | 只看该作者
试过了,无影响。而且datasheet上描述的是不用设置成输入也能读取的。

使用特权

评论回复
8
yinxiangh|  楼主 | 2020-7-5 09:56 | 只看该作者
不用开漏试试没

使用特权

评论回复
9
lium| | 2020-7-5 10:00 | 只看该作者

设置成输入模式;
031没用过,030我在用,一样的;

使用特权

评论回复
10
yinxiangh|  楼主 | 2020-7-5 10:03 | 只看该作者
这个IO是当模拟IIC在用,外部有上拉电阻的。

使用特权

评论回复
11
yinxiangh|  楼主 | 2020-7-5 10:07 | 只看该作者
你所说的一样是指一样异常?

使用特权

评论回复
12
tian111| | 2020-7-5 10:12 | 只看该作者

GPIO的时钟没打开吧~

使用特权

评论回复
13
yinxiangh|  楼主 | 2020-7-5 10:15 | 只看该作者
打开了。

使用特权

评论回复
14
pangb| | 2020-7-5 10:20 | 只看该作者
你确定设置的为数字输入?

使用特权

评论回复
15
morrisk| | 2020-7-5 10:24 | 只看该作者
如果上面提问的都没有问题,还有一种可能就是这个单片机的的IO口坏掉了,更换管脚试一下

使用特权

评论回复
16
yinxiangh|  楼主 | 2020-7-5 10:34 | 只看该作者
确定上面提问的都没有问题。在手里所有的打样PCBA上都有同样的情况。

使用特权

评论回复
17
caoenq| | 2020-7-6 09:18 | 只看该作者
楼主要发财了,这么大的bug,不知道ST会给你多少封口费,以后楼主可以过着“睡觉睡到自然醒,数钱数到手抽筋”的日子了。

使用特权

评论回复
18
diweo| | 2020-7-6 15:15 | 只看该作者
理论上来说不论IO口如何设置,IDR总是能反映引脚的实际电平的。
IO口这么简单的东西,ST不太可能出BUG的。
我觉得要么是你量错了,要么是引脚虚焊,要么IO口坏了。没其他原因。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝