来源:公众号【鱼鹰谈单片机】,作者:鱼鹰Osprey,ID :emOsprey
ADC采样应该是项目中最常用的外设了,比如采个电池电压,芯片工作电压、温度等,都要使用ADC外设,但是ADC看着简单,使用时却困难多多。
比如adc时钟,各种规则、注入通道,内部、外部通道,转换顺序,触发方式,中断、dma等都要了解,否则你没法正确采样,涉及到的寄存器也很多,稍微不慎,就采样失败。
我只是想采个样而已,咋这么难呢?
确实现在的网上资料很丰富,但是经验不多的初级程序员还是会一头雾水,而且借鉴(抄)来的代码稍微增加个通道可能就无法正确采集数据,也不知该怎么排查问题,麻烦的很。
那有什么办法呢?
有,stm32CubeMx算是不错的工具了,但是更新频繁、bug也多、难解决,增加用户代码还要怕它意外删除。
那还要其他办法吗?
当然有。
就是自己写一个框架,可以按照需求简单修修改改就能采个样,比如选择通道、采样引脚、增、删通道、是否使用dma等等,简简单单就可以。但写这样一个框架费时费力、麻烦也多,bug也多,没有丰富的开发经验,根本搞不定,那咋办,还有其它办法吗?还真有,鱼鹰历时两年设计了一款单片机驱动框架,专为项目而生,只需要按照需求修改就可采样,每个驱动都有单独的测试用例,清晰明了。就比如adc,按照如下格式修改,即可完成采样,多个通道采样同样高效(特殊复杂需求需要自行修改源码,这种需求一般项目也用不上,先按简单的来)
若有引脚使用冲突,会自动报错。
测试结果:
另外还有专门的培训视频讲解正在进行中,非常适合有一定经验的工程师品鉴。
刚加入学员评价因为鱼鹰也要不时的玩点小项目,所以这个工程将持续维护(暂不开源),不断增加新功能,若有bug,也可及时提出由鱼鹰解决。
目前工程也有很多常用外设,如串口、日志打印、adc、oled、eeprom、spi-flash、can、usb等,都是为了方便修改而设计,非常适合实现自己的简单项目。
还等什么,感兴趣的话,就来找鱼鹰吧。
个人微信「EmbeddedOsprey」