2024-04-03 10:05:55 +08:00

88 lines
3.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
#ifndef __ADC_H
#define __ADC_H
#include "config.h"
#define ADC_RES_12BIT 0 // 0: MCU为10位ADC; 1: MCU为12位ADC
#define ADC_P10 0x01 // IO引脚 Px.0
#define ADC_P11 0x02 // IO引脚 Px.1
#define ADC_P12 0x04 // IO引脚 Px.2
#define ADC_P13 0x08 // IO引脚 Px.3
#define ADC_P14 0x10 // IO引脚 Px.4
#define ADC_P15 0x20 // IO引脚 Px.5
#define ADC_P16 0x40 // IO引脚 Px.6
#define ADC_P17 0x80 // IO引脚 Px.7
#define ADC_P1_All 0xFF // IO所有引脚
#define ADC_POWER (1 << 7) // ADC 电源
#define ADC_START (1 << 6) // ADC 转换启动控制位。自动清0
#define ADC_FLAG (1 << 5) // ADC 转换结束标志位。软件清0
#define ADC_EPWMT (1 << 4) // 使能 PWM 同步触发 ADC 功能
#define ADC_CH0 0
#define ADC_CH1 1
#define ADC_CH2 2
#define ADC_CH3 3
#define ADC_CH4 4
#define ADC_CH5 5
#define ADC_CH6 6
#define ADC_CH7 7
#define ADC_CH8 8
#define ADC_CH9 9
#define ADC_CH10 10
#define ADC_CH11 11
#define ADC_CH12 12
#define ADC_CH13 13
#define ADC_CH14 14
#define ADC_CH15 15
#define ADC_SPEED_2X1T 0 // SYSclk/2/1
#define ADC_SPEED_2X2T 1 // SYSclk/2/2
#define ADC_SPEED_2X3T 2 // SYSclk/2/3
#define ADC_SPEED_2X4T 3 // SYSclk/2/4
#define ADC_SPEED_2X5T 4 // SYSclk/2/5
#define ADC_SPEED_2X6T 5 // SYSclk/2/6
#define ADC_SPEED_2X7T 6 // SYSclk/2/7
#define ADC_SPEED_2X8T 7 // SYSclk/2/8
#define ADC_SPEED_2X9T 8 // SYSclk/2/9
#define ADC_SPEED_2X10T 9 // SYSclk/2/10
#define ADC_SPEED_2X11T 10 // SYSclk/2/11
#define ADC_SPEED_2X12T 11 // SYSclk/2/12
#define ADC_SPEED_2X13T 12 // SYSclk/2/13
#define ADC_SPEED_2X14T 13 // SYSclk/2/14
#define ADC_SPEED_2X15T 14 // SYSclk/2/15
#define ADC_SPEED_2X16T 15 // SYSclk/2/16
#define ADC_LEFT_JUSTIFIED 0 // ADC Result left-justified
#define ADC_RIGHT_JUSTIFIED 1 // ADC Result right-justified
typedef struct {
u8 ADC_SMPduty; // ADC 模拟信号采样时间控制, 0~31注意 SMPDUTY 一定不能设置小于 10
u8 ADC_Speed; // 设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
u8 ADC_Power; // ADC功率允许/关闭 ENABLE,DISABLE
u8 ADC_AdjResult; // ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
u8 ADC_Priority; // 优先级设置 Priority_0,Priority_1,Priority_2,Priority_3
u8 ADC_Interrupt; // 中断允许 ENABLE,DISABLE
u8 ADC_CsSetup; // ADC 通道选择时间控制 0(默认),1
u8 ADC_CsHold; // ADC 通道选择保持时间控制 0,1(默认),2,3
} ADC_InitTypeDef;
static void ADC_Inilize(ADC_InitTypeDef *ADCx);
void ADC_PowerControl(u8 pwr);
u16 Get_ADCResult(u8 channel); // channel = 0~15
void ADC_config(void);
extern u16 adc_date;
#endif