ADC和PWM是单片机的两个重要外设,在工控领域和智能硬件领域被广泛使用。 先说说ADC,L496最高支持12位ADC,精度中规中矩,可以满足大多数场合的需求,ADC1支持同时采集16个外部通道+1个温度传感器通道+1个电池通道+1个参考电压通道共计19个通道,其中16个外部通道既可以用作8个独立通道,又可以用作8组差分比较通道,在STM32L4家族中算是比较强大的一员了。这里我使用PA0(ADC1通道5)来进行单通道ADC采集。然后就可以开始配置别的外设?不。 没错!我又发现新的问题了!ADC1所用外设时钟,CubeMX默认是采用16MHz(最高32MHz)的PLLSAI1时钟,而我们之前是做过USB-OTG实验的,当时采用的时钟为48MHz的PLLSAI1时钟,这两个时钟是对立的,两者只能选择一个,而USB-OTG实验必须要把PLLSAI1时钟倍频到48M才能工作正常,而ADC1则无法使用如此高频率的时钟,因此,假如外设时钟统一都使用PLLSAI1时钟的话,USB-OTG实验和ADC1实验是互斥的,无法同时进行。这点,我在论坛之前只会用CubeMX一键生成代码的帖子中并没有找到,由此可以看出大家评测L496的态度问题!细节虽然有时候不能决定成败,但是可以体现一个人的精神。 继续进行PWM的探索。STM32的HAL库对于PWM的封装已经是达到傻瓜式的简单程度,用户使用库函数调用PWM完全不会感到有任何的阻滞,甚至感觉不出不同型号的STM32 MCU芯片对于PWM配置的区别。因此,我直接使用以前的例程,完全没有出现任何BUG,一次调通。不过这里稍微要注意一下的是,L496的PWM通道与F412,F429有很大不同,但是基本规律都是:常用的PWM通道都集中在PB口和PC口,常用的PWM定时器是定时器2~5,这几个普通定时器相比高级定时器定时器1和定时器8的好处是配置简单,功能明了,适合新手使用。这里我使用蓝色灯(PB7)作为PWMDAC指示灯,使用绿色灯(PC7)作为呼吸灯。 上传一份工程文件+头文件。 |
谢谢分享 |
楼主你好,我在时钟配置里选择了PLLSAI1R作为ADC的时钟源,但下载之后没反应,,时钟配置的代码是代码生成工具生成的 |