zhengxk-344971 发表于 2019-12-24 10:42:36

STM32L051单片机ADC如何彻底关闭?

最近项目中用到STM32L051,低功耗设计。程序中试验,在ADC不初始化的时候,STOP模式下一秒唤醒一次,系统功耗为5uA,当采用Cube生成的初始化代码MX_ADC_Init(),并不启动转换,初始化后系统功耗为19uA。当采用函数HAL_ADC_DeInit(),关闭ADC后,系统功耗为17uA,为什么不能降为5uA呢?

mylovemcu 发表于 2019-12-24 11:16:31

要关闭ADC的时钟时钟才是增加功耗的罪魁祸首

zhengxk-344971 发表于 2019-12-24 11:51:18

mylovemcu 发表于 2019-12-24 11:16
要关闭ADC的时钟时钟才是增加功耗的罪魁祸首

HAL_ADC_DeInit调用的HAL_ADC_MspDeInit中的 __HAL_RCC_ADC1_CLK_DISABLE()应该已经关了时钟了吧

ljtzsd 发表于 2019-12-24 12:55:30

HAL_ADC_Stop(&hadc);加上这句话试一试
HAL_ADC_DeInit()这句话可以不用加

zhengxk-344971 发表于 2019-12-24 14:04:00

ljtzsd 发表于 2019-12-24 12:55
HAL_ADC_Stop(&hadc);加上这句话试一试
HAL_ADC_DeInit()这句话可以不用加

一样效果,没有用。

zhengxk-344971 发表于 2019-12-24 14:05:23

mylovemcu 发表于 2019-12-24 11:16
要关闭ADC的时钟时钟才是增加功耗的罪魁祸首

要如何才能真正关闭ADC时钟呢?

mylovemcu 发表于 2019-12-24 14:29:23

zhengxk-344971 发表于 2019-12-24 14:05
要如何才能真正关闭ADC时钟呢?

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,DISABLE);

zhengxk-344971 发表于 2019-12-24 14:33:50

mylovemcu 发表于 2019-12-24 14:29
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,DISABLE);

CLEAR_BIT(RCC->APB2ENR,(RCC_APB2ENR_ADC1EN))
在HAL里面应该就是这句吧,这个在程序中已经有了,执行过了,还是之前的效果。

mylovemcu 发表于 2019-12-24 15:04:21

zhengxk-344971 发表于 2019-12-24 14:33
CLEAR_BIT(RCC->APB2ENR,(RCC_APB2ENR_ADC1EN))
在HAL里面应该就是这句吧,这个在程序中已经有了,执行 ...

那就是已经关闭了那就在看看口线配置吧不用的口线都配置成输出低电平

zhengxk-344971 发表于 2019-12-24 16:52:59

mylovemcu 发表于 2019-12-24 15:04
那就是已经关闭了那就在看看口线配置吧不用的口线都配置成输出低电平 ...

各种口都配置好了,现在的问题就是开启AD后关闭AD功耗下不来,其他的部分配置完全一样。
页: [1] 2
查看完整版本: STM32L051单片机ADC如何彻底关闭?