2 переменные в одном адресе Си11 ARM STM32?

Заметил как мой enum сходит с ума без вмешательства. Оказалось, что счетчик и enum расположены в одном адресе. ключевое слово union я не использовал.

введите сюда описание изображения

main.h

    #include "ADC_single.h"
enum {
    RESTART = 0, // Состояние перезапуска после выключения/первый старт программы
    STABLE_WORK = 1, // Стабильная работа
    FLOATING_WORK = 2, // Работа с изменением напряжения
    ALARM = 3, // BRKIN
    BTN_OFF = 4 // Кнопка выключения
} gadgetState;

ADC_single.c

static uint16_t ADC_set[ADC_VALUES_SET_MAX] = { 0 }; // set (множество) - неупорядоченная структура данных
static uint8_t indexCounter = 0; // Счетчик для ADC_set
static bool firstActivation = true; // Отслеживание первого включения при старте программы до момента полного заполнения ADC_set

void UpdateAverageSet_ADC(void) {   
    ADC_set[indexCounter] = ADC_lastX10;
    
    if (indexCounter < ADC_VALUES_SET_MAX - 1) {
        indexCounter++;
    } else {
        indexCounter = 0;
        
        if (firstActivation == true) {
            firstActivation = false;
        }
    }
}

void CalculateAverage_ADC(void) {
    // Защита от перевысчета пустых занчений при первом старте программы
    uint8_t setRange = 0;
    if (firstActivation == false) { 
        setRange = ADC_VALUES_SET_MAX;
    } else {
        setRange = indexCounter;
    }
    
    uint32_t ADC_sum = 0;
    for (uint8_t i = 0; i < setRange; i++) {
        ADC_sum += ADC_set[i];
    }
    
    ADC_averageX10 = ADC_sum / setRange;
}

Ответы (0 шт):