回答

收藏

STM32L0 LL库下ADC使用DMA例程分享

STMCU STMCU 6422 人阅读 | 0 人回复 | 2018-12-11

最近一个项目需要低功耗,之前听说LL库效率高,于是打算将此次项目用LL库来开发,我想效率高了省CPU资源,应该也能降低功耗吧于是就这么用上了。不过在使用的过程中发现LL库资料好少,开发过程中很多问题都要一边啃代码一边对照DATASHEET。虽然进度慢了一点,不过感觉一边做项目一边学习点新知识也挺充实的。
     先说说在使用ADC过程中遇到的坑吧,根据我的经验用cube配置好的ADC初始代码就不用管了,需要使用ADC功能的时候只需要调用相应的使能函数将DMA相应的通道与外设使能位置位就可以工作起来了,我也这么做了,打印出来一看,2个通道都是0,尝试直接拉高,依然是0。单步调试对照寄存器,发现置位的位、清零的位都是能对上的,这是咋回事呢。实在想不通,难道我的板子坏了吗?还是用HAL再验证一下吧,一通配置,5分钟搞定,CUBE就是方便,依然是一样的操作,初始化代码不动,在外设初始化完成后调用使能函数,编译下载后发现不是0,拉高,4095,对了。看来硬件没坏,再来单步调试下,发现原来是CR寄存器的ADVREGEN位没有置位,此位置1后ADC电压调节器开启,ADCFGR2寄存器CKMODE设置不对,这个设置同步异步时钟之前用的型号还没注意有这个寄存器,先在LL库改了再编译,终于输出了2个通道正确的ADC值。这里分享一下调试完成的DEMO代码。
@7CZ~7R5{LD@Y%MT2YVZ184.png (71.44 KB, 下载次数: 0)




.....................


点击跳转下载代码>>



关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条