你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zhengxk-344971 提问时间:2019-12-24 10:42 /
最近项目中用到STM32L051,低功耗设计。程序中试验,在ADC不初始化的时候,STOP模式下一秒唤醒一次,系统功耗为5uA,当采用Cube生成的初始化代码MX_ADC_Init(),并不启动转换,初始化后系统功耗为19uA。当采用函数HAL_ADC_DeInit(),关闭ADC后,系统功耗为17uA,为什么不能降为5uA呢?
收藏 评论16 发布时间:2019-12-24 10:42

举报

16个回答
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功耗下不来,其他的部分配置完全一样。
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版