标题: STM8L051F3寄存器片AD驱动 [打印本页]

作者: 闲散子    时间: 2019-3-10 18:13
标题: STM8L051F3寄存器片AD驱动
#include "Config.h"
u8 VDD_Value1=0;

void AD_IO_Init()
{
  PC_DDR_DDR4 = 0;        //  设置PD4为输入
  PC_CR1_C14 = 1;         //  设置PD4为上拉输入
  PC_CR2_C24 = 0;         //  
}

void ADC_Init()
{
   ADC_CLK_EN();

   ADC1_TRIGR1_VREFINTON=1;//打开内部参考电压源

   ADC1_CR1_ADON=1;  //wakes up the ADC from Power down mode.

   ADC1_CR2_PRESC=1;//Select a sample time of 10 μs

//   0: f(ADC_CLK) = CK

//   1: f(ADC_CLK) = CK/2  //系统时钟此时为默认的16M/8=2M,这里分频后,fadc=2M/2=1M



   ADC1_SQR1_DMAOFF=1;    //关闭DMA,暂时不用


   ADC1_CR3_SMTP2=0x06;//采样时间为24 ADC clock cycles,也就是24*1us=24us

//000: 4 ADC clock cycles

//001: 9 ADC clock cycles

//010: 16 ADC clock cycles

//011: 24 ADC clock cycles

//100: 48 ADC clock cycles

//101: 96 ADC clock cycles

//110: 192 ADC clock cycles

//111: 384 ADC clock cycles


   ADC1_CR3_CHSEL=4;
   ADC1_SQR1_CHSEL_S28=1; //选择内部参考电压通道



   ADC1_CR1_EOCIE=1;


}
#pragma vector=0x14

__interrupt void ADC1_ISR(void)

{

   static uint16_t temp=0;

  u16 VDD_Value;
   ADC1_SR_EOC=0;

   temp = ADC1_DRH;

   temp = (temp<<8)+ADC1_DRL;

   VDD_Value=(uint32_t)1225*4096/temp;//得到的数值单位为mv
   VDD_Value1=(u8)(VDD_Value/100);
   asm("nop");

}
void ADC_START(void)
{
  ADC1_CR1_START  =       1;
}
void ADC_STOP(void)         
{
//    ADC1_CR1_START  =       0;
}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1