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

[复制链接]
2339|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
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

粉丝
快速回复 在线客服 返回列表 返回顶部