解决办法:在程序开始加一个语句,关闭低功耗调试模式。 DBGMCU->CR &= ~0x00000002; 各位大佬,诚心请教: STM32L476xxxx,产品程序是bootloader+App,可以仿真器或者FTP远程升级。我遇到的情况是: 原来程序静态功耗20uA。后来用仿真器烧录升级的app,功耗升到了300uA。已找到功耗增加的原因是烧录时,stlink utility工具设置中选择了enable debug in low power模式引起的。如果烧录后,彻底断电重启呢,功耗会回到20uA。不断电,通过其它非仿真器模式升级后自动reset,也是300uA。 如果在20uA的情况下,FTP升级reset完成,仍然20uA;而300uA状态下,FTP升级reset后,也还是300uA。 我的问题是,有没有办法在app里设置代码,通过远程FTP升级,关闭低功耗下的debug模式,将功耗降回20uA正常水平? 我做过尝试,在新版本里重新单独配置所有GPIO管脚(调试脚是PA13、PA14),无效;配置完成后reset,也无效。 __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 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_RCC_GPIOA_CLK_DISABLE(); __HAL_RCC_GPIOB_CLK_DISABLE(); __HAL_RCC_GPIOC_CLK_DISABLE(); __HAL_RCC_GPIOD_CLK_DISABLE(); __HAL_RCC_GPIOH_CLK_DISABLE(); 求助,急。谢谢。! |
查看手册,在新程序开头添加一个语句就OK了。
DBGMCU->CR &= ~0x00000002; // 关闭低功耗下的调试模式
重新编辑 将求助改成已解决