最近在调STM8S003芯片的时候,进到halt模式,待机电流居然有2.3mA,完全不符合逻辑,弄了几天也没有啥进展,不知哪位大神来帮我解答一下。我的时钟配置是这样的:
void init_sys_clk(void)
{
bool ButtonPressed = FALSE;
ErrorStatus clk_return_status;
CLK_DeInit();
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV2);
nextsss:
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, ENABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
;
else
goto nextsss;
}
没有使用到的管脚全部配置为浮动输入无中断:
void init_sys_port(void)
{
//PART A
GPIO_DeInit(GPIOA);
GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOA, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
//PART B
GPIO_DeInit(GPIOB);
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //LED
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);
//PART C
GPIO_DeInit(GPIOC);
GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST); //MOTO+
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_IT); //Key
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_IT); //GPIO GPIO_MODE_IN_PU_IT
GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
//PART D
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST); //MOTO-
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //csc GPIO_MODE_OUT_OD_HIZ_FAST
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST); //CLK
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); //SDIO
GPIO_Init(GPIOD, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
GPIO_ExternalPullUpConfig(GPIOB, GPIO_PIN_5, ENABLE);
GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_7, ENABLE);
GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_4, ENABLE);
GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_6, ENABLE);
GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_6, ENABLE);
GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_5, ENABLE);
GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_3, ENABLE);
GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_2, ENABLE);
GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_1, ENABLE);
GPIO_WriteHigh(GPIOC, GPIO_PIN_7); //moto+
GPIO_WriteHigh(GPIOD, GPIO_PIN_6); //moto-
GPIO_WriteHigh(GPIOC, GPIO_PIN_6); //key
GPIO_WriteHigh(GPIOB, GPIO_PIN_5); //led
//RF IO 初始化
GPIO_WriteHigh(GPIOC, GPIO_PIN_4); //GPIO1
GPIO_WriteHigh(GPIOD, GPIO_PIN_2); //SDIO
GPIO_WriteHigh(GPIOD, GPIO_PIN_3); //SCLK
GPIO_WriteHigh(GPIOD, GPIO_PIN_5); //SCS
}
实在想不出该怎么做了 |
|