STM32
直播中

tr12345

9年用户 1033经验值
擅长:制造/封装
私信 关注
[问答]

STM32L151的ADC通道使用问题

ADC通道为什么测量不了电池的电量呢?怎样去解决呢?

回帖(1)

曹玥

2021-10-26 09:39:27
  最近在使用stm32l151开发一个项目,其中要用到ADC通道测量电池电量。我在网上参照别人stm32f系列的ADC通道使用代码,结果发现ADC通道实际并没有打开,用不了。使用
  ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS); 函数查询ADC状态,返回的结果是“RESET”,即ADC已经被使用了,所以不能再次被用。遇到这种外设不能启动的情况,肯定首先想到的就是时钟的问题,可实际我已经调用了
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); 开启了属于ADC1的时钟。查询其他步骤,也没有其他问题。
  这时候只好硬着头皮翻看stm32的芯片手册,看到ADC那一章。如下图:
  
  咦,不对呀,ADC时钟竟然是由HSI提供的,而不是APB2提供的时钟。赶紧看看是这一页是不是有错误,再看看stm32l151整个的时钟树:
  
  明明白白,ADC的时钟就是由HSI提供的,于是调用开启HSI时钟的函数
  RCC_HSICmd(ENABLE); ADC功能就可以正常使用了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分