最近做一个stm8l的项目,功耗始终下不来,求大神帮忙看看
主程序如下:
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "led.h"
#include "ADC.h"
#include "stm8l15x_pwr.h"
#include "stm8l15x_it.h"
void main(void)
{
LED_Init();
PWR_FastWakeUpCmd(ENABLE); //快速唤醒使能
GPIO_Init(LED6_B_PORT, LED6_B_PIN, GPIO_Mode_In_PU_IT);//初始化按键,GPB6带上拉带中断输入
EXTI_DeInit(); //恢复中断的所有设置
EXTI_SetPinSensitivity (EXTI_Pin_0,EXTI_Trigger_Rising);//外部中断0,上升沿触发,向量号8
GPIO_Init( GPIOA, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init( GPIOC, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init( GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);
GPIO_Init( GPIOD, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
enableInterrupts();//使能中断
PWR_UltraLowPowerCmd(ENABLE);//超低功耗
while(1)
{
halt();
}
}
中断处理程序如下:
INTERRUPT_HANDLER(EXTI0_IRQHandler,8)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
EXTI_ClearITPendingBit (EXTI_IT_Pin0);
disableInterrupts();//使能中断
ADC5_Init();
Value5=ADC5_Value();
ADC6_Init();
Value6=ADC6_Value();
Value0=((Value6*10/Value5)-10);
if(Value0<80)
{
LED_Off();
LED_Hot();
}
else if(Value0>80 && Value0<120)
{
LED_Off() ;
LED_Warm();
}
else if(Value0>120)
{
LED_Off() ;
LED_Cold();
}
} |