历史上的今天
返回首页

历史上的今天

今天是: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在停机之前设置位推挽输出低。


推荐阅读

史海拾趣

Cooper Industries公司的发展小趣事

在电工产品领域,Cooper Industries同样取得了显著的成就。2000年,公司收购了Eagle电气,并将其与已有的接线装置产品系列合并,组建成了一个名为“库柏电工”的新事业部。这一举措不仅丰富了公司的产品线,也使其在电工产品领域的技术实力得到了进一步提升。库柏电工提供了超过10000个高质量装置的产品组合,广泛应用于工业、商业和住宅领域,满足了不同客户的需求。同时,公司还不断投入研发,推出更加先进、高效的电工产品,为行业的发展做出了积极贡献。

Chemtronics公司的发展小趣事

为满足电子行业对无铅应用的需求,Chemtronics专门设计了完整的无铅产品线,并成为业内第一个向市场提供此类产品的公司。这一创新不仅满足了市场对环保和高效产品的需求,也进一步巩固了Chemtronics在电子行业的领先地位。

AINFO Inc公司的发展小趣事

为了进一步提升技术水平和市场竞争力,AINFO Inc公司积极寻求与国际知名企业的技术合作。通过与国外企业的合作,公司引进了先进的技术和管理经验,提升了自身的研发能力和管理水平。同时,公司也加快了国际化发展的步伐,拓展了海外市场,提升了品牌知名度。

Heatron LED Integration公司的发展小趣事

Heatron LED Integration自成立以来,便致力于LED照明技术的创新。公司拥有一支由光学、机电设计及热管理专家组成的研发团队,不断突破技术瓶颈。在早期,公司研发出了一款高性能的8英寸LED模块,该模块凭借其出色的亮度和能效比,迅速在市场上获得了认可。这一创新不仅提升了产品的市场竞争力,也为公司后续的技术积累和市场拓展奠定了坚实基础。

General Electric Company公司的发展小趣事
内部集成了频率补偿机制,确保在高频信号下电路的稳定性。
ABB公司的发展小趣事
具有较高的增益精度和线性度,能够准确放大输入信号。

问答坊 | AI 解惑

扫盲书籍下载:医疗仪器原理

医疗仪器原理  王成    上海交通大学出版社  2008-05-01 目录: 1 绪论 ----------------8   1.1 医疗仪器 ----------------8   1.2 医疗仪器的构成 ----------------10   1.3 ...…

查看全部问答>

printk()问题,急待解决!

   各位大侠:     我现在是交叉编译了一个驱动模块,现在已经能够成功的加载在开发板上,这个开发板是MIPS处理器,上面跑的是linux系统。但是我的程序里有printk()函数,按道 理说应该可以打印出信息在/var/log/messages里 ...…

查看全部问答>

谁能用比较通俗的语言告诉下驱动下的kobject和sys干什么用的?

谁能用比较通俗的语言告诉下驱动下的kobject和sys干什么用的?谢谢!…

查看全部问答>

有没人在调试S3C6400下的SPI通信,我的怎么怪怪的,设置成接收模式,还没接数据源,SPI中断会被不断地被触发,不知道为什么?干扰吗?!

有没人在调试S3C6400下的SPI通信,我的怎么怪怪的,设置成接收模式,还没接数据源,SPI中断会被不断地被触发(进了SPI中断,接到的数据个数一般为1个,数据不定,0X00和0XFF居多),不知道为什么?干扰吗?怎么查干扰因素?!…

查看全部问答>

51中,设置定时器,然后启动定时器的汇编语句怎么写?

51中,设置定时器,然后启动定时器的汇编语句怎么写? …

查看全部问答>

为什么用UART发送数据前要加延时?

我用UART做的一个小的发送数据的程序,数据发送采用的是中断的方式.采用485转232和上位机通信,用串口调试精灵观察接收到的数据.现在的问题是:如果在发送数据前不加延时接收到的数据就是错误的,可是查了很多单片机资料都没说要在发送数据前要加延时, ...…

查看全部问答>

显示控件的值改变来控制事件结构有什么方法可以做到

显示控件的值改变来控制事件结构有什么方法可以做到 通过计算可以使显示控件的值在True和fault之间变化,希望用这个值改变来控制事件结构,但事件结构好像只能用输入控件,也试过网上所说的值(信号)但是发现不管显示值 有否变化,那一个事件一 ...…

查看全部问答>

HelloM3应用笔记--TI M3 Tempest C1版本编程说明

  2010年5月份以后生产的Tempest系列C1版本的芯片,其前4K内部Flash里打了一个复位补丁,所以所有的用户程序的代码起始地址需要修改为0x1000,在用户程序的启动代码中,需要将FLASH Controll的中断向量指向0x881的地址(注意不要将该补丁擦除 ...…

查看全部问答>

版主求教virtualComPort

硬件连接电路如: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 ...…

查看全部问答>

stm32f测试小程序

希望对新手有用! 使用内部晶振,PC口进行闪灯! stm32f.JPG (51.25 KB) 下载次数:13 2010-9-28 16:41 …

查看全部问答>