用EasyARM2131开发板进行AD采集. 发现程序总是停留在while ((AD0DR & 0x80000000) == 0);不往下走. 请问这是怎么回事啊.AD设置都是对照手册设置的.例程也是这样设置的. 是AD坏了?还是其他什么原因啊? 以前用210X就没出现这样的问题. 程序如下:
void AD_Int() { PINSEL1 |= 1 << 28; AD0CR = (1 << 3) | // SEL=8,选择通道3 ((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz (0 << 16) | // BURST=0,软件控制转换操作 (0 << 17) | // CLKS=0, 使用11clock转换 (1 << 21) | // PDN=1,正常工作模式 (0 << 22) | // TEST1:0=00,正常工作模式 (1 << 24) | // START=1,直接启动ADC转换 (0 << 27); // 直接启动ADC转换时,此位无效 } Get_AD() { AD0CR |= 1 << 24; while ((AD0DR & 0x80000000) == 0); ADC_Data = AD0DR;
} |