📄 adc.c
字号:
/*******************************************************************************
ADC 相关的功能的子程序(以下子程序参考或采用ST公司MCD Application Team提供的相关子程序)
******************************************************************************/
#include "ST7lib_config.h" /* 芯片选择*/
#include "adc_hr.h" /* 在adc.c中声明使用的常数*/
#include "adc.h" /* 函数声明*/
/*-----------------------------------------------------------------------------
子程序名称 : ADC_Init
输入 : ADC_SPEED (设置ADC的时钟)
ADC_SLOW (设置ADC的时钟)
ADC_DEFAULT (按缺省模式配置ADC)
输出 : 无。
描述 : ADC初始化子程序。
注释 : 用户可以通过InitValue输入初始变量。
-----------------------------------------------------------------------------*/
void ADC_Init (Typ_ADC_InitParameter InitValue)
{
unsigned char Temp; /* 读寄存器变量用 */
ADCCSR = ADC_DEFAULT; /* 清除ADC控制状态寄存器*/
ADCDRL = ADC_DEFAULT; /* 清除ADC数据寄存器*/
ADCDRL = (unsigned char)InitValue; /* 初始化ADC低位数据寄存器*/
if((unsigned char)InitValue & ADC_SPEED_SET)
{
ADCCSR = ADC_SPEED_SET; /* 设速度位*/
}
Temp = ADCDRH; /* 清EOC标志*/
}
/* ---------------------------------------------------------------------------
子程序名称 : ADC_Test_Conversn_Complete
输入 : 无
输出 : TRUE 或 FALSE
描述 : 检查A/D转换是否完成。
注释 : 该函数可循环执行直至转换完成。
----------------------------------------------------------------------------*/
BOOL ADC_Test_Conversn_Complete (void)
{
if(ADCCSR & ADC_EOC) /* 检查EOC位 */
{
return(TRUE); /* 返回EOC标志的状态 */
}
else
{
return(FALSE);
}
}
/* ----------------------------------------------------------------------------
子程序名称 : ADC_Select_Channel
输入 : ADC_AIN (通道号)
输出 : 无
描述 : 选择模拟输入通道0,1,2,3........7
注释 : ADC_AIN 由所选的芯片确定
----------------------------------------------------------------------------*/
void ADC_Select_Channel (unsigned char ADC_AIN)
{
/* 选择转换的模拟通道*/
ADCCSR &= ADC_SEL_CHNL1;
ADCCSR |= ADC_AIN; /* 传送通道值*/
}
/* ----------------------------------------------------------------------------
子程序名称 : ADC_Conversn_Read
输入 : 无
输出 : unsigned integer (从数据寄存器来的转换数)
描述 : 读从数据寄存器来的转换值
----------------------------------------------------------------------------*/
unsigned int ADC_Conversn_Read (void)
{
unsigned char Temp; /* 只用于读寄存器 */
unsigned int Conv_Data; /* 用于读转换的数据 */
/* 从ADCDRL寄存器读转换的最低两位数值*/
Temp = (unsigned char)((unsigned char)ADCDRL & (unsigned char)0x03);
Conv_Data = ADCDRH; /* 读转换值的MSB值 */
Conv_Data = Conv_Data<< 2;
Conv_Data |= Temp; /* 把最低两位数值与MSB值取或 */
return(Conv_Data); /* 返回转换值*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -