完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
STM32的低待机模式3种: 1)睡眠模式(CM3停止,外设继续运行) 2)模式(全部停止) 3)极限(待机)(1.8V电源关闭模式)从输出模式模式后唤醒的代码执行等同于复位后的执行进入待机后,只能有唤醒脚和RTC唤醒模式,特别是唤醒后,程序最开始运行,也就是相当于软件复位。会略有不同,一般新出的芯片功能会增加一些。
STM32L系列有五种低功耗模式,分别是待机,停止,睡眠,低功耗的睡眠,低功耗运行。 待机模式下消耗最低,实测电流为1uA,不同模式下数据不保存。 停止模式实测消耗为1.3uA,模式下数据保存 为1mA,主要受左右频率。等影响,启动 使用RTC调用,使用其他方式唤醒方式相对简单如下,官方示例程序此代码。 用场景模式的理由及与停止模式的区别 开始 装卸模式设备消耗时间结束,电池在电路板上,关闭模具,一直到用户使用,保持最低功耗。 和停止模式的区别是 因为SRAM和控制器的内容会保存,即能PC跟踪记录程序当前运行的位置,从停止模式启动时,可以继续到时进入停止模式处往下运行。(故运行时,设备检测到是电池供电时,选用停止模式:采集完数据进入停止模式,2小时后(根据需求自定义)定时唤醒采集,依此循环) SRAM和寄存器内容不会保存,即待机模式唤醒相当于系统复位,从头运行(设备完成,从头运行(设备完成,入库时),通过外部等方式进入多种模式模式)特征 模式实现整体 模式三个步骤说明: 1.将系统控制控制第二位置1,当进入深度睡眠时,允许停止系统时钟(系统控制屏蔽参考《Cortex-M3 权威能指南》)2.使PWR_CR的PDDS位,隐藏睡眠时进入 标志模式3.清除WUF唤醒标志(WUF由硬件组成)置位,当系统是WKUP 唤醒复位而不是上电应用等复位时会置位。中可以保存PWR_CSR 的WUF 位是否为1 来判断系统复位是非唤醒唤醒) 4. 以上三个步骤由库函数WR_EnterSTANDYMode()实现 进入模式B void Standby_Enter(void) { RCC_APB2PeriphResetCmd(0x01fc,禁用);//准备进入待机模式,复位所有IO,降低功耗(参照手册,根据需要复位对应IO) RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //需要配置电源控制寄存器,所以使能时钟,否则不能正常使用命令进入唤醒状态和唤醒 PWR_WakePinCmd(ENABLE); //使能WKUP唤醒功能,WKUP唤醒不能退出 PWR_EnterSTANDBYMode(); //进入状态模式 } void Standby_Config(void) { GPIO_InitTypeDef_GPIOInitStructure; //EXTI_InitTypeDef EXTI_InitStructure; //NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(WAKEUP_PORT, &GPIO_InitStructure); /*00只是为了唤醒,这不要,唤醒不能中断,可以中断停止工作,如果正常模式下需要部分中断,可根据需要添加中断事件,这就是中断事件 EXTILineConfig(GPIO_PortSourceGPIOA0_PinSourceGPIOA0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; NVIC_InitStructure.NVIC_IRQChannelCmd = 启用; NVIC_Init(&NVIC_InitStructure); */ } 中断处理(注:唤醒后接近复位,不会执行中断函数里的内容) void EXTI0_IRQHandler(void) { EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位 } void main(void) { 。.. Standby_Configure(); 。.. //读取PWR_CSR的WUF位检测复位复位,也为什么在进入唤醒模式之前需要清除WUF唤醒标志,这样检测到唤醒这就是启动标志确定发生了唤醒复位 if(PWR_GetFlagStatus(PWR_FLAG_WU) == SET)//从唤醒唤醒后,除了电源控制/状态智能(PWR_CSR),所有的手腕被复位 { //是提前唤醒,可帮助 电调试 } else { //上复位、软件复位等非唤醒复位 } while(1) { if(外部特征标志) //根据硬件和个人需求确定什么时候进入示范模式 { Standby_Entering(); } //数据采集,发送 //进入停止模式 //定时从停止模式唤醒 } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1849浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
612浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
505浏览 3评论
509浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
490浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 18:29 , Processed in 0.360976 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号