我在每次上電后使用這個函數(shù)測量的第一個ADC值總是會在2900左右 不管測量源是多少
uint16_t abcBuff[40];
volatile uint8_t DMA_end = 0;
void Crank_Test()
{
? ? DMA_end = 0;
? ? ADC_AutoConverCycle(224);?
? ? ADC_ExtSingleChSampInit(SampleFreq_8, ADC_PGA_0);
? ? ADC_ChannelCfg(0);
? ? ADC_DMACfg(ENABLE, (uint16_t)(uint32_t)&abcBuff[0], (uint16_t)(uint32_t)&abcBuff[40], ADC_Mode_Single);
? ? PFIC_EnableIRQ(ADC_IRQn);
? ? ADC_StartDMA();
? ? while(!DMA_end);
? ? for(int i = 0; i < 40; i++)
? ? {
printf("abcBuff[%d]: %d\n", i, abcBuff[i]);?
? ? }
}
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void ADC_IRQHandler(void) //adc中斷服務(wù)程序
{
? ? if(ADC_GetDMAStatus())
? ? {
? ? ? ? ADC_StopDMA();
? ? ? ? R16_ADC_DMA_BEG = ((uint32_t)abcBuff) & 0xffff;
? ? ? ? ADC_ClearDMAFlag();
? ? ? ? DMA_end = 1;
? ? }
}