你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L031独立看门狗切换时间慢,影响实时性,ST的技术支持...

[复制链接]
农夫水0533 提问时间:2018-4-2 10:45 /
   目前在做一个项目时候遇到一个非常棘手的问题,希望在这和大家讨论一下,如果有人有什么好的建议请给在下指条路子。
   一、产品的具体流程如下: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模式之前修改只是修改了时间,其他和以上完全一样。


   不知道各位有什么建议或者对该问题的看法。
收藏 评论13 发布时间:2018-4-2 10:45

举报

13个回答
wenyangzeng 回答时间:2018-4-2 14:02:18
唤醒事件把MCU从 stop模式唤醒,建议不要重新初始化时钟,而只是改变IWDG的定时参数。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

butterflyspring 回答时间:2018-4-2 15:17:02
LSI不是一直都打开吗?你又没切换,为什么要这么做呢?只要更新一下IWDG就好了.

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

农夫水0533 回答时间:2018-4-2 17:19:13
wenyangzeng 发表于 2018-4-2 14:02
唤醒事件把MCU从 stop模式唤醒,建议不要重新初始化时钟,而只是改变IWDG的定时参数。 ...

不初始化时钟,确切的说不初始化HSI,程序起不来
农夫水0533 回答时间:2018-4-2 17:21:15
butterflyspring 发表于 2018-4-2 15:17
LSI不是一直都打开吗?你又没切换,为什么要这么做呢?只要更新一下IWDG就好了. ...

打开LSI这两句基本不会耗时间,时间是微秒级别,时间主要消耗在等待IWDG->SR为0这里。
wenyangzeng 回答时间:2018-4-2 19:10:49
农夫水0533 发表于 2018-4-2 17:19
不初始化时钟,确切的说不初始化HSI,程序起不来

都用LSI不行吗?
feixiang20 回答时间:2018-4-2 23:29:45
你代码语句确定都是正确的吗,逐步检查下参数运行中的变化,尝试改变30ms看看

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

七哥 回答时间:2018-4-2 23:54:27
农夫水0533 发表于 2018-4-2 17:21
打开LSI这两句基本不会耗时间,时间是微秒级别,时间主要消耗在等待IWDG->SR为0这里。 ...

比较诡异,即便是LSI,也不至于用30ms呀。
那要是从run模式到STOP模式时先设置IWDG,然后再切换时钟呢?相应的唤醒以后,先切换HSI时钟,再设置IWDG。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

农夫水0533 回答时间:2018-4-4 14:32:22

在run模式使用LSI运行比较慢,IWGD一直使用的是LSI
农夫水0533 回答时间:2018-4-4 14:33:28
feixiang20 发表于 2018-4-2 23:29
你代码语句确定都是正确的吗,逐步检查下参数运行中的变化,尝试改变30ms看看 ...

语句是正确的,对比DEMO没问题,和ST的计数支持也联调过。目前看时间就是卡在等待SR寄存器清0这语句。
农夫水0533 回答时间:2018-4-4 14:35:17
toofree 发表于 2018-4-2 23:54
比较诡异,即便是LSI,也不至于用30ms呀。
那要是从run模式到STOP模式时先设置IWDG,然后再切换时钟呢? ...

根据ST的说法是,HSI和LSI是异步时钟,在HSI运行时候配置使用LSI的IWDT,需要等待这么久;他们认为这个时间是正确的的,但是我有点怀疑,问一下大家有没有遇到过。
qq1450963225 回答时间:2018-7-25 16:49:22
大佬 可以教教我怎么用L031么 或者给我份基础代码文档   QQ:1450963225  万分感谢

点评

可以去这边看资料 https://www.stmcu.org.cn/document/list/index/category-681  发表于 2018-7-26 14:37
农夫水0533 回答时间:2018-7-26 19:10:19
qq1450963225 发表于 2018-7-25 16:49
大佬 可以教教我怎么用L031么 或者给我份基础代码文档   QQ:1450963225  万分感谢 ...

直接下载他们的demo就行,这个片子主要用于低功耗的产品。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版