历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2018年12月26日 | STM323中低功耗模式

2018-12-26 来源:eefocus

STM32进入低功耗模式 备份SRAM和RTC模块都可以保持正常工作状态。

1 睡眠模式 sleep:

进入睡眠状态前采取以下措施:除保留将要唤醒Cortx内核的时钟之外,关闭所有外设时钟,并开启内部HSI(可设置为1MHz)后,STM32睡眠消耗电流大概0.5mA左右。

2.停机模式 close down:

停机模式设置完成后,CPU遇到WFI或WFE指令就会停止工作,HSI和HSE进入关闭状态。但Flash和SRAM仍然保持电源供应,此时STM32所有工作状态仍然保留着.和睡眠模式一样,停机模式也可以通过外设中断唤醒.在停机模式下除了外部中断控制单元,所有设备的时钟都被禁止了,只能通过在GPIO引脚上产生电平边沿触发外部中断控制方式将STM32从停机状态下唤醒. 外部中断通道除了与GPIO连接,还和RTC时钟报警事件连接,因此可以使用RTC模块实现定时将STM32从停机状态中唤醒.STM32进入停机模式,其电流消耗降至24uA左右.在停机模式基础上,STM32还可以通过内部电压调整器调整内核工作电压可以达到更低的功耗,通过设置STM32 PCR中的LPDS位可以使STM32内核也进入低功耗模式.这样整体电流可下降到14uA,如果开启RTC,需要多消耗1.4uA电流.

STM32在使用HSI振荡器从停机模式恢复所需唤醒时间

恢复时间/us 恢复后的 备注

3.52 返回正常模式 从停机模式恢复到返回正常模式

5.42 返回正常模式+WFI指令 从停机模式恢复到正常模式,并执行WFI模式

5.32 返回低功耗模式+WFE指令 从停机模式恢复后返回低功耗模式,并执行WFE指令

7.21 返回低功耗模式+WFI指令 从停机模式恢复后返回低功耗模式,并执行WFI指令

3.待机模式 standby:

将Cortex_PCR中的SLEEP位置位,再将STM32_PCR的PDDS位置位后,STM32的待机模式就设置好了。待机模式下STM32处于完全


关闭状态:

内核电源、HSE、HSI都处于关闭状态。

和停机模式一样,可以通过RTC报警事件来将STM32从待机模式中唤醒,也可使用外部复位引脚,或通过独立看门狗产生的复位

信号将其唤醒,还可通过在GPIOA.0引脚产生一个上升沿来唤醒STM32,但前题是该引脚必须事先设置为唤醒(Wake Up Pin)引脚功能.

待机模式作为最低功耗模式,退出时间长达50us.进入待机模式,所有的SRAM数据,Cortex_M3处理器的寄存器和STM32的寄存器内容将全部丢失. 即从待机模式唤醒后,相当于得到一个硬件复位的效果.

STM32待机模式下的电流消耗情况

STM32运行情况 VDD/VBAT3.3V VDD/VBAT-2.4V

HSI LSI 看门狗和RTC关闭 2uA N/A

LSI和RTC开启 1.4uA 1.08uA


按键调试的方法唤醒待机模式的系统

KEY WKUP PRINTF LED LCD

KEY:按键扫描

RTC闹钟中断唤醒待机模式的系统用到RTCAlarm_IRQHandler() 和RTC_IRQHandler() 使用时 RTCAlarm_IRQHandler()函数的优先级一定要高于RTC_IRQHandler()

原因如下:

1,产生闹钟中断的前一瞬间,一定产生了秒中断,那么会先执行RTC_IRQHandler() 中断函数, 在RTC_IRQHandler() 执行的过程中,闹钟中断标志又被挂起,由于RTC_IRQHandler()是全局中断函数,必须清除所有的中断标志,程序才能退出该函数, 假如RTC_IRQHandler()  和RTCAlarm_IRQHandler() 是同样的优先级,要想让程序退出RTC_IRQHandler() 函数,那么你必须清除闹钟中断标志(如果不清除闹钟中断标志,程序会死在RTC_IRQHandler() ), 这样问题又出现了,清除闹钟中断标志后,程序就不会进入RTCAlarm_IRQHandler(),那么RTCAlarm_IRQHandler()函数永远也不会被执行。


只有这样做设置闹钟中断函数RTCAlarm_IRQHandler() 的优先级高于全局中断函数RTC_IRQHandler(),在执行全局中断函数RTC_IRQHandler() 的时候,如果产生闹钟中断,那么中断嵌套去执行RTCAlarm_IRQHandler(),执行完毕RTCAlarm_IRQHandler()后,再去执行RTC_IRQHandler() 。

对应程序:


static void RTC_NVIC_Config(void)

  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //RTC全局中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占优先级2位,从优先级2位
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //先占优先级3位,从优先级4位
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能该通道中断
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;  //闹钟中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //比RTC全局中断的优先级高
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure);

}


//RTC时钟中断
//每秒触发一次  
//extern u16 tcnt; 
void RTC_IRQHandler(void)
{  
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断

RTC_Get();//更新时间   
  }
   
RTC_ClearITPendingBit(RTC_IT_SEC); //清秒中断
//RTC_WaitForLastTask();          
}




static void RTC_Alarm_EXIT(void)

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_ClearITPendingBit(EXTI_Line17);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Line = EXTI_Line17;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);


}


void RTCAlarm_IRQHandler(void)
{     
if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
      {


      }
EXTI_ClearITPendingBit(EXTI_Line17);
//RTC_WaitForLastTask();
RTC_ClearITPendingBit(RTC_IT_ALR);
//RTC_WaitForLastTask();
 }

推荐阅读

史海拾趣

Calex Mfg Co Inc公司的发展小趣事

Calex Mfg. Co., Inc.的创业之路并非一帆风顺。在创立初期,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司的创始人们凭借着对电子行业的热爱和对技术的深刻理解,坚持研发创新,不断推出符合市场需求的产品。他们通过精益求精的制造工艺和严格的质量控制,逐渐在市场中树立起了良好的口碑。

Greenray Industries Inc公司的发展小趣事

随着数据中心的能耗问题日益突出,GreenTech敏锐地捕捉到了这一市场机遇。公司研发了一套绿色数据中心解决方案,包括高效能服务器、智能温控系统和可再生能源供电系统等。这些创新技术有效降低了数据中心的能耗和碳排放,为云计算和大数据产业的绿色发展提供了有力支持。GreenTech的解决方案得到了多家互联网巨头的认可,并成功应用于多个大型数据中心项目。

DURABLE公司的发展小趣事

在电子材料领域取得初步成功后,DURABLE公司意识到市场拓展的重要性。公司开始积极拓展海外市场,与全球知名电子产品制造商建立合作关系。通过深入了解不同地区的市场需求和消费者偏好,DURABLE不断调整产品策略,推出符合当地市场需求的产品。同时,公司还加强了与渠道合作伙伴的合作,通过完善的销售网络和售后服务体系,提升了产品的市场占有率和客户满意度。

Edsun Laboratories Inc公司的发展小趣事

ECM Electronics Limited.自创立之初,就注重技术创新。公司投入大量研发资金,专注于开发高效、节能的电子产品。通过不断的技术迭代和产品创新,ECM成功推出了一系列具有竞争力的产品,逐渐在市场上建立了良好的口碑。同时,公司还积极与高校和科研机构合作,引进先进技术,为公司的持续发展提供了强大的技术支撑。

Gamewell-FCI ( Honeywell )公司的发展小趣事

企业文化是企业发展的灵魂。ECM Electronics Limited.注重企业文化的建设,倡导“诚信、创新、协作、共赢”的价值观。公司注重员工的培训和发展,为员工提供良好的工作环境和职业发展机会。通过团队建设活动,增强员工的凝聚力和归属感。正是这些积极向上的企业文化和优秀的团队,为ECM Electronics Limited.的持续发展提供了源源不断的动力。

DBM Optix公司的发展小趣事

在竞争激烈的电子行业中,DBM Optix深知只有不断创新才能保持领先地位。因此,公司始终将研发作为核心竞争力之一,持续投入大量资金用于新技术、新产品的开发。通过与高校、研究机构等合作,DBM Optix不断引入新技术、新材料,并将其应用于产品中,从而不断提升产品的性能和品质。这些创新举措使得DBM Optix在光学通信领域始终保持领先地位。

问答坊 | AI 解惑

教你如何选择 STM32 开发板

转载:ouravr 目前我们接触的到的网上的关于 STM32 开发板大约有 4 种,有适合 STM32 入门级的开发者,也有适合对于高级应用开发的工程师们的。 因此对于不同的人群我们应该选择不同的开发板,面对 4 种我们都没有使用的开发板,手里的银子也不 ...…

查看全部问答>

Protell99se汉字补丁

protell99se不用汉化就能放置汉字的软件,很好用。…

查看全部问答>

WIFI 睡眠唤醒问题

我最近在PDA上调WIFI睡眠唤醒,硬件上有两个GPIO口可以控制芯片电流,是高使能,WIFI正常工作时要置为高,现在我在睡眠时在驱动中将其置低,在唤醒时将其拉高。我想问的是,唤醒时,我还需要做些什么配置,才能使WIFI能正常工作?请高手指点! …

查看全部问答>

ucos的应用范围

请问有哪位所在公司或所供职过的公司有使用uC/OS II进行开发?都是些什么产品?       感觉使用的公司不多,基本上都在用linux,wince.…

查看全部问答>

有点郁闷

由于自己是新手,所以平时自己都爱在网上论坛里找些资料。可找的的次数多了就发现其实很多资料都是一样的,只是不同的人把它传上来了并且把名字改了。结果自己费了半天功夫下下来的资料其实自己早就有了。 我自己想了一下之所以会这样,是因为传资 ...…

查看全部问答>

【MSP430分享】MSP430 M149开发学习板资料奉送

做电子大赛同学买的开发板子,给了我一块,在此把资料奉送给大家,能开起板子的可以自己画板子练习一下,资料一应俱全!!!   NO.1 电路图:         A >仿真器电路图:     &nbs ...…

查看全部问答>

求救啊!这个51单片机如何在万用板上焊接,引脚太多了,有点乱。。。。求助啊…

查看全部问答>

请问自己接电路是,单片机的地GND一般接哪儿

我用的是12V电池,还有烧程序时候是只要连接串口就和单片机开发板一样使用方法了吗…

查看全部问答>

DE2焼写问题

各位大神,求助,本人正熟悉DE2开发板ing 自己定制内核 pll是-3ns 50mhz 做有关sdram lcd1602实验 引脚定义应该没问题 UQM BA数组都有手动定义 reset接高电平 run时出现Using cable \"USB-Blaster [USB-0]\", device 1, instance 0x00 Pausing targ ...…

查看全部问答>

[讨论]于Arrow SEED-EXP430F5529 USB实验板光盘资料里面的IAR不能安装

于Arrow SEED-EXP430F5529 USB实验板光盘资料里面的IAR不能安装,我想问下大家是否一样。…

查看全部问答>