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

Creating an Array and filling it with ADC values - STM32L476G

提问人:Kevin 提问时间:11/1/2023 更新时间:11/8/2023 访问量:18

问:

我想知道如何在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

任何帮助将不胜感激。

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

数组 全局变量 ADC STM32Cubeide

评论


答:

0赞 mohsen karimi 11/8/2023 #1

你的问题有点不清楚。 如果您已经可以读取 ADC 值,那么唯一要做的就是制作一个简单的 C 数组,然后以您想要的间隔定期读取并存储 ADC 值。 为此,您可以使用带有循环的阻塞方法,如果您唯一想做的就是像这样读取 ADC:int value_ADC[20];

    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 值,并重置计数器。

评论

0赞 Kevin 11/8/2023
非常感谢您的帮助,这确实简化了我现在所拥有的
0赞 mohsen karimi 11/8/2023
@kevin不客气,请考虑投票并接受作为有用的答案(勾号),如果它有帮助。