在线时间0 小时
UID416669
ST金币0
蝴蝶豆0
注册时间2013-2-15
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
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);
}
|
|