PFIC_EnableIRQ(ADC_IRQn)中断跑飞

下面代码是从参考代码直接复制过来的,只是把通道0改为通道3,增益改了一下,但是执行到

PFIC_EnableIRQ(ADC_IRQn)语句的时候,后面的log就打印不出来了,哪里出错了呢,采用的571k芯片


void Peripheral_Init()

{

    DMA_end=1;

    RoughCalib_Value=0;// = ADC_DataCalib_Rough();

    GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_Floating);

    ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_1_2);

    ADC_ChannelCfg(3);

    ADC_AutoConverCycle(192); //采样周期为 (256-192)*16个系统时钟


    ADC_DMACfg(ENABLE, (uint16_t)(uint32_t)adcBuff, (uint16_t)(uint32_t)(&adcBuff[40]), ADC_Mode_Single);

    PRINT("ADCINIT0\n");

    PFIC_EnableIRQ(ADC_IRQn);

    PRINT("ADCINIT1\n");

    ADC_StartDMA();

}


中断处理代码也是直接复制过来的

__attribute__((interrupt("WCH-Interrupt-fast")))

__attribute__((section(".highcode")))

void ADC_IRQHandler(void)

{

    if(ADC_GetDMAStatus())

    {

        ADC_ClearDMAFlag();

        ADC_StopDMA();

        R16_ADC_DMA_BEG = (uint16_t)(uint32_t)&adcBuff[0];

        DMA_end = 1;

    }


}



手册ADC章节可以参考一下,如有需要可使用573的芯片。

image.png


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