打印
[其他ST产品]

IO模拟输入配置会受到紧邻IO输出配置影响求教

[复制链接]
710|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好:      为了实现低功耗,在进入休眠之前我会将不需要的IO管脚全部配置为模拟输入模式,达到降低功耗的目的。但有一个PD1管脚,这个是另外一个芯片的电源开关,必须保持开的状态,因此要配置成输出,高电平。但是这个管脚一配置,挨着它的PD0管脚就会发生变化。
     现象是:PD0是一个led控制管脚。原理图如下。当整个PD端全部设置为模拟输入的时候,测试PD0的电平是1v左右,功耗很低,led灯不亮,然后配置单独PD1为输出,这是PD0的端口就会变为0.8v左右,LED灯会微亮。功耗就上去了。我尝试了调整配置顺序,和不同的配置方法都一样的。求哪位指点一下,这可能是什么原因。
   端口配置代码如下:
/****************************************************************************************
* 函 数:g_gpio_all_input
* 功 能:设置所有IO输入   ,进入低功耗
* 描 述:
* 输 入:
* 输 出:
* 注 意:
****************************************************************************************/
void g_gpio_all_input(void)
{
       GPIO_InitStruct.Pin = GPIO_PIN_All;
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
        GPIO_InitStruct.Pull = NoPull;

       HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);
        HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);
        HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);
       
        HAL_GPIO_Init(GPIOF,&GPIO_InitStruct);
        /*只有PD1不改变设置,保持输出*/
        GPIO_InitStruct.Pin = (GPIO_PIN_All&(~GPIO_PIN_1));
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
        GPIO_InitStruct.Pull = NoPull;
        HAL_GPIO_Init(GPIOD,&GPIO_InitStruct);
       

}

无标题.jpg (17.06 KB )

无标题.jpg

使用特权

评论回复
沙发
sky.sun.zz| | 2019-6-3 11:26 | 只看该作者
貌似应该设置成数字上拉或下拉输入而非模拟输入,模拟输入悬空很容易受到干扰。

使用特权

评论回复
板凳
wakayi| | 2019-6-18 12:45 | 只看该作者
我也遇到这种情况了 但是不知道怎么解决

使用特权

评论回复
地板
wowu| | 2019-6-18 12:47 | 只看该作者
有时候是会这样的 很奇怪

使用特权

评论回复
5
xiaoqizi| | 2019-6-18 12:52 | 只看该作者
是不是配置上有问题啊

使用特权

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

本版积分规则

166

主题

258

帖子

3

粉丝