⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 基于st7的模数转换
💻 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 + -