查看: 5475|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2018-11-26 15:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2018-12-11 15:57:19 | 显示全部楼层 |阅读模式
    分享到:
    最近一个项目需要低功耗,之前听说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)




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


    点击跳转下载代码>>



    回复

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 04:25 , Processed in 0.118385 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.