STM8S003红外发送
[调查]STM8 STM32新社区首页带给你的感受是:
STM8S005K6,SPI问题
STM8S103F3P 与STM8S103F3U 区别?
求STM8S105 看门狗程序?
STM32或者STM8有哪些系列带有运算放大器
MSP430可以用STM32( STM8 )替代吗 ?
分享一下STM8L152的段式液晶驱动程序
ST7是什么芯片?跟STM32 STM8有什么区别吗?网上资料也不多
STM8L 进入halt()模式,IWDG,停止后仍然复位
http://bbs.21ic.com/icview-176724-1-1.html
点评
这种模式程序在RAM中执行,EEPROM和FLASH是在IDDQ(低功耗模式),时钟切换到低速时钟。
进入此模式的步骤如下:
进入RAM
切换系统时钟到LSE或LSI
关闭高速时钟、外设和ADC
屏蔽中断
通过设置FLASH_CR1的EEPM位来关闭FLASH和EEPROM
等待FLASH和EEPROM关闭
通过设置CLK_REGCSR的REGOFF位进入校准低功耗模式
退出low power run mode的步骤如下:
通过重置CLK_REGCSR的REGOFF位进入主校准模式,延时等待主校准稳定。
通过设置FLASH_CR1的EEPM位来打开FLASH和EEPROM,延时等待FLASH和EEPROM打开。
屏蔽所有中断。
程序如下:
void LPR_init(void)
{
/*Switch the clock to LSE and disable HSI*/
CLK_HSEConfig(CLK_HSE_OFF);
#ifdef USE_LSE
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);
CLK_SYSCLKSourceSwitchCmd(ENABLE);
while (((CLK->SWCR)& 0x01)==0x01);
CLK_HSICmd(DISABLE);
#else
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
CLK_SYSCLKSourceSwitchCmd(ENABLE);
while (((CLK->SWCR)& 0x01)==0x01);
CLK_HSICmd(DISABLE);
#endif
//PWR_UltraLowPowerCmd(ENABLE);
/*Configure event for WAKEUP and FUNCTION, disable the interrupts*/
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); //切换系统时钟 // 到LSI
sim(); //屏蔽中断
LPR_Ram(); // Call in RAM //程序在RAM里执行
//if(lowpowerwait_flag==1)
// {
// lowpowerwait_flag=0;
//Switch on the regulator
// CLK->REGCSR = 0xb9;
// while(((CLK->REGCSR)&0x1) != 0x1);
/*Switch the clock to HSI*/
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_HSICmd(ENABLE);
while (((CLK->ICKCR)& 0x02)!=0x02);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
CLK_SYSCLKSourceSwitchCmd(ENABLE);
while (((CLK->SWCR)& 0x01)==0x01);
sim(); //退出Low power run mode
//}
}
评分
查看全部评分
https://www.stmcu.org.cn/module/forum/thread-612479-1-1.html
低功耗对MCU的控制程序逻辑要很费心的。
评分
查看全部评分
1)wait(等待模式):时钟关闭、外设可用。通过中断、外部中断、复位,能退出本模式。
2)Active-halt(活跃停机模式):时钟关闭、外设关闭、RTC开启。通过RTC中断、外部中断、复位,能退出本模式。
3)Halt(停机模式)(功耗最低):时钟关闭、外设关闭。通过外部中断、复位,能退出本模式。
评分
查看全部评分