CH32V203F8P6 内存中的数据莫名其妙的被篡改的问题

如下图所示, 该问题也是不定时会发生的, 我在使用WCH-Link调试时遇到的:

image.png



如上代码所示, GlobalData是我自定义的结构体, 并且是全局变量, 上面刚用memset修改完GlobalData, 并初始化了两个字段, 

在下面printf处打印出来, 就已经不是上面修改过的值了, 不知在哪里被篡改了...

部分代码如下:

typedef struct __attribute__((aligned(4))) _GLOBAL_DATA_S {
    uint16_t        magic;
    uint16_t        version;
    uint32_t        flags;
    float           ADC1_sense_volt_fp;
    float           ADC2_sense_volt_fp;
    float           ADC1_vagc_volt_fp;
    uint16_t        ADC1_sense_volt;
    uint16_t        ADC2_sense_volt;
    uint16_t        ADC1_vagc_volt;
    uint16_t        ADC1_vntc_volt;
    uint16_t        ADC1_vtmp_volt;
    uint8_t         ADC2_PgaGain;
    int8_t          tia_temp;
    int8_t          mcu_temp;
    int8_t          tia_init_temp;
    int8_t          mcu_init_temp;
} GLOBAL_DATA_T, *PGLOBAL_DATA_T;


void Init_Periph(void)
{
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);

    RCC_APB1PeriphClockCmd(
            RCC_APB1Periph_USART2 |
            RCC_APB1Periph_TIM3
            , ENABLE);

    RCC_APB2PeriphClockCmd(
            RCC_APB2Periph_GPIOA |
            RCC_APB2Periph_GPIOB |
            RCC_APB2Periph_ADC1 |
            RCC_APB2Periph_ADC2 |
            RCC_APB2Periph_TIM1 |
            RCC_APB2Periph_AFIO
            , ENABLE);
}

int main(void)
{
    int i, sum;
    uint32_t u32;
    uint16_t u16buf[16];
    float favg;
    uint16_t avg;

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Init_Periph();
    Delay_Init();
    Init_GPIO();
    USART_Printf_Init(115200);

    memset(&GlobalData, 0, sizeof(GLOBAL_DATA_T));
    GlobalData.magic = 0x55AA;
    GlobalData.version = 1;

#if 0
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
#endif

    printf("SystemClk:%d\r\n", SystemCoreClock);

    Delay_Ms(1);

    //AGC_PWMOut_Init( 4095, 16-1, 3685 ); // ≈2940mv
    AGC_PWMOut_Init( 4095, 16-1, 3685 ); // ≈2954mv
    SetPowerControl(0);
    SetLedState(1);

    Delay_Ms(1);
    
    // ......
}



只有登录才能回复,可以选择微信账号登录