[STM8]

求助啊!STM8的ADC转换导致附近管脚不能置底,是什么情况

[复制链接]
708|1
手机看帖
扫描二维码
随时随地手机跟帖
mailshichao|  楼主 | 2016-6-18 22:08 | 显示全部楼层 |阅读模式
我用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 ;
}
mailshichao|  楼主 | 2016-6-20 13:31 | 显示全部楼层
知道原因了,原来是自己粗心大意,没有在主程序里调用ADC初始化函数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

291

帖子

1

粉丝