我用STM8单片机需要ADC,用的是通道1(AN1/PB1),当我开始ADC转换时,PB0就不能置0了,这是什么情况?
ADC代码如下:
//ADC初始化
void ADC_Init(void)
{
ADC_CR2 = 0x00; //ADC结果数据数据排列,右对齐
ADC_CR1 = 0x00; //ADC时钟=主时钟/2
//ADC转换模式:单次
//禁止ADC转换
ADC_CSR |= 0x01; //选择通道1
ADC_TDRL |= 0x01;//禁止施密特触发
}
//ADC值读取
unsigned int ADC_Read(void)
{
unsigned int i;
unsigned int data;
unsigned char DATAH=0;
unsigned char DATAL=0;
ADC_CR1 |= 0x01;//CR1寄存器的最低位置1,使能ADC转换
for(i=0;i<100;i++);//延时一段时间,至少7us,保证ADC模块上电完成
ADC_CR1 = ADC_CR1|0x01;//再次将CR1寄存器的最低位置1
//使能ADC转换
while((ADC_CSR&0x80)==0);//等待ADC结束
DATAH = ADC_DRH;//读出ADC结果的高8位
DATAL = ADC_DRL;//读出低8位
data = (((unsigned int)DATAH) << 2) + DATAL;
return data ;
}
|