#ifndef __ADC_H
#define __ADC_H

#include "ch32l103.h"
#include "ring_queue2.h"

//typedef struct _ADC_DATA {
//    uint16_t total_CHG_CURR;        /* 一个控制周期中，adc采集的值之和      充电电流 */
//    uint16_t num_CHG_CURR;          /* 一个控制周期中，adc采集次数之和 */
//    uint16_t total_PV_VOLT_OUT;     /* 输出电压 */
//    uint16_t num_PV_VOLT_OUT;
//    uint16_t total_DSG_CURR;        /* 放电电流 */
//    uint16_t num_DSG_CURR;
//    uint16_t total_PV1_VOLT_IN;     /* 系统输入电压 */
//    uint16_t num_PV1_VOLT_IN;
//    uint16_t total_PV_VOLT_IN1;     /* 太阳能板输出电压 */
//    uint16_t num_PV_VOLT_IN1;
//    uint16_t total_MOSFET_Temper;   /* mos管温度 */
//    uint16_t num_MOSFET_Temper;
//}ADC_DATA;

//#define data_len 50
//typedef struct _ADC_DATA {
//    uint16_t num;                           /* 一个控制周期中，adc采集次数 */
//    uint16_t CHG_CURR_array[data_len];      /* 充电电流 */
//    uint16_t PV_VOLT_OUT_array[data_len];   /* 输出电压 */
//    uint16_t DSG_CURR_array[data_len];      /* 放电电流 */
//    uint16_t PV_VOLT_IN_array[data_len];    /* 太阳能板输出电压 */
//    uint16_t SYS_VOLT_IN_array[data_len];   /* 系统输入电压 */
//    uint16_t MOSFET_Temper_array[data_len]; /* mos管温度 */
//}ADC_DATA;

#define adcBuffSize 100

typedef struct _ADC_DATA {
    RingQueue2 RQCHG_CURR;
    uint32_t total_CHG_CURR;      /* 充电电流一段时间中adc值的和 */
    RingQueue2 RQDSG_CURR;
    uint32_t total_DSG_CURR;      /* 放电电流一段时间中adc值的和 */
}ADC_DATA;

extern ADC_DATA g_adcData;
extern int16_t Calibrattion_Val;

void ADC_all_Init(void);
void ADC_TIM_DMA_Init(void);

#endif
