#ifndef _USER_JOYSTICK_H
#define _USER_JOYSTICK_H

#include "Type_def.h"//数据类型库

//定义ADC_DMA转换通道枚举体
typedef enum {
  ADC_DMA_Joystick1_x=1,//摇杆1的X轴
  ADC_DMA_Joystick1_y,//摇杆1的Y轴
  ADC_DMA_Joystick2_x,//摇杆2的X轴
  ADC_DMA_Joystick2_y,//摇杆2的Y轴
  ADC_DMA_Ucap,//内部参考电压源
}ADC_DMA_Channel_t;

//定义摇杆变量数据结构体
struct JoyStick_Typedef_t {
  float Current_System_VCC;//当前系统的VCC电压值
  uint16_t Static_Joystick1_X;//摇杆1的X轴静态ADC值(摇杆回中)
  uint16_t Static_Joystick1_Y;//摇杆1的Y轴静态ADC值(摇杆回中)
  uint16_t Static_Joystick2_X;//摇杆2的X轴静态ADC值(摇杆回中)
  uint16_t Static_Joystick2_Y;//摇杆2的Y轴静态ADC值(摇杆回中)
  uint16_t Dynamic_Joystick1_X;//摇杆1的X轴动态ADC值
  uint16_t Dynamic_Joystick1_Y;//摇杆1的Y轴动态ADC值
  uint16_t Dynamic_Joystick2_X;//摇杆2的X轴动态ADC值
  uint16_t Dynamic_Joystick2_Y;//摇杆2的Y轴动态ADC值
  uint8_t  Digital_Joystick_Left;//左侧摇杆Z轴
  uint8_t  Digital_Joystick_Right;//右侧摇杆Z轴
};

extern struct JoyStick_Typedef_t idata MyJoyStick;//定义句柄

//用户摇杆变量初始化函数
void User_JoyStick_Tag_Init(void);

//用户摇杆初始化函数
void User_Joystick_Init(void);

//用户摇杆校准函数
void User_JoyStick_Calibrate(struct JoyStick_Typedef_t *joystick_t);

//用户摇杆获取ADC值函数
void User_JoyStick_Get_ADC(struct JoyStick_Typedef_t *joystick_t);

//用户摇杆切换OLED界面函数
void User_JoyStick_Switch_OLED_Page(struct OLED_Typedef_t *oled_t);

#endif