谢谢你的及时回复。 
 
我的代码跟你说的操作差不多,但不知道为什么切换就不成功呢。请问这跟用实时操作系统有没有关系呢?谢谢! 
 
下面贴出我这边的代码,烦请你帮忙看一下,谢谢! 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void ADCDeinit(void) { 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON) & ~ADC_CON_ADC_EN);         
        outp32(REG_APBCLK, inp32(REG_APBCLK) & (~ADC_CKE)); 
        outp32(REG_CLKDIV3, inp32(REG_CLKDIV3) & (~((0x03<<19) | (0x03<<16) | (0x5F<<24))));//UPLL 192/4/2 = 24MHz // ch_20220305 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) | ADCRST); 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) & ~ADCRST);         
} 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void ADCInit4Cal(void) { 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON) & (~ADC_CON_ADC_EN)); // ch_20220305 
        outp32(REG_APBCLK, inp32(REG_APBCLK) & (~ADC_CKE)); // ch_20220305 
        outp32(REG_APBCLK, inp32(REG_APBCLK) | ADC_CKE); 
        outp32(REG_CLKDIV3, inp32(REG_CLKDIV3) & (~((0x03<<19) | (0x03<<16) | (0x01<<24))));//UPLL 192/4/2 = 24MHz // ch_20220305         
        outp32(REG_CLKDIV3, inp32(REG_CLKDIV3) | (0x03<<19) | (0x03<<16) | (0x5F<<24));//UPLL 192/4/2 = 24MHz // ch_20220228 : changed to 47 from 1. 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) | ADCRST); 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) & ~ADCRST); 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON)        & (~( 0x03 << 14)));//normal mode 
        //outp32(REG_ADC_DLY, 0x150); 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON) | ADC_CON_ADC_EN); 
 
} 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void ADCInit4Print(void) { 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON) & (~ADC_CON_ADC_EN)); // ch_20220305 
        outp32(REG_APBCLK, inp32(REG_APBCLK) & (~ADC_CKE)); // ch_20220305 
        outp32(REG_APBCLK, inp32(REG_APBCLK) | ADC_CKE); 
        outp32(REG_CLKDIV3, inp32(REG_CLKDIV3) & (~((0x03<<19) | (0x03<<16) | (0x5F<<24))));//UPLL 192/4/2 = 24MHz // ch_20220305         
        outp32(REG_CLKDIV3, inp32(REG_CLKDIV3) | (0x03<<19) | (0x03<<16) | (0x02<<24));//UPLL 192/4/2 = 24MHz 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) | ADCRST); 
        outp32(REG_APBIPRST, inp32(REG_APBIPRST) & ~ADCRST); 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON)        & (~( 0x03 << 14)));//normal mode 
        //outp32(REG_ADC_DLY, 0x150); 
        outp32(REG_ADC_CON, inp32(REG_ADC_CON) | ADC_CON_ADC_EN); 
 
} 
 
切换前,我都会调用ADCDeinit()去关掉ADC模块。 
 
 |