STM8S103之AD采样

 

本篇博文最后修改时间:2017年08月14日 22:00。

 

一、简介

本文以STM8S103F3P6编程为例,介绍STM8S103F3P6采集AD采样

 

二、实验平台

电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:STM8S103F3P6

 

三、版权声明

博主:_懵懂

声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。

原文地址:http://blog.csdn.NET/qq_18842031

懵懂之MCU交流群:136384801

单片机软件/硬件交流:127034610

 

四、实验前提

1、在进行本文步骤前,请先安装IAR  EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。

         

五、基础知识

暂无

 

六、源码地址

暂无

 

七、关联文章

链接:

 

八、实验内容

1.系统时钟初始化为内部16M

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //时钟   初始化时钟为1分频 16M  

 

2.初始化ADC1 通道2为AD采集脚  10位AD

void Init_ADC(void)
{
  	GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);      //引脚初始化  初始化ADC通道引脚
	ADC1_DeInit();
        ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,      //单次转换
                  ADC1_CHANNEL_3,                  //通道
                  ADC1_PRESSEL_FCPU_D2,            //预定标器选择 分频器  fMASTER 可以被分频 2 到 18
                  ADC1_EXTTRIG_TIM,                //从内部的TIM1 TRGO事件转换
                  DISABLE,                         //是否使能该触发方式
                  ADC1_ALIGN_RIGHT,                //对齐方式(可以左右对齐)
                  ADC1_SCHMITTTRIG_CHANNEL3,       //指定触发通道
                  ENABLE);                         //是否使能指定触发通道
        ADC1_Cmd(ENABLE);                          //使能ADC
}

 

3.获取AD值

uint16_t Get_Ad(void)
{
  ADC1_StartConversion();                      //启动AD转换
  while(RESET == ADC1_GetFlagStatus(ADC1_FLAG_EOC));   //等待转换完成
  ADC1_ClearFlag(ADC1_FLAG_EOC);               //清除标志
  uint16_t value = ADC1_GetConversionValue();            //读取AD值 
  return value;
}

 

4.编写主函数

void main(void)
{
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //内部时钟16M
  Init_UART1();
  Init_Timer4();
  Init_ADC();
  enableInterrupts();
  while(1)
  {
      uint16_t value = Get_Ad();    
      Txd_buf[Txd_len++] = value / 10000 % 10 +'0';
      Txd_buf[Txd_len++] = value / 1000 % 10 +'0';
      Txd_buf[Txd_len++] = value / 100 % 10 +'0';
      Txd_buf[Txd_len++] = value / 10 % 10 +'0';
      Txd_buf[Txd_len++] = value % 10 +'0';
      Txd_buf[Txd_len++] = '\n';
      UART1_Send(Txd_buf,Txd_len);
  }
}

 

你可能感兴趣的:(STM8)