AD转换代码读不到数据,各位帮帮忙~在线等
下面是我从书上改的AD转换代码,是为了将电池的看、状态反映出来。用P0.28和通道1进行转换的。但是读出来的数据却是0,请大虾们卡、你看错在哪了。谢谢了。 谢谢各位帮助了。
PINSEL0 =0x00000005;
PINSEL1 =1<<24;//
AD0CR = (1<<1)|((Fpclk/1000000-1)<<8)|(0<<16)|(0<<17)|(1<<21)|(0<<22)|(1<<24)|(0<<27);
Delay_NS(10);
ADC_Data =AD0DR;
AD0CR |=1<<24;
while((AD0DR&0x80000000)==0);
AD0CR |=1<<24;
while((AD0DR&0x80000000)==0);//这条语句执行后ADC_Data = 0x81000000
ADC_Data =AD0DR;
ADC_Data =(ADC_Data>>6)&0x3ff;但是经过这里转换后变为0了。这是为什么?
return ADC_Data;
[解决办法]
ADC_Data = 0x81000000?
左移6位?
与0x3ff?
运算后肯定是0啊。你是不是要左移24位?
[解决办法]
你在重新进行AD转换时也许应该先停一下吧
AD0CR &= 0xf8ffffff;
另外你的ADC的引脚是不是就是0呢
又或者你的ADC时钟打开了么
ADC_Data = 0x81000000
ADC_Data =(ADC_Data>>6)&0x3ff;
就是0啊,因为0x81000000右移6位是0x02400000, 在与0x3fff与当然是0了