• stm32CubeMx 实现单通道ADC DMA采集


     今天要做的是ADC单通道DMA采集实验

    MCU : STM32F429

    开发工具:STM32CubeMx 版本号 5.0.0

    实验目的:实现ADC1 13通道 DMA采集

    一 :简介

      首先,我们来看一下STM32F4XX参考手册里关于该芯片的ADC功能介绍

      

    二:STM32CubeMx 配置

    配置RCC 

     

     配置时钟,硬件使用了25MHz无源晶振

    配置ADC

    数据对齐方式 为 右对齐

    使能 连续转换模式,DMA连续请求

    设置采样次数 为 3个周期

     

    配置 DMA

    Mode设置为Circular模式,数据宽度设置为Half Word  2个字节

     配置Project Manager

    设置好之后,点击GENERATE CODE 生成代码

    定义变量

    __IO uint16_t ADC_ConvertedValue[20];
    __IO float ADC_Volt;

    启动DMA数据传输 

    HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_ConvertedValue[0], 20);

    读取ADC数据

    unsigned int i = 0, ADC_Value = 0;
    for(i = 0; i < 20; ++i)
    {
      ADC_Value += ADC_ConvertedValue[i];
    }
    ADC_Value = ADC_Value / 20;
    printf("ADC Value %d ",ADC_Value);
    printf("vol %f ", ADC_Value * 3.3 / 4096);

     三 :实验结果

     串口输出结果

    四: 实验中遇到的问题

      1 

     

    最后一个参数一开始的时候写1,程序就出现了阻塞的现象。我分析可能是因为DMA选择的是Circular模式,会一直产生中断,从而使得CPU都被中断抢占了,因此将数据传输长度改为了20,每次对20个数据进行求均值计算,然后测试没有问题。

      2  关于采样周期

         采样周期 是否是越大越精准呢?  我把采样周期改大了之后,再进行测试,实验有待验证

        

  • 相关阅读:
    md5盐加密
    springcloud alibaba文档
    http header, url参数转json
    Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000018DC4F2C520>: Failed to establish a new connection:
    Nacos配置(配置中心)
    java.lang.NoSuchFieldError: VERSION_2_3_0 报错解决方案
    Cannot resolve freemarker:freemarker:2.3.23
    springcloud nacos config 配置application.yml
    可选链操作符(?.)
    浏览器network
  • 原文地址:https://www.cnblogs.com/birdBull/p/10792423.html
Copyright © 2020-2023  润新知