打印
[STM8]

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

[复制链接]
602|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
说书先生|  楼主 | 2016-11-27 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了做个低功耗项目,从最便宜的STM8S003切换到低功耗系列里较便宜的STM8L051;
在STM8S003上调通了HALT休眠处理后,最低待机电流是67uA;用了STM8L051后,实测能到2uA;

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





最后发现,是init'初始化的时候,没有给TIMER4配置CLK时钟源,导致的,
原来的代码并没有写TIM4,

[cpp] view plain copy


  • 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就好了。

[cpp] view plain copy


  • 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

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

191

帖子

0

粉丝