stm8s adc使用例子源码

[复制链接]
查看834 | 回复5 | 2016-11-13 03:33:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
stm8s adc 的一个例程源码

/******************** (C) COPYRIGHT  风驰iCreate嵌入式开发工作室 ***************************
* 文件名  :adc.c
* 描述    :AD配置函数库   
* 实验平台:iCreate STM8开发板
* 寄存器版本  :V2.0.0
* 作者    :ling_guansheng  QQ:779814207
* 博客    :
* 修改时间 :2012-6-16

* iCreate STM8开发板硬件连接
   STM8的PF0口(也就是ADC2的AIN10)接的是光敏或热敏电阻

****************************************************************************************/


#include "adc.h"
#include "uart.h"


/**************************************************************************
* 函数名:ADC_conf
* 描述  :ADC模块初始化
* 输入  :无
*
* 输出  :无
* 返回  :无
* 调用  :外部调用
*************************************************************************/
void ADC_conf()
{
   ADC_CR1 = (0<<4)|(1<<1)|(0<<0);    //ADC时钟输入频率为16MHz 这里设置分频系数为2  连续转换模式 先禁止ADC转换      
   ADC_CR2 = (1<<3)|(0<<1);           //设置数据右对齐  禁止扫描模式
  
   ADC_CSR = (0<<5)|(0xa<<0);         //不用外部触发 禁止转换结束中断 设置转换通道为AIN10
   ADC_TDRH = 4;                      //禁止AIN10施密特触发器功能  
   ADC_CR1 |= 1;                      //第一次写1是从低功耗模式唤醒
   ADC_CR1 |= 1;                      //在这一位是1的情况下再次写1启动ADC转换
}

/**************************************************************************
* 函数名:Send_ADC_Value
* 描述  :ADC转换结果显示函数
* 输入  :AD_Value--ADC转换结果值
*
* 输出  :无
* 返回  :无
* 调用  :内部调用
*************************************************************************/
static void Send_ADC_Value(u16 AD_Value)
{
    UART1_SendByte(AD_Value/1000+0x30);
    UART1_SendByte(AD_Value%1000/100+0x30);
    UART1_SendByte(AD_Value%1000%100/10+0x30);
    UART1_SendByte(AD_Value%1000%100%10+0x30);
}

/**************************************************************************
* 函数名:ADC_GetConversionValue
* 描述  :获取ADC转换结果
* 输入  :无
*
* 输出  :无
* 返回  :无
* 调用  :内部调用
*************************************************************************/
uint16_t ADC_GetConversionValue(void)
{
  uint16_t value,temph;        
  uint8_t templ;                  // 定义templ存储低8位数据  temph存储高8位数据
  
  while(!(ADC_CSR & 0x80));           //等待转换完成
  templ = ADC_DRL;
  temph = ADC_DRH;                  //读取ADC转换  在左对齐和右对齐模式下 读取数据的顺序不同  参考STM8寄存器.PDFP371         
  
  value = (unsigned int)(templ | (temph << 8));   //注意是10位的转换精度 value、temph应为unsigned int 变量
  return  value;
}
回复

使用道具 举报

秋风式街球 | 2016-11-13 08:26:48 | 显示全部楼层
回复

使用道具 举报

lyh0739 | 2016-11-13 09:30:14 | 显示全部楼层
1111
回复

使用道具 举报

jerryjwg | 2016-11-13 18:19:36 | 显示全部楼层
回复

使用道具 举报

q161051546 | 2017-11-17 17:08:54 | 显示全部楼层
回复

使用道具 举报

yanzhuangsongqi | 2017-12-18 11:47:34 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

3

主题

2

回帖

0

积分

一级逆天

积分
0

终身成就奖

QQ