创建数组并用 ADC 值填充它 - STM32L476G

问题描述 投票:0回答:1

我想知道如何在STM32cubeIDE上创建数组。我喜欢用来自独立 LDR 的值填充这个数组。

以下是 ADC 的设置代码:

/*User Begin PV*/
uint16_t value_DAC = 0;uint16_t value_ADC =0;uint32_t state_DAC = 0;
/*User Begin 2*/
HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED); // Calibrate ADC
HAL_ADC_Start_DMA(&hadc1, (uint32_t *) &value_ADC, 1); // Start ADC with DMA
HAL_DAC_Start(&hdac1, DAC_CHANNEL_2); // Start the DAC

任何帮助将不胜感激。

我还没有尝试过任何东西,因为我真的不知道从哪里开始。

arrays global-variables adc stm32cubeide
1个回答
0
投票

你的问题有点不清楚。 如果您已经可以读取 adc 值,那么唯一要做的就是制作一个简单的 c 数组,如

int value_ADC[20];
,然后以您想要的间隔定期读取并存储 adc 值。 为此,如果您只想像这样读取 adc,则可以使用带有循环的阻塞方法:

    while (1)
    {
        //shifting each array element to right by one
        //so we can save the new value on index 0
        for (int i = 20 - 1; i > 0; i--) {
            value_ADC[i] = value_ADC[i - 1];
        }

        //read adc value and save it on index 0 of array
        HAL_ADC_Start(&hadc1);
        HAL_ADC_PollForConversion(&hadc1, 1);
        value_ADC[0] = HAL_ADC_GetValue(&hadc1);

        //whatever you wanna do with adc values

        HAL_Delay(10);//change to desired interval
    }

或者如果您有并行任务,则使用“计时器中断”,您可以通过搜索该术语了解更多信息。如果定时器的速度太高,您可以使用计数器每 100 个中断读取 adc 值,并重置计数器。

© www.soinside.com 2019 - 2024. All rights reserved.