找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2122|回复: 0
打印 上一主题 下一主题
收起左侧

STM8L051F3寄存器片AD驱动

[复制链接]
跳转到指定楼层
楼主
ID:46381 发表于 2019-3-10 18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表