目前在做一个项目时候遇到一个非常棘手的问题,希望在这和大家讨论一下,如果有人有什么好的建议请给在下指条路子。 一、产品的具体流程如下: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模式之前修改只是修改了时间,其他和以上完全一样。 不知道各位有什么建议或者对该问题的看法。 |
NFC天线设计工具
STM32L071 配置RTC为24小时制,13点的时候会变为1点
STM32L071CBT6低温环境下无法正常工作
nucleo-l053r8 BOARD NAME修改
各位好,我遇到了一个问题,一直没有解决,关于STM32L071 bank问题
STM32L073RZT6 PA2不能置1
STM32L07系列低功耗串口应用
stm32L0系列串口稳定性
谁有STM32L051的数据手册RM0377和编程手册PM0223的中文版,
查之前我的提问
评分
查看全部评分
评分
查看全部评分
不初始化时钟,确切的说不初始化HSI,程序起不来
打开LSI这两句基本不会耗时间,时间是微秒级别,时间主要消耗在等待IWDG->SR为0这里。
都用LSI不行吗?
评分
查看全部评分
比较诡异,即便是LSI,也不至于用30ms呀。
那要是从run模式到STOP模式时先设置IWDG,然后再切换时钟呢?相应的唤醒以后,先切换HSI时钟,再设置IWDG。
评分
查看全部评分
在run模式使用LSI运行比较慢,IWGD一直使用的是LSI
语句是正确的,对比DEMO没问题,和ST的计数支持也联调过。目前看时间就是卡在等待SR寄存器清0这语句。
根据ST的说法是,HSI和LSI是异步时钟,在HSI运行时候配置使用LSI的IWDT,需要等待这么久;他们认为这个时间是正确的的,但是我有点怀疑,问一下大家有没有遇到过。
点评
直接下载他们的demo就行,这个片子主要用于低功耗的产品。