1. 结构体定义(在 STC8G_H_ADC.h 中已定义):
2. 函数原型:
STC8G_H_ADC.h
- typedef struct
- {
- u8 ADC_SMPduty; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
- u8 ADC_Speed; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
- u8 ADC_AdjResult; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
- u8 ADC_CsSetup; //ADC 通道选择时间控制 0(默认),1
- u8 ADC_CsHold; //ADC 通道选择保持时间控制 0,1(默认),2,3
- } ADC_InitTypeDef;
-
- void ADC_Inilize(ADC_InitTypeDef *ADCx);
- void ADC_PowerControl(u8 pwr);
- u16 Get_ADCResult(u8 channel); //channel = 0~15
复制代码
STC8G_H_ADC.c
- #include "STC8G_H_ADC.h"
-
- //========================================================================
- // 函数: void ADC_Inilize(ADC_InitTypeDef *ADCx)
- // 描述: ADC初始化程序.
- // 参数: ADCx: 结构参数,请参考adc.h里的定义.
- // 返回: none.
- // 版本: V1.0, 2012-10-22
- //========================================================================
- void ADC_Inilize(ADC_InitTypeDef *ADCx)
- {
- ADCCFG = (ADCCFG & ~ADC_SPEED_2X16T) | ADCx->ADC_Speed; //设置ADC工作时钟频率
- ADC_Justify(ADCx->ADC_AdjResult); //AD转换结果对齐方式
-
- if(ADCx->ADC_SMPduty > 31) return; //错误
- if(ADCx->ADC_CsSetup > 1) return; //错误
- if(ADCx->ADC_CsHold > 3) return; //错误
-
- ADCTIM = (ADCx->ADC_CsSetup << 7) | (ADCx->ADC_CsHold << 5) | ADCx->ADC_SMPduty ; //设置 ADC 内部时序,ADC采样时间建议设最大值
- }
复制代码 3. 正确调用方式(定义结构体变量并传地址):
正确写法如下:
main.c
- /******************* AD配置函数 *******************/
- void ADC_config(void)
- {
- ADC_InitTypeDef ADC_InitStructure; //结构定义
-
- ADC_InitStructure.ADC_SMPduty = 31; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
- ADC_InitStructure.ADC_CsSetup = 0; //ADC 通道选择时间控制 0(默认),1
- ADC_InitStructure.ADC_CsHold = 1; //ADC 通道选择保持时间控制 0,1(默认),2,3
- ADC_InitStructure.ADC_Speed = ADC_SPEED_2X16T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
- ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
- ADC_Inilize(&ADC_InitStructure); //初始化
- ADC_PowerControl(ENABLE); //ADC电源开关, ENABLE或DISABLE
- NVIC_ADC_Init(DISABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
- }
复制代码
11-多路ADC转换-BandGap-串口2发送.zip
(40.42 KB, 下载次数: 0)
|