288 lines
5.2 KiB
C
288 lines
5.2 KiB
C
|
|
#include "FreeRTOS.h"
|
|
#include "cmsis_os.h"
|
|
#include "drv_uart.h"
|
|
#include "middle/ParsePack.h"
|
|
|
|
|
|
#include "monitor_task.h"
|
|
#include "device_task.h"
|
|
|
|
#include "drv_power.h"
|
|
#include "drv_relay.h"
|
|
#include "drv_fan.h"
|
|
|
|
#include "main_task.h"
|
|
|
|
|
|
|
|
|
|
uint32_T mode;
|
|
int32_T bat_type;
|
|
int32_T bat_num;
|
|
int32_T run_state;
|
|
real32_T cmd_current;
|
|
real32_T bat_capacity;
|
|
|
|
|
|
uint32_t getParam = 0;
|
|
|
|
uint32_t NormalTestMode = 0;//0 normal 1 test
|
|
|
|
|
|
uint32_t send_tick = 0;
|
|
|
|
void StartMonitorTask(void * argument)
|
|
{
|
|
uint8_t buff[256];
|
|
uint16_t len;
|
|
|
|
|
|
|
|
|
|
|
|
init_uart_fifos();
|
|
|
|
|
|
|
|
|
|
for(;;)
|
|
{
|
|
osDelay(5);
|
|
|
|
send_tick++;
|
|
|
|
|
|
|
|
//监控任务
|
|
|
|
//执行UI工作,执行状态监控工作
|
|
len = UART_RX_FIFO_read(&hub_rx, buff, sizeof(buff));
|
|
|
|
if(len)
|
|
{
|
|
/*
|
|
int rst = -1;
|
|
for(int i = 0;i<len;i++)
|
|
{
|
|
rst = Parser_char(&parser[index], buff[i]);
|
|
|
|
switch(rst)
|
|
{
|
|
case 0://设置系统
|
|
{
|
|
uint32_t cmd;
|
|
uint32_t value;
|
|
|
|
union { uint32_t W; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
cmd = src.W;
|
|
|
|
src.B[0] = parser.buff[4];
|
|
src.B[1] = parser.buff[5];
|
|
src.B[2] = parser.buff[6];
|
|
src.B[3] = parser.buff[7];
|
|
|
|
value = src.W;
|
|
|
|
if(cmd != 0)
|
|
{
|
|
NormalTestMode = 1;
|
|
}
|
|
|
|
switch(cmd)
|
|
{
|
|
case 0:
|
|
{
|
|
NormalTestMode = 0x00;//normal
|
|
}break;
|
|
case 1:
|
|
{
|
|
power_set(0,value);
|
|
}break;
|
|
case 2:
|
|
{
|
|
relay_set(0,value);
|
|
}break;
|
|
case 3:
|
|
{
|
|
relay_set(1,value);
|
|
}break;
|
|
case 4:
|
|
{
|
|
fan_set(value);
|
|
}break;
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
case 1://设置参数
|
|
{
|
|
union { uint32_t W; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
|
|
getParam = src.W;
|
|
|
|
}break;
|
|
case 0x02://电压P
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
voltage_p = src.F;
|
|
}break;
|
|
case 0x03://电压I
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
voltage_i = src.F;
|
|
}break;
|
|
case 0x04://电压d
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
voltage_d = src.F;
|
|
}break;
|
|
case 0x05://电流p
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
current_p = src.F;
|
|
}break;
|
|
case 0x06://电流I
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
current_i = src.F;
|
|
}break;
|
|
case 0x07://电流d
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
current_d = src.F;
|
|
}break;
|
|
case 0x10://设置运行模式
|
|
{
|
|
union { uint32_t W; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
mode = src.W;
|
|
}break;
|
|
case 0x11://设置运行状态
|
|
{
|
|
union { int32_t w; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
run_state = src.w;
|
|
}break;
|
|
case 0x12://设置电池数量
|
|
{
|
|
union { int32_t w; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
bat_num = src.w;
|
|
}break;
|
|
case 0x13://电池类型
|
|
{
|
|
union { int32_t w; uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
bat_type = src.w;
|
|
}break;
|
|
case 0x14://电池充电电流
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
cmd_current = src.F;
|
|
}break;
|
|
case 0x15://电池容量
|
|
{
|
|
union { float F;uint8_t B[4];}src;
|
|
|
|
src.B[0] = parser.buff[0];
|
|
src.B[1] = parser.buff[1];
|
|
src.B[2] = parser.buff[2];
|
|
src.B[3] = parser.buff[3];
|
|
|
|
bat_capacity = src.F * 0.001;//Ah
|
|
}break;
|
|
}
|
|
|
|
}*/
|
|
}
|
|
|
|
//=======================周期消息================================
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|