打印
[STM32F0]

GPIO读取异常

[复制链接]
2522|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yiwang1011|  楼主 | 2015-1-27 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在使用STM32031G4的过程中,碰到一个奇怪现象,IO口读出来的状态与IO口实际的状态不相符。也就是说:IO口用万用表去量测电平是3.3V的情况下,IDR读取对应的bit位为0。以下是本人的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;
        }
}
沙发
ar_m_cu| | 2015-1-27 09:42 | 只看该作者
把 pin7 初始化成输入

使用特权

评论回复
板凳
yiwang1011|  楼主 | 2015-1-27 09:54 | 只看该作者
ar_m_cu 发表于 2015-1-27 09:42
把 pin7 初始化成输入

试过了,无影响。而且datasheet上描述的是不用设置成输入也能读取的。

使用特权

评论回复
地板
ar_m_cu| | 2015-1-27 10:22 | 只看该作者
不用开漏试试没

使用特权

评论回复
5
mmuuss586| | 2015-1-27 12:08 | 只看该作者

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

使用特权

评论回复
6
yiwang1011|  楼主 | 2015-1-27 13:45 | 只看该作者
ar_m_cu 发表于 2015-1-27 10:22
不用开漏试试没

这个IO是当模拟IIC在用,外部有上拉电阻的。

使用特权

评论回复
7
yiwang1011|  楼主 | 2015-1-27 13:46 | 只看该作者
mmuuss586 发表于 2015-1-27 12:08
设置成输入模式;
031没用过,030我在用,一样的;

你所说的一样是指一样异常?

使用特权

评论回复
8
zqjqq88| | 2015-1-27 15:19 | 只看该作者
GPIO的时钟没打开吧~

使用特权

评论回复
9
yiwang1011|  楼主 | 2015-1-27 16:49 | 只看该作者
zqjqq88 发表于 2015-1-27 15:19
GPIO的时钟没打开吧~

打开了。

使用特权

评论回复
10
fg888fg888| | 2015-1-27 18:37 | 只看该作者
你确定设置的为数字输入?如果上面提问的都没有问题,还有一种可能就是这个单片机的的IO口坏掉了,更换管脚试一下

使用特权

评论回复
11
yiwang1011|  楼主 | 2015-1-27 19:36 | 只看该作者
fg888fg888 发表于 2015-1-27 18:37
你确定设置的为数字输入?如果上面提问的都没有问题,还有一种可能就是这个单片机的的IO口坏掉了,更换管脚 ...

确定上面提问的都没有问题。在手里所有的打样PCBA上都有同样的情况。

使用特权

评论回复
12
随性自然vollo| | 2018-10-22 11:44 | 只看该作者
yiwang1011 发表于 2015-1-27 09:54
试过了,无影响。而且datasheet上描述的是不用设置成输入也能读取的。

请问,问题解决了吗?什么原因呢?

使用特权

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

本版积分规则

3

主题

70

帖子

0

粉丝