当前位置: 代码迷 >> 综合 >> 关于STM8L系列低功耗井盖板设计记录【云南昆明电子设计开发工程师】
  详细解决方案

关于STM8L系列低功耗井盖板设计记录【云南昆明电子设计开发工程师】

热度:92   发布时间:2024-02-11 13:37:18.0

由于需要对井盖姿态进行检测,采用了ADXL362低功耗姿态芯片,配合低功耗STM8L051单片机实现,这里主要对低功耗做个简单的介绍与总结;

void RTC_Config(void)
{
//CLK_LSEConfig(CLK_LSE_ON);
CLK_LSICmd(ENABLE);//使能LSI
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);//RTC时钟门控使能
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_64);//RTC时钟源LSI,1分频=38K  Tang=1;
while (CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == RESET);//等待LSI就绪

RTC_WakeUpCmd(DISABLE);

RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);//38K/16=2.375k=0.421ms  
RTC_ITConfig(RTC_IT_WUT, ENABLE);//开启中断                   ouyang=38000/64div=593;593/16div=37;   X/37=second(定时)
//RTC_SetWakeUpCounter(23750);//23750*0,421=10S左右
RTC_SetWakeUpCounter(22200);//370 = 10S   欧阳修改,最大修改为65530/37=1771S  即29.5分钟起来一次;22200=10分钟;
//ITC_SetSoftwarePriority(RTC_CSSLSE_IRQn, ITC_PriorityLevel_3);//优先级

enableInterrupts();
}

低功耗主要靠此RTC配置,目前配置是10分钟一次中断,那么,要更长时间,可以通过RTC中断:

#pragma vector=6
__interrupt void RTC_IRQHandler(void)
{
rtc_wake_flag++; 
RTC->ISR2 &=~RTC_ISR2_WUTF;
}

来计算,比如每10分钟进入此中断,当rtc_wake_flag>144时,即达到1440分钟,也就是定时24 hour啦;

点滴记录,勇敢成长......