jiaxw 发表于 2022-4-10 21:52

stm32 ADC怎么彻底关闭

为了实现低功耗,cpu休眠的时候需要关闭ADC采样。但是我关闭adc以后,adc是不采样了,但是功耗并没有下降。求教有知道为什么的吗?代码如下,都是用的库函数,能关的都关了。adc和dma的时钟也是关闭的。

void g_adc_stop(void)
{
      HAL_ADC_Stop(&hadc1);
      HAL_ADC_Stop_DMA(&hadc1);
      HAL_ADC_DeInit(&hadc1);      
      HAL_DMA_DeInit(&hdma_adc1);
      ADC_Disable(&hadc1);
}

gongche 发表于 2022-4-10 21:55

你注意停止外设工作不能等同于关闭相关外设的时钟;

liliang9554 发表于 2022-4-10 21:59

比方 HAL_ADC_DeInit(&hadc1);只是让ADC回到复位状态,并未关闭其外设时钟;

huangchui 发表于 2022-4-10 22:06

休眠时要注意没有其它GPIO管脚有漏电流产生;

wyjie 发表于 2022-4-10 22:10

用到的GPIO,在休眠状态下要保证其电平是固定的,结合具体电路选择其电平【以不产生功耗为原则】;

chuxh 发表于 2022-4-10 22:14

不用的管脚可以配置为Analog模拟模式;

juventus9554 发表于 2022-4-10 22:17

有关闭外设时钟的函数,比方 __HAL_RCC_ADC1_CLK_DISABLE()

dingy 发表于 2022-4-10 22:20

ADC时钟怎么关闭?

heweibig 发表于 2022-4-10 22:22

也就是低功耗ADC不采集怎么处理?

zhenykun 发表于 2022-4-10 22:25

关时钟

chuxh 发表于 2022-4-10 22:28

引脚是如何配置的啊

liliang9554 发表于 2022-4-10 22:30

应该是没有关闭时钟

heweibig 发表于 2022-4-10 22:32

引脚以及相关时钟都要进行设置

jlyuan 发表于 2022-4-10 22:35

关于关于关闭ADC,有时简单关闭ADC时钟还可能不行。

jlyuan 发表于 2022-4-10 22:38

如果开启了特殊通道,得单独关闭。

stly 发表于 2022-4-10 22:40

引脚配置基本原则 是不产生额外漏电流。

pengf 发表于 2022-4-10 22:43

结合实际应用电路,该高就高,该低就低。

supernan 发表于 2022-4-10 22:46

不用的脚一般可以配置在analog状态。

jiaxw 发表于 2022-4-10 22:49


嗯,那我按大家的说法挨个排查一下,谢谢哈

sadicy 发表于 2022-4-11 14:11

别初始化不就行了
页: [1]
查看完整版本: stm32 ADC怎么彻底关闭