打印
[STM8]

新手上路,求教STM8L的ADC程序问题

[复制链接]
2115|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luozuowen|  楼主 | 2015-7-25 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚从硬件转过来学习STM8L,自己写了个ADC采集程序,结果一直采集不到数据,求各位高手指点,谢谢!
#include "stm8l151g4.h"
#include "led_init.h"
#include "adc_init.h"
typedef   unsigned short    uint16_t;

main()
{
  uint16_t Value;//unsigned int Value;
  int i;
  adc_init();
  while (1)
      {
        Value = 0;
        ADC1_CR1 |=0x01;/*turn on ADC again*/
        i = 10;
        while(i--);
        while(!(0x01&ADC1_SR));// 是否转换完成
        ADC1_SR=0xFE;     // 转换完成,软件清零
        Value = (uint16_t)ADC1_DRH;//(unsigned int)ADC1_DRH;
        Value = Value<<8;
        Value =((uint16_t)Value|ADC1_DRL);
                                                       
                         
      }
}

#include "adc_init.h"


void adc_init(void)
{

       
        PD_DDR=0X00;        /* 0:Input mode */
        PD_CR1=0X00;        /* 0: Floating input */
        PD_CR2=0X00;        /* 0: External interrupt disabled */
        CLK_PCKENR2|=0x01;  /* open Peripheral ADC clk */
       
       
        ADC1_CR1 = 0x00;    /* 0x00:turn off ADC ,12 bit resolution */
        ADC1_CR2 = 0x00;   
        ADC1_SR|= 0x00;     /* Conversion not complete */
       
       
        ADC1_SQR1=0x80;     /* turn off DMA */
        ADC1_SQR2|=0x04;     /* select 19 channel */
        ADC1_TRIGR1|=0X10;  /* turn on  Internal reference voltage */
        ADC1_TRIGR2|=0X10;  /* schmitt trigger 19 disable */
        ADC1_CR1 |=0x01;    /* turn on ADC */
       
}
沙发
zh113214| | 2015-7-26 13:50 | 只看该作者
数据采集。。。。。。。。。

使用特权

评论回复
板凳
amanda_s| | 2015-7-27 11:36 | 只看该作者
建议参考官方例程先。

使用特权

评论回复
地板
cuit3062| | 2015-12-7 16:23 | 只看该作者
兄弟你的程序弄好了没有  弄好了的话 把这部分的发给我吧  306278570@qq.com

使用特权

评论回复
5
qq583678156| | 2016-11-1 23:22 | 只看该作者
我的是stm8L152的,可供参考,可用的

/*******************************************************************************
**函数名称:void ADC0_Init()
**功能描述:初始化ADC_IN0
**入口参数:无
**输出:无
*******************************************************************************/
void ADC0_Init()
{
  CLK_PCKENR2_bit.PCKEN20 = 1;   //打开ADC的时钟
  
  PA_DDR_bit.DDR6 = 0;   //设置PA->6 为输入
  PA_CR1_bit.C16 = 0;    //设置为悬空输入
  PA_CR2_bit.C26 = 0;    //设置中断禁止
  
  ADC1_CR1_bit.RES = 0;   //设置为12位转换模式
  ADC1_CR1_bit.CONT = 0;   //设置为单次转换模式
  ADC1_CR2_bit.PRESC = 1;   //ADC时钟进行2分频
  ADC1_CR2_bit.SMTP1 = 7;    //
  ADC1_CR3_bit.SMTP2 = 7;    //384 ADC时钟进行采样一次
  ADC1_CR3_bit.CHSEL = 0;       //SELECT AIN0
  
  ADC1_CR1_bit.ADON = 1;     //使能ADC
}

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝