STM32L151的时钟

  最近在使用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功能就可以正常使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值