低功耗版STM8L051的一个诡异配置

为了做个低功耗项目,从最便宜的STM8S003切换到低功耗系列里较便宜的STM8L051;

在STM8S003上调通了HALT休眠处理后,最低待机电流是67uA;用了STM8L051后,实测能到2uA;


但是后来遇到个诡异的问题,TIMER4莫名其妙不动作,好像不计时了。开关中断,改初始化配置,都没用,很奇怪。

最后发现,是init'初始化的时候,没有给TIMER4配置CLK时钟源,导致的,

原来的代码并没有写TIM4,

        CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_4);
        CLK_SYSCLKSourceSwitchCmd(ENABLE);
        CLK_HSEConfig(CLK_HSE_ON);
        //-----------
        CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_TIM3,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_I2C1,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_USART1,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_LCD,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_BOOTROM,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_AES,DISABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_SPI2,DISABLE);
        //-----------

后来加上了TIM4的ENABLE就好了。

TIM4_DeInit();//复位定时器4寄存器
        CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,ENABLE);
        TIM4_TimeBaseInit(TIM4_Prescaler_64,124);
        //TIM4_PrescalerConfig(TIM4_Prescaler_64, TIM4_PSCReloadMode_Immediate);

可见如果你用库函数配置了其他外设的CLK时钟源,而没有配置TIM4的话,系统默认是不会打开TIM4的CLK时钟分配的!!!!

也就是说要用一个外设,得先开启一个对应的CLK分配才行,这是跟STM8S很大的不同,,,,,,,,,2333333


猜你喜欢

转载自blog.csdn.net/dexinzheng/article/details/52768187