打印
[STM8]

STM8L的AD采集数据一直为同一个值,且值本身是错误的

[复制链接]
2116|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wawa10061212|  楼主 | 2014-11-18 18:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初次弄这玩意,不知道错误在哪,麻烦哪位大神帮忙指点下。
下面的是STM8L的初始化代码
//init clock
        CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
       
        // Set PB7 as Input floating no INT - ADC_1
  GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_FL_No_IT);
       
        // de-initialize ADC
  ADC_DeInit(ADC1);
       
  // ADC configuration ---------------------------------------//
  ADC_Init(ADC1, ADC_ConversionMode_Single,
           ADC_Resolution_12Bit, ADC_Prescaler_1);
                                         
  // SampleTime: 159 cycles
  ADC_SamplingTimeConfig(ADC1,ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
       
        /* Enable ADC1 Channel 10*/
        ADC_ChannelCmd(ADC1,ADC_Channel_10, ENABLE);
       
        //ADC_VrefintCmd(ENABLE);
       
        //ENABLE ADC1
        ADC_Cmd(ADC1, ENABLE);
       
        ADC_DMACmd(ADC1,ENABLE);
        ADC_SoftwareStartConv(ADC1);
沙发
wawa10061212|  楼主 | 2014-11-18 19:13 | 只看该作者
上面DMA是禁止的,,上面贴错了ADC_DMACmd(ADC1,DISABLE);
主函数里面:
ADC_SoftwareStartConv(ADC1);
while( ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == 0 );
uctemp = ADC_GetConversionValue(ADC1);

刚开始我是将该ADC_SoftwareStartConv(ADC1)语句放在初始化里面的,
但是这样会一直停止在while( ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == 0 )等待

后来将ADC_SoftwareStartConv(ADC1)放到主函数里面,AD可以一直读取到数据,但读取的数据是错误的且为同一个值,好像不会改变!

使用特权

评论回复
板凳
wawa10061212|  楼主 | 2014-11-18 19:28 | 只看该作者
找到问题了,通道设置错误!第一次弄这个,犯了个弱智的错误

使用特权

评论回复
地板
mmuuss586| | 2014-11-18 21:28 | 只看该作者

能采到数据的话,一般问题不大;
解决了就好;

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wawa10061212 + 1 赞一个!
5
wawa10061212|  楼主 | 2014-11-19 13:47 | 只看该作者
恩,是的!谢谢!

使用特权

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

本版积分规则

5

主题

17

帖子

0

粉丝