历史上的今天
今天是:2024年11月16日(星期六)
2019年11月16日 | STM8l 进入低功耗之前配置
2019-11-16 来源:eefocus
在做stm8L的小一个项目,由电池供电,当按键长按关机,系统进入停机模式,虽然系统运行的时候有十几毫安的电流消耗(还没使用RTC定时唤醒),但是在停机模式下电流消耗竟然还有1.33ma的电流,花了半天的时间找资料,看文档,在网上看到不少大牛能做到0.4ua,自己无论如何设置IO,外设都无补于事,停机模式下电流最低还有1ma。
最后只能将开机初始化的外设函数一个一个注释掉,包括ADC,DMA,beep,以及TIM4,最后发现只注释掉ADC的初始化函数,再进入停机模式,果然电流接近0,5ua,也就是说可能ADC模块在进入停机模式前的关闭设置不正确,之前的是这样的:
void PerCLK_OFF()
{
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);
ADC_DeInit(ADC1);
CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE);
RTC_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_DMA1,DISABLE);
DMA_DeInit(DMA1_Channel0);
CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE);
BEEP_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,DISABLE);
TIM4_DeInit();
}
修改之后是这样的:
void PerCLK_OFF()
{
ADC_DeInit(ADC1);
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);
RTC_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE);
DMA_DeInit(DMA1_Channel0);
CLK_PeripheralClockConfig(CLK_Peripheral_DMA1,DISABLE);
BEEP_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE);
TIM4_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,DISABLE);
}
也就是将外设寄存器恢复初始值之前,不能关闭外设时钟,等到外设寄存器初始化之后,关闭外设时钟,模块才能关闭。原因这里先不做深究,先把项目完成再说。另外IO在停机之前设置位推挽输出低。
上一篇:STM8L051低功耗实现
下一篇:单个按键,实现单击+双击+长按
史海拾趣
|
医疗仪器原理 王成 上海交通大学出版社 2008-05-01 目录: 1 绪论 ----------------8 1.1 医疗仪器 ----------------8 1.2 医疗仪器的构成 ----------------10 1.3 ...… 查看全部问答> |
|
各位大侠: 我现在是交叉编译了一个驱动模块,现在已经能够成功的加载在开发板上,这个开发板是MIPS处理器,上面跑的是linux系统。但是我的程序里有printk()函数,按道 理说应该可以打印出信息在/var/log/messages里 ...… 查看全部问答> |
|
有没人在调试S3C6400下的SPI通信,我的怎么怪怪的,设置成接收模式,还没接数据源,SPI中断会被不断地被触发,不知道为什么?干扰吗?! 有没人在调试S3C6400下的SPI通信,我的怎么怪怪的,设置成接收模式,还没接数据源,SPI中断会被不断地被触发(进了SPI中断,接到的数据个数一般为1个,数据不定,0X00和0XFF居多),不知道为什么?干扰吗?怎么查干扰因素?!… 查看全部问答> |
|
我用UART做的一个小的发送数据的程序,数据发送采用的是中断的方式.采用485转232和上位机通信,用串口调试精灵观察接收到的数据.现在的问题是:如果在发送数据前不加延时接收到的数据就是错误的,可是查了很多单片机资料都没说要在发送数据前要加延时, ...… 查看全部问答> |
|
显示控件的值改变来控制事件结构有什么方法可以做到 通过计算可以使显示控件的值在True和fault之间变化,希望用这个值改变来控制事件结构,但事件结构好像只能用输入控件,也试过网上所说的值(信号)但是发现不管显示值 有否变化,那一个事件一 ...… 查看全部问答> |
|
HelloM3应用笔记--TI M3 Tempest C1版本编程说明 2010年5月份以后生产的Tempest系列C1版本的芯片,其前4K内部Flash里打了一个复位补丁,所以所有的用户程序的代码起始地址需要修改为0x1000,在用户程序的启动代码中,需要将FLASH Controll的中断向量指向0x881的地址(注意不要将该补丁擦除 ...… 查看全部问答> |
|
硬件连接电路如:USB电路.jpg和cpu.jpg所示,电源4脚USB_HOST_DEC接AD,不过现在不用。CPU为STM32F103VCT6,采用外部晶振12M,固件库采用STM32_USB-FS-Device_Lib_V3.2.1中的virtual_Com_port。 按照USB时钟要求,已经把PLLCLK配置为72M,USB ...… 查看全部问答> |




