关于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尹伦能

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值