|
前言:一位朋友帮忙写的一个应用笔记本,特意分享给各位。 关于STM32F0和F1外设ADC配置的差异分析 迷惘性思考1. STM32F0的ADC怎么就无法配置为12位 问题提出: 在设计一个以STM32F042K6T6为核心的监控板的过程中,用到了常规外设ADC。当然,ADC外设非常常规,使用应该不会有很大问题。于是,迅速码出以下代码。
那么接着我们就只能去查看寄存器的状态了。
这里有一点关于C语言变量初始化问题。外部全局的和静态变量,编译器基本都会(但也有时候不会)把变量初始化为0,其余内部变量都不进行初始化,其值是随机的。因此,保险起见,不论外部全局、静态还是内部的变量都要初始化。但是这里回头想想,某某原子的ADC初始化例程也是这么做的啊,如下图。
STM32F0的ADC多路单通道采集数据为什么不变 既然完成了ADC配置初始化,下一步就到了ADC的通道数据采集了。先贴出某某原子的例程。再看自己码出的代码。
因为需要多通道采集,只需要多调用上述函数即可,如下图。
CHSELR=0x00000011;因为是独立采样模式,系统对高位有效通道进行采样,对应结果为第2通道的值。第二次调用get_adc_val()的时候,ADC_Channel=0x0000100,CHSELR=0x00000111,同样,因为是独立采样模式,对应结果为第3通道的值。再次调用Get_adc_val()时,我们预期结果希望是第一通道,但是实际上此时的CHSELR值已经是0x00000111了,再和0x00000001位或,值还是0x00000111,所以实际结果是最高位,即第3通道的值。最终针对此问题,最终采集代码如下。
|
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
小白也能明白的STM32的低功耗与唤醒机制
2025软件工具兔哥知道
STM32系统中2种数据掉电保护的方法
微信公众号
手机版