为了做个低功耗项目,从最便宜的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很大的不同
上一篇:STM8L学习笔记-GPIO端口操作(一)
下一篇:STM8L051F3_03_CLK应用
推荐阅读最新更新时间:2024-11-09 20:42