| 
 
| 大家好:      为了实现低功耗,在进入休眠之前我会将不需要的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);
 
 
 }
 
 
 | 
 
  |