您的位置:首页 > 财经 > 金融 > 关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

2024/10/6 5:54:31 来源:https://blog.csdn.net/wh_xia_jun/article/details/142151608  浏览:    关键词:关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

STM32CubeMX环境配置

1 ADC1配置

 

选中ADC1,然后勾选IN0,其余设置均默认不变(此为单次扫描,若是连续扫描,只需要将上图中的Continuous Conversion Mode由Disabled变为Enabled即可)。

2 RCC及时钟配置

 

选中RCC,然后在HSE一栏选择Crystal/Ceramic Resonator。

接着是时钟配置,和之前实验一样的配置方法,这里不再赘述。

3 SYS配置

 

SYS界面,在Debug里选择Serial Wire。(选择使用SWD协议下载和调试)

4 I2C配置

 

选择I2C1,然后选择I2C,其余配置默认不变。

5 芯片引脚图展示

 

配置完所有环境后,引脚图大致是图片所展示的。

Keil 环境配置

1 OLED配置

详细操作可以参考老师的这个博客

 

 

解压完老师的OLED_IIC压缩包,将OLED_Classic文件夹中的OLED.c放入Core文件夹下的Src中

 

 

将OLED_Classic文件夹中的OLED.h和OLED_Font.h放入Core文件夹下的Inc中

 

 

然后在Keil中按照图示操作(上面两张图片)添加OLED.c文件即可

2 代码修改

 

 

头文件添加#include "oled.h"。

HAL_StatusTypeDef HalState;  //HAL库函数返回状态
uint16_t Ret; //返回值
uint16_t ADValue; //AD转换值
float Voltage; //电压值
void SystemClock_Config(void);上方添加这段代码。
uint16_t StartAndGetOneResult(){HAL_ADC_Start(&hadc1);  //启动ADC转换HalState= HAL_ADC_PollForConversion(&hadc1, 10);//等待转换完成if(HalState == HAL_OK){Ret=HAL_ADC_GetValue(&hadc1);  //获取ADC转换结果} else{Ret=0;}//HAL_ADC_Stop(&hadc1);return  Ret;
}

void SystemClock_Config(void);下方添加这段代码。

 
OLED_Init();        //OLED初始化
/*OLED显示*/
OLED_ShowString(1,1,"ADValue:");
OLED_ShowString(2,1,"Voltage:0.00V");

main函数while循环上方添加这段代码。

 
ADValue= StartAndGetOneResult();  //启动ADC转换并获取结果OLED_ShowNum(1,9,ADValue,4); //显示AD转换值Voltage=(float) ADValue/ 4095 *3.3;  //计算电压值OLED_ShowNum(2,9,(uint32_t)Voltage,1); //显示电压值整数部分OLED_ShowNum(2,11,((uint16_t)(Voltage * 100)) % 100,2); //显示电压值小数部分HAL_Delay(100);
main函数while循环里面添加这段代码。

最终界面图如下面两张图所示

 

 

结果图展示

 

 

每一次随着电位器旋转,OLED屏幕上显示的电压值会发生变化。共有六种电压值情况。

(电位器有三个引脚,一个引脚接GND,一个引脚接3.3V,另外一个接ADC通道PA0,简单的排列A(3,3)即可得到电压值的种数)

以上展示的是其中的一种情况。

参考资料:

用HAL库改写江科大的stm32入门-7-1 ADC

用HAL库改写江科大的stm32入门例子4-1 OLED

​ 作者:计科224尹伦能

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com