完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151
STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_iwdg.c (+)IWDG可以通过软件或硬件启动(可通过选项字节配置)。 (+)IWDG由低速时钟(LSI)提供时钟,因此即使主时钟发生故障,IWDG仍保持活动状态。 (+)一旦启动IWDG,就将LSI强制设置为ON,并且不能同时禁用两者。计数器从复位值(0xFFF)开始递减计数。当达到计数值(0x000)的末尾时,将产生一个复位信号(IWDG复位)。 (+)每当在IWDG_KR寄存器中写入密钥值0x0000 AAAA时,都会将IWDG_RLR值重新加载到计数器中,并防止看门狗复位。 (+)IWDG在仍处于STOP和STANDBY模式下工作的VDD电压域中实现(IWDG复位可从STANDBY唤醒)。 RCC_CSR寄存器中的IWDGRST标志可用于通知何时发生IWDG复位。 (+)调试模式:当微控制器进入调试模式(内核暂停)时,IWDG计数器要么继续正常工作,要么停止,具体取决于DBG模块中的DBG_IWDG_STOP配置位,可通过__HAL_DBGMCU_FREEZE_IWDG()和__HAL_DBGMCU_UNFREEZE_IWDG()宏进行访问 STM32 芯片 IWDG 看门狗 停用 关闭 方法 上google一搜索,发现 使用这个 可以在调试模式下关闭 IWDG,实际也是把WDG_SW设置为了1 __HAL_DBGMCU_FREEZE_IWDG() 另外,可以把opion bits 的 WDG_SW 设置为1. (0代表硬看门狗, 1代表软件看门狗。) 在st-link utility-》target-》optionbytes 困扰许久的问题,在网上查了许多资料未发现有用信息,在今天看os低功耗模式时发现标准库有解决办法,我试验后,发现HAL库也是有这个功能。还有独立看门狗的问题,调试模式时会复位,本文找到了解决方法,可将独立看门狗冻结。 1.STOP模式可直接下载程序 /* Enable Ultra low power mode */ HAL_PWREx_EnableUltraLowPower(); /* Enable the fast wake up from Ultra low power mode */ HAL_PWREx_EnableFastWakeUp(); 这两句以及cube(具体此部需要实验,需要查询其他资料,本人是试验成功的) stm32就支持低功耗时直接下载程序。 2. STOP模式可调试模式 关键词:DBGMCU /** @defgroup HAL_Exported_Functions_Group3 DBGMCU Peripheral Control functions * @brief DBGMCU Peripheral Control functions *@verbatim ##### DBGMCU Peripheral Control functions ##### [。。] This section provides functions allowing to: (+) Enable/Disable Debug module during SLEEP mode (+) Enable/Disable Debug module during STOP mode (+) Enable/Disable Debug module during STANDBY mode@endverbatim * @{ */ 官方注释,文件在 stm32l1xx_hal.c /* DBGMCU Peripheral Control functions *****************************************/void HAL_DBGMCU_EnableDBGSleepMode(void);void HAL_DBGMCU_DisableDBGSleepMode(void);void HAL_DBGMCU_EnableDBGStopMode(void);void HAL_DBGMCU_DisableDBGStopMode(void);void HAL_DBGMCU_EnableDBGStandbyMode(void);void HAL_DBGMCU_DisableDBGStandbyMode(void); 这些函数加入到代码中就支持DEBUGMCU在各种模式下,比如,HAL_DBGMCU_EnableDBGStopMode,就可以在stop模式下进行调试。 3. 没进低功耗模式问题建议 表现出来进来就出去了,说明一进来就被唤醒了,可以查各种中断、事件看看有没有唤醒。我发现经常被唤醒的是系统滴答 void HAL_SuspendTick(void);void HAL_ResumeTick(void); 也是在同一文件中,HAL_SuspendTick挂起系统滴答,HAL_ResumeTick恢复系统滴答。 4. 调试模式时独立看门狗 /** * @brief IWDG Peripherals Debug mode */ #if defined (DBGMCU_APB1_FZ_DBG_IWDG_STOP) #define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU-》APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP) #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU-》APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP) #endif __HAL_DBGMCU_FREEZE_IWDG() 冻结看门狗,此时在调试模式下看门狗就不会复位 __HAL_DBGMCU_UNFREEZE_IWDG()恢复看门狗 类似的有很多,需要根据需求找自己需要的功能 STM32休眠时关闭看门狗计数的简单解决方案 本文采用STM32L476进行测试,休眠模式为STOP,看门狗为独立看门狗IWDG。 其余STM32芯片可参考本贴进行测试。 测试平台 本文采用STM32L476进行测试,休眠模式为STOP,看门狗为独立看门狗IWDG。 其余STM32芯片可参考本贴进行测试。 问题的提出 在此之前对这个问题的解决方法主要有三种: (1)采用调试模式关闭内核的功能来关闭看门狗计数; (2)休眠时采用时钟唤醒来喂狗后继续休眠; (3)用基于系统时钟的窗口看门狗WWDG 第一种方法对STM32L476无效;第二种方案太折腾了,影响RTC使用且费电;第三种方案喂狗间隔太短。 问题的解决 官方数据手册中说明了可以在STOP休眠状态关闭IDWG 因此,只需要修改FLASH_OPTR寄存器的对应位既可以实现休眠免喂狗的功能。 源代码 源代码参考了STM32L4XX_HAL_FLASH_EX.C这个库文件,也感谢朱老师NBIOT学习群管理员给予的有益的建议。 uint8_t flag_IWDG; flag_IWDG=READ_BIT(FLASH-》OPTR, FLASH_OPTR_IWDG_STOP)!=0; //设置旗标,避免反复加载flash导致重启 if(flag_IWDG!=0) { HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); //解锁FLASH CLEAR_BIT(FLASH-》OPTR, FLASH_OPTR_IWDG_STOP); //修改看门狗参数为:休眠时看门狗停止计数 /* Set OPTSTRT Bit */ SET_BIT(FLASH-》CR, FLASH_CR_OPTSTRT);//以下3句不可缺少,否则无法修改FLASH-》OPTR /* Wait for last operation to be completed */ FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); /* If the option byte program operation is completed, disable the OPTSTRT Bit */ CLEAR_BIT(FLASH-》CR, FLASH_CR_OPTSTRT); HAL_FLASH_OB_Launch();//加载flash,会导致重启 } HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); //修改完后关闭flash,已经上锁再执行一遍问题不大 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:48 , Processed in 0.845541 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号