952 lines
15 KiB
C
952 lines
15 KiB
C
#include "bsp.h"
|
|
|
|
#include "math.h"
|
|
|
|
#include "stdio.h"
|
|
|
|
|
|
|
|
CHARGER_t charger;
|
|
|
|
|
|
|
|
BAT_TYPE_t BAT_TYPE[] = {
|
|
/* 序列号 节数 最小电压 最大电压 目标电压 目标电流 单节目标 电池类型 电池名称 */
|
|
{0, 1, 3.3, 4.2, 4.2, 1.0, 4.2, Li_Poly, "Li_Poly"},
|
|
{1, 1, 3.3, 4.2, 4.2, 1.0, 4.2, Li_Poly, "Li_Poly_H"},
|
|
{2, 1, 3.3, 4.2, 4.2, 1.0, 4.2, Li_Poly, "Li_ion"},
|
|
{3, 1, 3.3, 4.2, 4.2, 1.0, 4.2, Li_Poly, "Li_Fe"}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//所有底层初始化
|
|
void bsp_init(void)
|
|
{
|
|
memset((unsigned char *)&charger,0,sizeof(charger));
|
|
|
|
//注册底层驱动函数
|
|
|
|
|
|
charger.battery[0].set = &bat_1_set;
|
|
charger.battery[1].set = &bat_2_set;
|
|
charger.battery[2].set = &bat_3_set;
|
|
charger.battery[3].set = &bat_4_set;
|
|
charger.battery[4].set = &bat_5_set;
|
|
charger.battery[5].set = &bat_6_set;
|
|
|
|
charger.battery[6].set = &bat_7_set;
|
|
charger.battery[7].set = &bat_8_set;
|
|
charger.battery[8].set = &bat_9_set;
|
|
charger.battery[9].set = &bat_10_set;
|
|
charger.battery[10].set = &bat_11_set;
|
|
charger.battery[11].set = &bat_12_set;
|
|
|
|
charger.battery[12].set = &bat_13_set;
|
|
charger.battery[13].set = &bat_14_set;
|
|
charger.battery[14].set = &bat_15_set;
|
|
charger.battery[15].set = &bat_16_set;
|
|
charger.battery[16].set = &bat_17_set;
|
|
charger.battery[17].set = &bat_18_set;
|
|
|
|
charger.battery[18].set = &bat_19_set;
|
|
charger.battery[19].set = &bat_20_set;
|
|
charger.battery[20].set = &bat_21_set;
|
|
charger.battery[21].set = &bat_22_set;
|
|
charger.battery[22].set = &bat_23_set;
|
|
charger.battery[23].set = &bat_24_set;
|
|
|
|
|
|
|
|
charger.battery[0].get = &bat_1_voltage;
|
|
charger.battery[1].get = &bat_2_voltage;
|
|
charger.battery[2].get = &bat_3_voltage;
|
|
charger.battery[3].get = &bat_4_voltage;
|
|
charger.battery[4].get = &bat_5_voltage;
|
|
charger.battery[5].get = &bat_6_voltage;
|
|
|
|
charger.battery[6].get = &bat_7_voltage;
|
|
charger.battery[7].get = &bat_8_voltage;
|
|
charger.battery[8].get = &bat_9_voltage;
|
|
charger.battery[9].get = &bat_10_voltage;
|
|
charger.battery[10].get = &bat_11_voltage;
|
|
charger.battery[11].get = &bat_12_voltage;
|
|
|
|
charger.battery[12].get = &bat_13_voltage;
|
|
charger.battery[13].get = &bat_14_voltage;
|
|
charger.battery[14].get = &bat_15_voltage;
|
|
charger.battery[15].get = &bat_16_voltage;
|
|
charger.battery[16].get = &bat_17_voltage;
|
|
charger.battery[17].get = &bat_18_voltage;
|
|
|
|
charger.battery[18].get = &bat_19_voltage;
|
|
charger.battery[19].get = &bat_20_voltage;
|
|
charger.battery[20].get = &bat_21_voltage;
|
|
charger.battery[21].get = &bat_22_voltage;
|
|
charger.battery[22].get = &bat_23_voltage;
|
|
charger.battery[23].get = &bat_24_voltage;
|
|
|
|
|
|
|
|
|
|
|
|
charger.fan.init = &fan_init;
|
|
charger.fan.set = &fan_set;
|
|
charger.fan.get = &bat_temperature;
|
|
charger.fan.state = &fan_state;
|
|
|
|
|
|
|
|
charger.power.init = &power_init;
|
|
charger.power.set_current = &power_set;
|
|
charger.power.get_power = &pwr_all_voltage;
|
|
charger.power.get_current = &bat_current;
|
|
charger.power.get_voltage = &bat_all_voltage;
|
|
charger.power.state = &power_state;
|
|
|
|
|
|
charger.relay.init = &relay_init;
|
|
charger.relay.set = &relay_set;
|
|
charger.relay.state = &relay_state;
|
|
|
|
|
|
|
|
|
|
//初始化设备
|
|
for(int i = 0;i < 24;i++)
|
|
{
|
|
charger.battery[i].set(1);
|
|
}
|
|
|
|
charger.fan.init();
|
|
|
|
charger.power.init();
|
|
|
|
charger.relay.init();
|
|
|
|
|
|
//参数初始化
|
|
//charger.target_voltage = 4.2;
|
|
charger.battery_type = 0;
|
|
|
|
charger.working = 0;//参数选择阶段
|
|
charger.mode = 0;
|
|
charger.step = 0;
|
|
|
|
charger.bat_info.count = 24;
|
|
|
|
init_uart_fifos();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//=========================读取电池电压================================
|
|
|
|
#define BAT_INJECT_TIMES (1U)
|
|
|
|
uint32_t value_bat1 = 0;
|
|
double bat_1_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_1_set(0);
|
|
HAL_Delay(1);
|
|
bat_1_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
|
|
//设置成0,接通电容和运放
|
|
bat_1_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
//value_bat1 = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_2_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_2_set(0);
|
|
HAL_Delay(1);
|
|
bat_2_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_2_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_3_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_3_set(0);
|
|
HAL_Delay(1);
|
|
bat_3_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_3_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
double bat_4_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_4_set(0);
|
|
HAL_Delay(1);
|
|
bat_4_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_4_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_5_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_5_set(0);
|
|
HAL_Delay(1);
|
|
bat_5_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_5_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_6_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_6_set(0);
|
|
HAL_Delay(1);
|
|
bat_6_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_6_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_7_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_7_set(0);
|
|
HAL_Delay(1);
|
|
bat_7_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_7_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_8_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_8_set(0);
|
|
HAL_Delay(1);
|
|
bat_8_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_8_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_9_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_9_set(0);
|
|
HAL_Delay(1);
|
|
bat_9_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_9_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_10_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_10_set(0);
|
|
HAL_Delay(1);
|
|
bat_10_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_10_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_11_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_11_set(0);
|
|
HAL_Delay(1);
|
|
bat_11_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_11_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_12_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_12_set(0);
|
|
HAL_Delay(1);
|
|
bat_12_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_12_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_13_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_13_set(0);
|
|
HAL_Delay(1);
|
|
bat_13_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_13_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_14_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_14_set(0);
|
|
HAL_Delay(1);
|
|
bat_14_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_14_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_15_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_15_set(0);
|
|
HAL_Delay(1);
|
|
bat_15_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_15_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_16_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_16_set(0);
|
|
HAL_Delay(1);
|
|
bat_16_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_16_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_17_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_17_set(0);
|
|
HAL_Delay(1);
|
|
bat_17_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_17_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_18_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_18_set(0);
|
|
HAL_Delay(1);
|
|
bat_18_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_18_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_19_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_19_set(0);
|
|
HAL_Delay(1);
|
|
bat_19_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_19_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_20_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_20_set(0);
|
|
HAL_Delay(1);
|
|
bat_20_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_20_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_21_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_21_set(0);
|
|
HAL_Delay(1);
|
|
bat_21_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_21_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_22_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_22_set(0);
|
|
HAL_Delay(1);
|
|
bat_22_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_22_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
double bat_23_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_23_set(0);
|
|
HAL_Delay(1);
|
|
bat_23_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_23_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3; // v = (adc/4096) * 2 * 3.3
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
|
|
double bat_24_voltage(void)
|
|
{
|
|
double voltage = -1;
|
|
/*
|
|
for(unsigned char i = 0; i< BAT_INJECT_TIMES; i++)
|
|
{
|
|
bat_24_set(0);
|
|
HAL_Delay(1);
|
|
bat_24_set(1);
|
|
HAL_Delay(1);
|
|
}
|
|
*/
|
|
//设置成0,接通电容和运放
|
|
bat_24_set(0);
|
|
|
|
//读取电压
|
|
uint32_t value = adc_value(ADC_BAT_SINGLE);
|
|
|
|
|
|
//计算电压
|
|
voltage = (value /2048.0) * 3.3;
|
|
|
|
|
|
//返回
|
|
return voltage;
|
|
}
|
|
|
|
|
|
//读取电流
|
|
|
|
|
|
|
|
|
|
//fifo
|
|
|
|
UART_RX_FIFO_t uart1_TTL_1_rx;
|
|
UART_TX_FIFO_t uart1_TTL_1_tx;
|
|
|
|
|
|
UART_RX_FIFO_t uart2_RS232_1_rx;
|
|
UART_TX_FIFO_t uart2_RS232_1_tx;
|
|
|
|
UART_RX_FIFO_t uart4_RS232_2_rx;
|
|
UART_TX_FIFO_t uart4_RS232_2_tx;
|
|
|
|
UART_RX_FIFO_t uart5_RS485_1_rx;
|
|
UART_TX_FIFO_t uart5_RS485_1_tx;
|
|
|
|
|
|
void init_uart_fifos(void)
|
|
{
|
|
/*
|
|
|
|
#if UART1_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&uart1_TTL_1_rx, "UART1RX", &huart1, UART1_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&uart1_TTL_1_rx);
|
|
#endif
|
|
#if UART1_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&uart1_TTL_1_tx, "UART1TX", &huart1, UART1_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&uart1_TTL_1_tx);
|
|
#endif
|
|
|
|
|
|
#if UART2_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&uart2_RS232_1_rx, "UART2RX", &huart2, UART2_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&uart2_RS232_1_rx);
|
|
#endif
|
|
#if UART2_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&uart2_RS232_1_tx, "UART2TX", &huart2, UART2_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&uart2_RS232_1_tx);
|
|
#endif
|
|
|
|
|
|
#if UART4_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&uart4_RS232_2_rx, "UART4RX", &huart4, UART4_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&uart4_RS232_2_rx);
|
|
#endif
|
|
#if UART4_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&uart4_RS232_2_tx, "UART4TX", &huart4, UART4_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&uart4_RS232_2_tx);
|
|
#endif
|
|
|
|
|
|
#if UART5_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&uart5_RS485_1_rx, "UART5RX", &huart5, UART5_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&uart5_RS485_1_rx);
|
|
#endif
|
|
#if UART5_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&uart5_RS485_1_tx, "UART5TX", &huart5, UART5_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&uart5_RS485_1_tx);
|
|
#endif
|
|
|
|
|
|
*/
|
|
}
|
|
|
|
|
|
int fputc(int ch, FILE *f)
|
|
{
|
|
unsigned char buff;
|
|
//UART_TX_FIFO_write(&debug_tx, &buff, 1);
|
|
return (ch);
|
|
}
|
|
|
|
|
|
|
|
|
|
|