ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
查看: 144|回复: 2
收起左侧

[STM8] 土包子刚入门stm8s,一段adc读不出来,求大神指教一二

[复制链接]

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 16:46 | 显示全部楼层 |返回版面|阅读模式

  1. void ADC_conf(void)
  2. {
  3.    ADC_CR1=0x02;                                       //预分频,连续转换模式,禁止转换
  4.    ADC_CR2=0x08;                                      //禁止外部触发转换,使用内部定时器1,右对齐,禁止扫描
  5.    
  6. }
  7. void ADC1(void)
  8. {

  9.   unsigned char A;
  10.    ADC_CSR=0x04;                                        //输入通道4
  11.                      //   ADC_TDRL=0x10;                                      //禁止思密特触发   0x08
  12.   ADC_CR1|=0x01;                                       //唤醒ADC
  13.   for(A=0;A<20;A++);
  14.     ADC_CR1|=0x01;                                      //启动ADC
  15.    
  16.        while(!(ADC_CSR&0x80));                    //等待转换
  17.                      //ADC_GetConversionValue=ADC_DRH;
  18.                     //ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
  19.        ADValue=ADC_GetConversionValue();
  20.                     //ADValue=ADC_GetConversionValue;
  21.        ADC_CSR&=0x7F;                                 //转换结束
  22.       
  23.     ADValue=0;            
  24.    for(char i=0;i<50;i++)
  25.     {
  26.        while(!(ADC_CSR&0x80));
  27.                       //ADC_GetConversionValue=ADC_DRH;
  28.                     // ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
  29.         ADValue+=ADC_GetConversionValue();
  30.        ADC_CSR&=0x7F;
  31.       }
  32.    VCC=1024.0/ADValue*125;                                   //实际转换电压值比例
  33.   // DelayMS(500);
  34. while(PD_IDR_IDR4==0)                                       
  35.      {
  36.        ADC_conf();
  37.          
  38.                        //ADC_CSR&=0x7F;
  39.        ADC_CSR=0x03;                                       //输入通道3
  40.                        //  ADC_TDRL=0x08;                                      //禁止思密特触发  0x04
  41.       ADC_CR1|=0x01;                                       //开始转换
  42.        for(A=0;A<20;A++);
  43.         ADC_CR1|=0x01;
  44.        while(!(ADC_CSR&0x80));
  45.                         //ADC_GetConversionValue=ADC_DRH;
  46.                         //ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
  47.        ADValue=ADC_GetConversionValue();
  48.        ADC_CSR&=0x7F;
  49.        ADValue=0;
  50.        for(char i=0;i<50;i++)
  51.         {
  52.          while(!(ADC_CSR&0x80));
  53.                               //ADC_GetConversionValue=ADC_DRH;
  54.                                // ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
  55.        ADValue+=ADC_GetConversionValue();
  56.        ADC_CSR&=0x7F;
  57.          }
  58.        ADValue= ADValue/50;
  59.        VCC2=ADValue/1024.0*VCC*2;    //得到的实际转换值
  60.        DelayMS(500);
  61.        Save();                    //保存入eeprom
  62.                             //while(1);
  63.      
  64. }
复制代码

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 16:50 | 显示全部楼层 |返回版面
自顶,大神在哪里

1

主题

3

帖子

9

积分

实习生

 楼主| 发表于 2017-4-21 17:00 | 显示全部楼层 |返回版面
大神何在
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

分享 快速回复 返回顶部 返回列表