From 801c188a5d178b7ff16f7bd0b9fd6581d9a6d154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zeng=20wei=20=28=E6=9B=BE=E5=A8=81=29?= Date: Mon, 25 Mar 2024 09:42:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=BC=8F=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HARDWARE/PID.c | 44 +++++----- HARDWARE/PID.h | 9 ++ HARDWARE/rs485.c | 131 ++++++++++++------------------ USER/control.uvguix.Administrator | 10 +-- USER/control.uvoptx | 2 +- USER/main.c | 2 +- 6 files changed, 92 insertions(+), 106 deletions(-) diff --git a/HARDWARE/PID.c b/HARDWARE/PID.c index e953021..8d80cc4 100644 --- a/HARDWARE/PID.c +++ b/HARDWARE/PID.c @@ -31,6 +31,17 @@ void PID_Init() pid.pwmcycle = 200; // pwm cycle 200 pid.OUT0 = 1; pid.C1ms = 0; + + pid.hp = 2.4; + pid.hi = 0.02; + pid.hd = 0; + + pid.cp = 9.6; + pid.ci = 0; + pid.cd = 0; + + pid.h_percent = 0; + pid.c_speed = 0; } /** @@ -125,9 +136,6 @@ void PID_Calc() // pid calc { int min_speed_count = 1800; int max_speed_count = 4800; - float pid_hp = 2.4; - float pid_cp = 9.6; - float pid_hi = 0.08; int p_hb = 52; int p_cb = 33; float DelEk; // The difference between the last two deviations @@ -141,8 +149,8 @@ void PID_Calc() // pid calc float delta_t = pid.set_tem - pid.now_tem; - int p_c = calc_cp(delta_t, p_cb, pid_cp); - int speed_count = calc_compressor_speed(p_c, min_speed_count, max_speed_count); + int p_c = calc_cp(delta_t, p_cb, pid.cp); + pid.c_speed = calc_compressor_speed(p_c, min_speed_count, max_speed_count); pid.Ek = pid.set_tem - pid.now_tem; pid.Pout = pid.Kp * pid.Ek; // Proportional output @@ -150,17 +158,17 @@ void PID_Calc() // pid calc pid.SEk += pid.Ek; // Total historical deviation // SEk limit, updated func - if (pid.SEk < - p_hb / pid_hi) { - pid.SEk = - p_hb / pid_hi; + if (pid.SEk < - p_hb / pid.hi) { + pid.SEk = - p_hb / pid.hi; } - if (speed_count == max_speed_count) { + if (pid.c_speed == max_speed_count) { pid.SEk = 0; } float Error_calc = pid.SEk; - if (Error_calc < - (p_hb + pid_hp * delta_t) / pid_hi) { - Error_calc = - (p_hb + pid_hp * delta_t) / pid_hi; + if (Error_calc < - (p_hb + pid.hp * delta_t) / pid.hi) { + Error_calc = - (p_hb + pid.hp * delta_t) / pid.hi; } - if (speed_count == max_speed_count) { + if (pid.c_speed == max_speed_count) { Error_calc = 0; } @@ -199,17 +207,13 @@ void PID_Calc() // pid calc pid.C1ms = 0; // heater percent - int heater_percent = calc_hp(delta_t, Error_calc, p_hb, pid_hp, pid_hi); + pid.h_percent = calc_hp(delta_t, Error_calc, p_hb, pid.hp, pid.hi); // close heater when compressor is running in full state - if (speed_count == max_speed_count) { - heater_percent = 0; + if (pid.c_speed == max_speed_count) { + pid.h_percent = 0; } - - // TODO:: temply, set Ki to speed count, Kd to heater_percent, use for data upload - pid.Ki = speed_count; - pid.Kd = heater_percent; - set_compressor_power(speed_count); - set_heater_power(heater_percent); + set_compressor_power(pid.c_speed); + set_heater_power(pid.h_percent); } diff --git a/HARDWARE/PID.h b/HARDWARE/PID.h index 8658f43..169d7a2 100644 --- a/HARDWARE/PID.h +++ b/HARDWARE/PID.h @@ -10,6 +10,15 @@ typedef struct Pid { float set_tem;// User settings float now_tem;// current temperature + + float hp; + float hi; + float hd; + int h_percent; + float cp; + float ci; + float cd; + int c_speed; float Kp; // 110 float Ki; // 0.001 diff --git a/HARDWARE/rs485.c b/HARDWARE/rs485.c index 6ef1135..3a4b3e4 100644 --- a/HARDWARE/rs485.c +++ b/HARDWARE/rs485.c @@ -4,10 +4,10 @@ #include "Relays.h" #include "myfreertos.h" -u8 prev_sendbuf[41] = {0xEE, 0xB5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF}; -u8 sendbuf[41] = {0xEE, 0xB5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF}; +u8 prev_sendbuf[49] = {0xEE, 0xB5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF}; +u8 sendbuf[49] = {0xEE, 0xB5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF}; u8 sendbuf_crc[20] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; extern u8 global_buffer[64]; @@ -384,10 +384,10 @@ void RS485_1_Send_Data_2(void) sendbuf[1] = 0xB5; sendbuf[2] = 0x05; - sendbuf[37] = 0xFF; - sendbuf[38] = 0xFC; - sendbuf[39] = 0xFF; - sendbuf[40] = 0xFF; + sendbuf[45] = 0xFF; + sendbuf[46] = 0xFC; + sendbuf[47] = 0xFF; + sendbuf[48] = 0xFF; // u8 a; if (T <= 1000 && T >= -1000) { @@ -430,87 +430,60 @@ void RS485_1_Send_Data_2(void) sendbuf[10] = blue_light2; sendbuf[11] = white_light1; sendbuf[12] = white_light2; - if (C <= 5000) - { - CO2_1 = (C & 0xFF00) >> 8; - CO2_1 = C & 0x00FF; - } - sendbuf[13] = CO2_1; - sendbuf[14] = CO2_2; - if (now_stage > 0 && now_stage < 7 && total[3 + 18 * (now_stage - 1)] < 24 && total[4 + 18 * (now_stage - 1)] < 60 && chour < 24 && cminute < 60) - { - sendbuf[15] = now_stage; // current state - sendbuf[16] = total[3 + 18 * (now_stage - 1)]; // stage hour - sendbuf[17] = total[4 + 18 * (now_stage - 1)]; // stage minute - sendbuf[18] = chour; // run hour - sendbuf[19] = cminute; // run minute - } - // now_stage = 1; - sendbuf[15] = now_stage; // current state - sendbuf[16] = total[3 + 18 * (now_stage - 1)]; // stage hour - sendbuf[17] = total[4 + 18 * (now_stage - 1)]; // stage minute - sendbuf[18] = chour; // run hour - sendbuf[19] = cminute; // run minute - sendbuf[20] = hot_clod_flag; // hot clod state - sendbuf[21] = humidity_flag; // humidity state - sendbuf[22] = ALARM; // ALARM state - - // sendbuf[23] = (int)pid.Kp / 256; // Kp 110 - // sendbuf[24] = (int)pid.Kp % 256; // Kp 110 - // sendbuf[25] = ((int)(pid.Ki * 100000)) / 256; // Ti 0.001 - // sendbuf[26] = ((int)(pid.Ki * 100000)) % 256; // Ti 0.001 - // sendbuf[27] = (int)pid.Kd / 256; // Td 340 - // sendbuf[28] = (int)pid.Kd % 256; // Td 340 - - // TODO::temp - sendbuf[23] = (int)(-pid.SEk) / 256; // SEk - sendbuf[24] = (int)(-pid.SEk) % 256; - sendbuf[25] = (int)pid.Ki / 256; // compressor speed - sendbuf[26] = (int)pid.Ki % 256; - sendbuf[27] = (int)pid.Kd / 256; // heater percent - sendbuf[28] = (int)pid.Kd % 256; - - // num = (((pid.OUT * 350) / pid.pwmcycle) - 1); - - int out1 = pid.OUT; - // speed count - int speed_count = out1 / 200.0 * (6000 - 1500) + 1500; - if (speed_count > 6000) - { - speed_count = 6000; - } - sendbuf[29] = (speed_count) / 256; - sendbuf[30] = (speed_count) % 256; - // sendbuf[29] = ((int)(pid.OUT * 1000)) / 256; - // sendbuf[30] = ((int)(pid.OUT * 1000)) % 256; + // if (C <= 5000) + // { + // CO2_1 = (C & 0xFF00) >> 8; + // CO2_1 = C & 0x00FF; + // } + sendbuf[13] = (C & 0xFF00) >> 8; + sendbuf[14] = C & 0x00FF; + sendbuf[15] = 0; // current state + sendbuf[16] = now_stage; // current state + sendbuf[17] = total[3 + 18 * (now_stage - 1)]; // stage hour + sendbuf[18] = total[4 + 18 * (now_stage - 1)]; // stage minute + sendbuf[19] = chour; // run hour + sendbuf[20] = cminute; // run minute + sendbuf[21] = 0; // hot clod state + sendbuf[22] = hot_clod_flag; // hot clod state + sendbuf[23] = 0; // humidity state + sendbuf[24] = humidity_flag; // humidity state + sendbuf[25] = 0; // ALARM state + sendbuf[26] = ALARM; // ALARM state + + sendbuf[27] = (int)pid.hp / 256; // Kp 110 + sendbuf[28] = (int)pid.hp % 256; // Kp 110 + sendbuf[29] = ((int)(pid.hi * 100000)) / 256; // Ti 0.001 + sendbuf[30] = ((int)(pid.hi * 100000)) % 256; // Ti 0.001 + sendbuf[31] = (int)pid.hd / 256; // Td 340 + sendbuf[32] = (int)pid.hd % 256; // Td 340 + sendbuf[33] = pid.h_percent / 256; // h_percent + sendbuf[34] = pid.h_percent % 256; // h_percent + + sendbuf[35] = (int)pid.cp / 256; // Kp 110 + sendbuf[36] = (int)pid.cp % 256; // Kp 110 + sendbuf[37] = ((int)(pid.ci * 100000)) / 256; // Ti 0.001 + sendbuf[38] = ((int)(pid.ci * 100000)) % 256; // Ti 0.001 + sendbuf[39] = (int)pid.cd / 256; // Td 340 + sendbuf[40] = (int)pid.cd % 256; // Td 340 + sendbuf[41] = pid.c_speed / 256; // h_percent + sendbuf[42] = pid.c_speed % 256; // h_percent + // bufcut_Init(sendbuf_crc, sendbuf, 3, 31); // GetCRC16(sendbuf_crc, 28, &crc_num1, &crc_num2); - - int tem_offset_10times = (int)(pid.tem_offset * 10); - - if (tem_offset_10times < 0) { - tem_offset_10times = (~(tem_offset_10times - 1)) & 0xFFFF; - } - sendbuf[31] = tem_offset_10times / 256; // tem offset - sendbuf[32] = tem_offset_10times % 256; - - sendbuf[33] = ((int)(pid.tem_threshold * 10)) / 256; // tem threshold - sendbuf[34] = ((int)(pid.tem_threshold * 10)) % 256; - - GetCRC16(sendbuf, 35, &crc_num1, &crc_num2); - sendbuf[35] = crc_num1; - sendbuf[36] = crc_num2; + GetCRC16(sendbuf, 43, &crc_num1, &crc_num2); + sendbuf[43] = crc_num1; + sendbuf[44] = crc_num2; // u8 tmpabc[] = {0xAA, 0xBB, 0xCC}; // RS485_1_Send_Data(tmpabc, 3); // only when modify happen, then send - if (cmp_str(prev_sendbuf, sendbuf, 41) != 0) { + if (cmp_str(prev_sendbuf, sendbuf, 49) != 0) { - RS485_1_Send_Data(sendbuf, 41); + RS485_1_Send_Data(sendbuf, 49); - cp_str_to_prev(prev_sendbuf, sendbuf, 41); + cp_str_to_prev(prev_sendbuf, sendbuf, 49); } } diff --git a/USER/control.uvguix.Administrator b/USER/control.uvguix.Administrator index 89240d3..5e11bd1 100644 --- a/USER/control.uvguix.Administrator +++ b/USER/control.uvguix.Administrator @@ -95,7 +95,7 @@ 0 1454 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B00000002000000010000005E453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C6D796672656572746F735C6D796672656572746F732E63000000000C6D796672656572746F732E6300000000FFDC7800FFFFFFFF52453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF55453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C5049442E6300000000055049442E6300000000F0A0A100FFFFFFFF55453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C5049442E6800000000055049442E6800000000BCA8E100FFFFFFFF58453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C52656C6179732E63000000000852656C6179732E63000000009CC1B600FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C73746D3332663130782E68000000000B73746D3332663130782E6800000000F7B88600FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C72733438352E63000000000772733438352E6300000000D9ADC200FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C77726974652E63000000000777726974652E6300000000A5C2D700FFFFFFFF6A453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C53544D3332463130785F46574C69625C7372635C73746D3332663130785F74696D2E63000000000F73746D3332663130785F74696D2E6300000000B3A6BE00FFFFFFFF59453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C573235513132382E630000000009573235513132382E6300000000EAD6A300FFFFFFFF62453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C6275696C645C4B65696C5C636F6E74726F6C2E6D6170000000000B636F6E74726F6C2E6D617000000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000010030000 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B00000002000000010000005E453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C6D796672656572746F735C6D796672656572746F732E63000000000C6D796672656572746F732E6300000000C5D4F200FFFFFFFF52453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF55453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C5049442E6300000000055049442E6300000000BECEA100FFFFFFFF55453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C5049442E6800000000055049442E6800000000F0A0A100FFFFFFFF58453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C52656C6179732E63000000000852656C6179732E6300000000BCA8E100FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C73746D3332663130782E68000000000B73746D3332663130782E68000000009CC1B600FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C72733438352E63000000000772733438352E6300000000F7B88600FFFFFFFF57453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C77726974652E63000000000777726974652E6300000000D9ADC200FFFFFFFF6A453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C53544D3332463130785F46574C69625C7372635C73746D3332663130785F74696D2E63000000000F73746D3332663130785F74696D2E6300000000A5C2D700FFFFFFFF59453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C48415244574152455C573235513132382E630000000009573235513132382E6300000000B3A6BE00FFFFFFFF62453A5CD6C7C4DCC5A9D2B520D6C7C4DCBBB7BEB3C6F8BAF2CFE45CD6C7C4DCC6F8BAF2C5E0D1F8CFE45CD6F7BFD8B0E55CB4FAC2EB5C636F6E74726F6C5F6672656572746F735C555345525C6275696C645C4B65696C5C636F6E74726F6C2E6D6170000000000B636F6E74726F6C2E6D617000000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000010030000 @@ -1722,7 +1722,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1767,16 +1767,16 @@ ../HARDWARE/PID.c - 0 + 17 115 - 141 + 130 1 0 ../HARDWARE/PID.h - 7 + 8 5 17 1 diff --git a/USER/control.uvoptx b/USER/control.uvoptx index 83b52e2..c51f18f 100644 --- a/USER/control.uvoptx +++ b/USER/control.uvoptx @@ -118,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U16004A002933353739303541 -O239 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) + -U16004A002933353739303541 -O239 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) 0 diff --git a/USER/main.c b/USER/main.c index b5ecba8..afedd62 100644 --- a/USER/main.c +++ b/USER/main.c @@ -28,7 +28,7 @@ int main(void) PWM3_Init(500 - 1, 720 - 1); TIM4_Init(10000 - 1, 7200 - 1); // 1s计数溢出,更新中断10000*7200/72M=1s,内含喂狗程序 iwdg_my_Init(5, 16000); // 不喂狗12s复位 - // RX_BUF_Init(); + RX_BUF_Init(); // GPIO_ResetBits(GPIOB,GPIO_Pin_0); // 红白蓝对应J10 J11 J12