STM32
直播中

刘艳

8年用户 2502经验值
私信 关注
[问答]

STM32L031独立看门狗切换时间慢影响实时性怎么解决?

目前在做一个项目时候遇到一个非常棘手的问题,希望在这和大家讨论一下,如果有人有什么好的建议请给在下指条路子。
   一、产品的具体流程如下:1、在run 模式工作75ms 左右,此时设置独立看门狗时间是3S,完事以后进入stop模式
                                        2、在进入stop模式之前,独立看门狗时间修改成28S,开启RTC,RTC 15S中断一次,中断一次喂一次狗。
                                        3、唤醒事件把MCU从 stop模式唤醒,然后重新初始化时钟,重新设置看门狗为3S,然后进入run.

   二、具体问题描述:        1、在从run模式到STOP模式切换看门狗时间,看门狗切换时间过长达到了30ms(具体代码在下边)
                                       2、唤醒以后切换看门狗时间也达到了30ms,直接影响到了实时性。
                                       3、目前ST的技术支持说原因是:run时候用的HSI,stop 用的LSI,两个时钟是异步的,导致时间过长,
                                            他需要和原厂确认。
  二、1、整体代码如下
            int main(void)
            {
                 //系统初始化
                 SysInit();
                //大循环
                 while(1)
                {
                    //判断唤醒源执行操作
                     while(WakeSource)
                     {
                              if(WakeSource==1)
                              {
                              }
                              else if(WakeSource==0)
                              {
                               }

                      }
                     STOP();//进入休眠
                 }
                 return 0;
            }
        2 、独立看门狗程序如下
             stop模式:LPWDGIint(void)
                            {
                              RCC->CSR |=RCC_CSR_LSION;
                              while((RCC->CSR RCC_CSR_LSIRDY)==0);
                              IWDG->KR = KR_KEY_ENABLE;
                              IWDG->KR = KR_KEY_EWA;
                              IWDG->PR = IWDG_PRESCALER_256;
                              IWDG->RLR = 4094;
                               while(IWDG->SR);
                              IWDG->KR = KR_KEY_RELOAD;        
                            }
                           时间都是耗在了  while(IWDG->SR);这句话上。
                           run模式之前修改只是修改了时间,其他和以上完全一样。


   不知道各位有什么建议或者对该问题的看法。

回帖(1)

李月如

2024-4-28 10:29:24
唤醒事件把MCU从 stop模式唤醒,建议不要重新初始化时钟,而只是改变IWDG的定时参数。
举报

更多回帖

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