STM8S AD转换(二)

2014-11-23 21:25:52 · 作者: · 浏览: 18
ight alignment */ { /* Read LSB first */ templ = ADC1->DRL; /* Then read MSB */ temph = ADC1->DRH; temph = (u16)(templ | (u16)(temph << (u8)8)); } else /* Left alignment */ { /* Read MSB firts*/ temph = ADC1->DRH; /* Then read LSB */ templ = ADC1->DRL; temph = (u16)((u16)(templ << (u8)6) | (u16)(temph << (u8)8)); } return ((u16)temph); } //以下程序是用AN3即PB3进行AD转换,并将AD值放在 u16 ADVal //初始化时调用: GPIO_DeInit(GPIOB); GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);//设置IO为悬浮输入 ADC1_DeInit(); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_3,\ ADC1_PRESSEL_FCPU_D6,ADC1_EXTTRIG_TIM,DISABLE,\ ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_CHANNEL3,DISABLE); /*单次转换*/ /*PB3/AN3*/ /*6分频*/ /*内部定时器1 TRG事件*/ /*禁止外部触发转换*/ /*数据右对齐 (低8字节在ADC_DRL寄存器,其余高字节 位在ADC_DRH寄存器)读顺序 应先读低位,再读高位字节*/ ADC1_Cmd(ENABLE);//允许进行AD转换 //进行AD取值时调用: ADC1_StartConversion();//开始AD转换 while(0==ADC1_GetFlagStatus(ADC1_FLAG_EOC));//等待转换完成 ADC1_ClearFlag(ADC1_FLAG_EOC); //清除AD完成标志位 ADVal = ADC1_GetConversionValue();//读AD值