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

发布者:Heavenly999最新更新时间:2019-12-11 来源: eefocus关键字:低功耗版  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很大的不同

关键字:低功耗版  STM8L051  诡异配置 引用地址:低功耗版STM8L051的一个诡异配置

上一篇:STM8L学习笔记-GPIO端口操作(一)
下一篇:STM8L051F3_03_CLK应用

推荐阅读最新更新时间:2024-11-09 20:42

stm8L051使用库建工程
先前直接寄存器开发,不过挺麻烦的,寄存器开发stm8s103直接对着英文技术手册写代码,现在换到了stm8L的又要回头看英文文档,开发效率个人感觉对于我这个新手来说还是很低的。现在在社区下载了一份固件,看看能不能建立一个用库的工程吧。(先前简单看过别人建工程的过程,由于对IAR不熟悉,不成功,现在也就是刚刚弄到没任何错误。) 1 先下载一份工程固件stsw-stm8016,固件迟些发送到资源上面,也可以到stm32/stm8社区下载。 2 建立一个iar的工程 这里建立的工程如下(我已经弄好的): 备注:app文件放我们自己编写的BSP驱动,lib放固件,还有三个文件 这三个文件直接放在工程里面。 弄好了
[单片机]
<font color='red'>stm8L051</font>使用库建工程
stm8l051 halt之后外部中断唤醒问题
最近用到stm8l051 halt,在halt之后开启了外部中断,有时灵,有时不灵,设置下降沿触发,但是按键(低有效)放开了才会从HALT退出,最后发现在进去外部中断的时候一直在外部中断里面不退出。 在外部中断程序里面把端口的外部中断和端口使能的外部中断功能关闭,问题解决,可以在下降沿从halt退出。 1、开启halt,其他代码省略,只贴halt部分: /* 禁止TIM3 */ TIM3- SR1 = (uint8_t)(~(uint8_t)TIM3_IT_Update); CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE); TIM3_IT
[单片机]
stm8L051低功耗采集电池电量ADC例程
自己记录一下,以防以后用 uint ADC_ReadValue(uchar channel) { uchar i; static uint ADC_Buf ; uint vrefint; ulong adcValue; CLK_PCKENR2 = CLK_PCKENR2 | 0X01; //使能外设ADC的时钟,之后对ADC的寄存器操作有效 ADC1_CR1 = 0x01; //开启AD模块电源,使用Sing mode; ADC1_CR2 = 0X02; //使用MCU系统时钟频率作ADC的时钟; ADC1_TRIGR1 |= 0x10; //使能内部参考电压 ADC1_SQR
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved