#include "main.h" #include "app.h" #include "flow.h" #include "sys.h" #include "delay.h" #include "board.h" extern __IO app_t app; extern motor_t *motor; uint8_t detect_result = ST_DEV_NORMAL; static struct flow fl_adc_inspection; // ADC static struct flow fl_systom_inspection; // 系统 static struct flow idle_tm; // 空闲任务 static uint8_t adc_inspection(struct flow *fl) { FL_HEAD(fl); for (;;) { // 扭力 app.adc.torsion_in13.original_value = get_sensor_adc(GET_TORSION_VALUE); app.adc.torsion_in13.calibration_value = torsion_detect(); sensor_adc[GET_TORSION_VALUE] = S2B_UINT16(app.adc.torsion_in13.original_value); // 输入压力 app.adc.ipressure_in7.original_value = get_sensor_adc(GET_INPUT_PRESS_VALUE); app.adc.ipressure_in7.calibration_value = pressure_detect(GET_INPUT_PRESS_VALUE); sensor_adc[GET_INPUT_PRESS_VALUE] = S2B_UINT16(app.adc.ipressure_in7.original_value); // 输出压力 app.adc.opressure_in9.original_value = get_sensor_adc(GET_OUTPUT_PRESS_VALUE); app.adc.opressure_in9.calibration_value = pressure_detect(GET_OUTPUT_PRESS_VALUE); sensor_adc[GET_OUTPUT_PRESS_VALUE] = S2B_UINT16(app.adc.opressure_in9.original_value); // 输入流量 app.adc.iflow_in8.original_value = get_sensor_adc(GET_INPUT_FLOW_VALUE); app.adc.iflow_in8.calibration_value = flow_detect(GET_INPUT_FLOW_VALUE); sensor_adc[GET_INPUT_FLOW_VALUE] = S2B_UINT16(app.adc.iflow_in8.original_value); // 输出流量 app.adc.oflow_in10.original_value = get_sensor_adc(GET_OUTPUT_FLOW_VALUE); app.adc.oflow_in10.calibration_value = flow_detect(GET_OUTPUT_FLOW_VALUE); sensor_adc[GET_OUTPUT_FLOW_VALUE] = S2B_UINT16(app.adc.oflow_in10.original_value); FL_LOCK_DELAY(fl, FL_CLOCK_100MSEC); /* 延时100毫秒 */ } FL_TAIL(fl); } static uint8_t systom_inspection(struct flow *fl) { FL_HEAD(fl); for (;;) { host_rx_msg_deal(); FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); /* 延时10毫秒 */ } FL_TAIL(fl); } static uint8_t idle_inspection(struct flow *fl) { FL_HEAD(fl); for (;;) { test_process(); cpu_percent = scheduler_time_occupancy_get(1000); FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); } FL_TAIL(fl); } void flow_start(void) { adc_inspection(&fl_adc_inspection); // adc检测 systom_inspection(&fl_systom_inspection); // 系统检测 idle_inspection(&idle_tm); // 空闲任务用来计算CPU占用率 } void flow_init(void) { FL_INIT(&fl_adc_inspection); FL_INIT(&fl_systom_inspection); FL_INIT(&idle_tm); }