STM8L151F3,仅在PD0接了一只LED经电阻至GND,以及32.768K晶振在PA2、PA3,其余引脚全部空着的。 使用RTC功能,但发现进入halt后的电流仍然很大,测量有50uA,远超过官网介绍的1uA内的值。 以下是程序代码,求指点电流过大的原因和处理方法: void main(void) { /* Init I/O ports */ /* Port B in output push-pull 0 */ GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); /* Port C in output push-pull 0 except Button pins */ GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); /* LED init: GPIO set in output */ GPIO_Init(LED_GREEN_PORT,LED_GREEN_PIN,GPIO_Mode_Out_PP_High_Slow); Delay(0x1FFF); GPIO_LOW(LED_GREEN_PORT,LED_GREEN_PIN); // Select LSE (32.768 KHz) as RTC clock source CLK_LSEConfig(CLK_LSE_ON); while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET); CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_2); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); RTC_ITConfig(RTC_IT_WUT, ENABLE); while (1) { /* RTC will wake-up from halt every 5second */ RTC_SetWakeUpCounter(1); RTC_WakeUpCmd(ENABLE); /* Enter Wait for interrupt mode*/ halt(); //以下LED闪烁,测量电流时需要屏蔽掉 // GPIO_TOGGLE(LED_GREEN_PORT,LED_GREEN_PIN); RTC_WakeUpCmd(DISABLE); } } //RTC的中断处理函数 INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler, 4) { /* Clear Interrupt pending bit */ RTC_ClearITPendingBit(RTC_IT_WUT); } |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:STM8L151F3采用LSE,RTC方式进入halt后的低功耗问题?