STM32
直播中

王鹏

7年用户 1360经验值
私信 关注
[问答]

STM32L476将端口设为模拟输入后无法进入stop2模式怎么解决?

参考了STM32L476官方例程 在进入stop2模式前 将所有端口设置为模拟输入

  • GPIO_InitTypeDef GPIO_InitStruct;
  •     __HAL_RCC_GPIOA_CLK_ENABLE();
  •     __HAL_RCC_GPIOB_CLK_ENABLE();
  •     __HAL_RCC_GPIOC_CLK_ENABLE();
  •     __HAL_RCC_GPIOD_CLK_ENABLE();
  •     __HAL_RCC_GPIOE_CLK_ENABLE();
  •     __HAL_RCC_GPIOF_CLK_ENABLE();
  •     __HAL_RCC_GPIOG_CLK_ENABLE();
  •     __HAL_RCC_GPIOH_CLK_ENABLE();

  •     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  •     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  •     GPIO_InitStruct.Pull = GPIO_NOPULL;
  •     GPIO_InitStruct.Pin = GPIO_PIN_All;

  •     HAL_GPIO_Init(GPIOA,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOB,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOC,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOD,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOE,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOF,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOG,  GPIO_InitStruct);
  •     HAL_GPIO_Init(GPIOH,  GPIO_InitStruct);

  •     __HAL_RCC_GPIOA_CLK_DISABLE();
  •     __HAL_RCC_GPIOB_CLK_DISABLE();
  •     __HAL_RCC_GPIOC_CLK_DISABLE();
  •     __HAL_RCC_GPIOD_CLK_DISABLE();
  •     __HAL_RCC_GPIOE_CLK_DISABLE();
  •     __HAL_RCC_GPIOF_CLK_DISABLE();
  •     __HAL_RCC_GPIOG_CLK_DISABLE();
  •     __HAL_RCC_GPIOH_CLK_DISABLE();


发现单片机无法进入stop2,将这段程序删除在cubemx将空闲引脚设为低功耗模式,可以正常进入低功耗和唤醒,但是待机时的电流很大有400多微安,求各位大佬帮帮忙,看一下是那个地方出了问题。


回帖(1)

王飞云

2024-4-10 18:19:32
如果将所有端口设置为模拟输入后无法进入stop2模式,可能存在以下几个原因:

1. 如果设备中存在外部中断或者其他功能模块(例如定时器)使用了某一个端口,那么将该端口设置为模拟输入时可能会导致相应模块无法正常工作。此时,需要在进入stop2模式之前,将这些功能模块禁用或者配置为不影响停止模式的状态。

2. 可能存在某些未初始化的引脚或者寄存器导致无法进入stop2模式。请确保在进入stop2模式之前对相关引脚和寄存器进行正确的初始化。

3. 可能存在其他外部因素导致无法进入stop2模式,例如某些外设(例如串口模块)的操作或者中断触发等。此时,需要仔细检查代码和硬件设计,确保没有其他因素影响了进入stop2模式的操作。

总结来说,需要仔细检查外设和功能模块的使用情况,确保在进入stop2模式前正确配置和禁用相关的引脚和寄存器,并排查其他未知的外部因素干扰。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分