#ifndef _APP_CONTROL_OUT_H_ #define _APP_CONTROL_OUT_H_ // ADC参考电压 #define VREF_1V2 1200 #define VREF_2V4 2400 #define VREF_VDD 3300 #define SADC_VREF VREF_2V4 // Dmin =(0.9V*(1024/3.3))/2 =139.6; // Dmax =(3.8V*(1024/3.3))/2 =589.6; #define ACC_Dmin 138 #define ACC_Dmax 591 #define ACC_PERCENT(s) (ACC_Dmin + ((ACC_Dmax - ACC_Dmin)*(s))/100) // GPIO的输出需反向 enum app_control{ IN_GPS =PA09, // GPS输入0 /边沿触发 IN_Back =PA10, // 倒车 /边沿触发 IN_Brake =PA11, // 制动 /边沿触发 IN_Manager_Mode =PA12, // 管理员模式 /边沿触发 OUT_Buzzer =PA13, // 蜂鸣器 /H:高使能 OUT_Low_speed =PA14, // 低速档位 /L:低使能 OUT_Back_car =PA15, // 前进后退 /H:前进/L:后退 OUT_Low_brake =PA16, // 低制动 /L:低使能 OUT_High_brake =PA17, // 高制动 /H:低使能 OUT_Door_lock =PA18, // 电门锁 /H:开锁 }; extern bool app_control_en[PA_MAX]; // PAD控制进入管理员模式 extern bool PAD_Manager_Mode; // PAD控制进入游客模式 extern bool PAD_User_Mode; // 系统自动刹车 extern bool SYS_AUTO_brake; // 系统自动减速 extern bool SYS_AUTO_Speed_Cut; // 写1使能,写0失能 #define Set_Status(pad,activity) (gpio_put(pad, ((0 == activity) ? !app_control_en[pad] : app_control_en[pad]))) // 获取状态 1使能,0失能 #define Get_Status(pad) ((app_control_en[pad] == gpio_get(pad)) ? 1 : 0) //中控控制IO初始化 void app_control_init(void); // 获取电池电压值(unit:V) float get_bat_voltage(void); // 获取输入油门百分比(unit:%)(踏板信号) uint16_t get_in_acc_percent(void); // 设置输出油门百分比(unit:%) void set_out_acc_percent(uint8_t percent); // 控制进程,定时调用 void Control_procedure(void); #endif