STM8 ADC转换模式-------单次模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式。
单次模式
在单次转换模式中,ADC仅在由ADC_CSR寄存器的CH[3:0]选定的通道上完成一次转换。该模式是在当CONT位为0时通过置位ADC_CR1寄存器的ADON位来启动的。
一旦转换完成,转换后的数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置EOCIE 被置位将产生一个中断。
其中ADC结果的读取可以采用查询模式也可以采用中断模式。
查询模式代码如下:
#include "adc.h"
#include "main.h"u16 DATAH = 0; //ADC转换值高8位
u16 DATAL = 0; //ADC转换值低8位
_Bool ADC_flag = 0; //ADC转换成功标志//AD通道引脚初始化
void ADC_GPIO_Init( void )
{PD_DDR &= ~( 1 << 3 ); //PD3 设置为输入 电流PD_CR1 &= ~( 1 << 3 ); //PD3 设置为悬空输入
}
/*
ch 为ADC对应通道
通过置位ADC_CR1寄存器的ADON位来开启ADC。当第一次置位ADON时,ADC从低功耗模式唤醒。
为了启动转换必须第二次使用写指令来置位ADON位。
在转换结束时,ADC会保持在上电状态,用户只需要置位ADON位一次来启动下一次转换。
转换完成后,转换数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置位,如果EOCIE被置位将产生一个中断
ADC输入通道初始化入口参数表示通道选择
*/
void ADC_CH_Init( u8 ch )
{char l = 0;ADC_CR1 = 0x00; //fADC = fMASTER/2, 8Mhz 单次转换,禁止转换ADC_CSR = ch ; //控制状态寄存器 选择要 AD输入通道 如:PD2(AIN3)ADC_CR2 = 0x00; //默认左对齐 读数据时先读高在读低ADC_TDRL = ( 1 << ch ); //禁止相应通道 施密特触发功能 1左移ch+1位ADC_CR1 |= 0x01; //使能ADC并开始转换//ADC_CSR |= 0x20; //EOCIE 使能转换结束中断 EOC中断使能for( l = 0; l < 100; l++ ); //延时,保证ADC模块的上电完成 至少7usADC_CR1 = ADC_CR1 | 0x01; //再次将CR1寄存器的最低位置1 使能ADC 并开始转换
}//采集PD2电压值
u16 ReadVol_CH3( void )
{u16 voltage = 0;while( ( ADC_CSR & 0x80 ) == 0 ); //等待转换结束if( ADC_CSR & 0x80 ){DATAH = ADC_DRH; // 读出ADC结果的高8位DATAL = ADC_DRL; // 读出ADC结果的低8位voltage = ( DATAH << 2 ) + DATAL ; //得到十位精度的数据 0--1024ADC_CR1 = ADC_CR1 | 0x01; //再次将CR1寄存器的最低位置1 启动下一次转换ADC_CSR &= 0x7F;};return voltage;
}
中断模式代码如下:
#include "adc.h"
#include "main.h"u16 DATAH = 0; //ADC转换值高8位
u16 DATAL = 0; //ADC转换值低8位
_Bool ADC_flag = 0; //ADC转换成功标志//AD通道引脚初始化
void ADC_GPIO_Init( void )
{PD_DDR &= ~( 1 << 3 ); //PD3 设置为输入 电流PD_CR1 &= ~( 1 << 3 ); //PD3 设置为悬空输入
}
/*
ch 为ADC对应通道
通过置位ADC_CR1寄存器的ADON位来开启ADC。当第一次置位ADON时,ADC从低功耗模式唤醒。
为了启动转换必须第二次使用写指令来置位ADON位。
在转换结束时,ADC会保持在上电状态,用户只需要置位ADON位一次来启动下一次转换。
转换完成后,转换数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置位,如果EOCIE被置位将产生一个中断ADC输入通道初始化入口参数表示通道选择
*/
void ADC_CH_Init( u8 ch )
{char l = 0;ADC_CR1 = 0x00; //fADC = fMASTER/2, 8Mhz 单次转换,禁止转换ADC_CSR = ch ; //控制状态寄存器 选择要 AD输入通道 如:PD2(AIN3)ADC_CR2 = 0x00; //默认左对齐 读数据时先读高在读低ADC_TDRL = ( 1 << ch ); //禁止相应通道 施密特触发功能 1左移ch+1位ADC_CR1 |= 0x01; //使能ADC并开始转换ADC_CSR |= 0x20; //EOCIE 使能转换结束中断 EOC中断使能for( l = 0; l < 100; l++ ); //延时,保证ADC模块的上电完成 至少7usADC_CR1 = ADC_CR1 | 0x01; //再次将CR1寄存器的最低位置1 使能ADC 并开始转换
}
//采集PD3电压值
u16 ReadVol_CH3( void )
{static u16 voltage = 0;if( ADC_flag ){ADC_flag = 0;voltage = ( DATAH << 2 ) + DATAL ; //得到十位精度的数据 0--1024ADC_CR1 = ADC_CR1 | 0x01; //再次将CR1寄存器的最低位置1 启动下一次转换};return voltage;
}
//AD中断服务函数 中断号22
#pragma vector = 24 // IAR中的中断号,要在STVD中的中断号上加2
__interrupt void ADC_Handle( void )
{ADC_CSR &= ~0x80; // 转换结束标志位清零 EOC//默认左对齐 读数据时先读高高8位 再读低8位DATAH = ADC_DRH; // 读出ADC结果的高8位DATAL = ADC_DRL; // 读出ADC结果的低8位ADC_flag = 1; // ADC中断标志 置1
}
STM8 ADC转换模式-------单次模式相关推荐
- STM8 ADC转换模式-------单次扫描模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式. 单次扫描模式 该模式是用来转换从AIN0到 之间的一连串模拟通道,'n'是在 ADC_CSR寄 ...
- STM8 ADC转换模式-------带缓存的连续模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式. 连续和带缓存的连在连 换模式中,将ADC设为连续模式,该模式是通过置位 ADC_CR1寄存器的 ...
- STM8 ADC转换模式-------连续模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式. 连续和带缓存的连在连 换模式中,将ADC设为连续模式,该模式是通过置位 ADC_CR1寄存器的 ...
- STM8 ADC转换模式-------连续扫描模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式. 连续扫描模式 该模式和单次扫描模式相近,只是每一次在最后通道转换完成时,一次新 ...
- STM32 ADC 单次模式、连续模式、扫描模式(转载)
ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...
- STM32 ADC 单次模式、连续模式、扫描模式
ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...
- STM8学习笔记----PWM单脉冲模式输出
先看看官方资料对单脉冲模式的介绍 下面看C代码的实现 void PWM_GPIO_Init( void ) {PC_DDR_DDR6 = 1; //输出管脚 PC6 TIM1_CH1PC_CR1_C1 ...
- STM32之ADC模数转换器单通道。
ADC模数转换器 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁. 12位逐次 ...
- 瑞萨e2studio(7)----ADC通过单次扫描多通道方式采样
瑞萨e2studio.7--ADC通过单次扫描多通道方式采样 概述 视频教学 csdn课程 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 时钟设置 UART配置 ...
最新文章
- 特征工程(二)TfidfVectorizer
- 美国动物园小鹿“撞脸”韩国艺人 粉丝众筹为其取名
- PAT-乙级-1062 最简分数
- ApacheCN 2019Q1 总结
- 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
- 交互式、非交互式,登录式、非登录式Shell
- Redis bind用法
- android wifi 抓sniffer log
- 浏览器禁用第三方Cookie
- TinyOS数据帧与CC2420 Radio Stack解读
- 药品大数据公司都有哪些?
- wand(wead and)算法简介与改造,修改为店铺与品牌的关键字搜索
- 基于ibeacons三点定位(微信小程序)
- svn修改offline状态
- vue动态计算表格列两个时间的差值
- 左右手材料,左右手传输线
- 详谈!抖音怎么快速申请企业蓝V认证
- Clamav安装及基本使用教程
- 计算机组成原理设计,计算机组成原理课程设计
- android 开发 关机没有关机铃声动画 显示正在关机pop框,关机 – Pop's Blog