STM32低功耗,停机模式,IAP

STM32低功耗,停机模式,IAP以下总结了最近在调试 STM32 低功耗时所遇到的问题 分享给小伙伴主要问题有以下三点 1 系统进入停机模式 然后通过 RTC 闹钟唤醒后 程序不能正常运行通过仔细阅读应用手册和查阅资料发现 系统退出停机模式后 需要重新配置时钟这里我在 RTC 的闹钟中断里调用 SystemInit 即解决该问题 另 在利用 RTC 闹钟唤醒停机模式时 要注意配置 EXIT172 系统在加入 IAP 功能后 RTC 唤醒后又不能正常运行实现 IAP 功能需要在主程序

以下总结了最近在调试STM32低功耗时所遇到的问题,分享给小伙伴

主要问题有以下三点:

1.系统进入停机模式,然后通过RTC闹钟唤醒后,程序不能正常运行

       通过仔细阅读应用手册和查阅资料发现,系统退出停机模式后,需要重新配置时钟

这里我在RTC的闹钟中断里调用  SystemInit()  即解决该问题。

       另:在利用RTC闹钟唤醒停机模式时,要注意配置EXIT17

2.系统在加入IAP功能后,RTC唤醒后又不能正常运行

         实现IAP功能需要在主程序中加入地址偏移,加地址偏移的方法有两种:

         1)修改SystemInit()

                该函数在最后有设置主程序的地址偏移,如下:

                 修改宏定义VECT_TAB_OFFSET即可(默认为0x0)。

          2)调用如下函数

                 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3800);  //从 0x0 开始存放 APP程序

         一开始我只知道第二种方法,就只在main()函数的起始进行了地址偏移,然而退出停机模式后必须要调用SystemInit(),该函数又将地址偏移修改回默认的0x0了,所以程序不能正常执行。

        该问题的解决方法就是将修改SystemInit(),利用第一种方法进行地址偏移。

3.在把系统的其他功能加入后,RTC唤醒后又双叒叕不能正常运行

        其他功能包括串口、定时器、SPI等,通过打log发现,退出停机模式后,SystemInit()始终执行不过去,推断应该是其他功能影响了SystemInit()的执行,所以在SystemInit()执行之前关闭了其他功能的时钟,果然。。。。。。终于成了

上程序:

void RTCAlarm_IRQHandler() //RTC中断服务函数 { if(RTC_GetINTStatus(RTC_INT_ALA)!=RESET) { RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_USART1, DISABLE); RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_USART2, DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_SPI1, DISABLE ); RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_TMR1, DISABLE); SystemInit(); //重要!!!退出停机模式必须调用该函数来重新配置时钟 RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_USART1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_USART2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_SPI1, ENABLE ); RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_TMR1, ENABLE); RTC_SetAlarmValue(5+RTC_GetCounter()); //闹钟设置为(5+1)S RTC_WaitForLastTask(); } RTC_ClearINTPendingBit(RTC_INT_ALA); EXTI_ClearIntPendingBit(EXTI_Line17); RTC_WaitForLastTask(); }

(程序基于国产MCU雅特利的AT413,与STM32略有不同)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213639.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:55
下一篇 2026年3月18日 下午5:55


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号