FIX | 调试修改

master
yuliang 4 months ago
parent 2d074ebdac
commit 54303ca3c8

@ -51,7 +51,12 @@ typedef struct
uint16_t vbat; // 电池电压,单位:mv uint16_t vbat; // 电池电压,单位:mv
uint16_t vin; // 工作电压,单位:mv uint16_t vin; // 工作电压,单位:mv
int16_t temperature; // 设备温度,单位:0.1℃ int16_t temperature; // 设备温度,单位:0.1℃
uint8_t reserve[2]; uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态
uint8_t reserve[3];
uint32_t run; // 设备持续运行时间
uint32_t time; // 设备时间
uint32_t elec[8]; // 工频电流有效值mA uint32_t elec[8]; // 工频电流有效值mA
int16_t elec_defect_max[4]; // 缺陷电流最大值mA int16_t elec_defect_max[4]; // 缺陷电流最大值mA
uint32_t elec_fault[8]; // 故障工频电流有效值mA uint32_t elec_fault[8]; // 故障工频电流有效值mA

@ -101,6 +101,7 @@
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器 #define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器 #define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
#define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器 #define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器
#define DAU_REG_ADDR_GFTTHR 0x0208 // 全局控制寄存器 - 故障电流触发间隔寄存器
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器 #define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器

@ -44,8 +44,8 @@
/* Define --------------------------------------------------------------------*/ /* Define --------------------------------------------------------------------*/
/* 版本信息. */ /* 版本信息. */
#define VERSION_MAJOR 128 #define VERSION_MAJOR 1
#define VERSION_MINOR 102 #define VERSION_MINOR 3
#define COMPILE_TIME (__DATE__" "__TIME__) #define COMPILE_TIME (__DATE__" "__TIME__)
#define DEV_CAPABILITY_LEN 16 #define DEV_CAPABILITY_LEN 16
@ -142,7 +142,8 @@ typedef struct
{ {
uint8_t bitmap; uint8_t bitmap;
uint8_t is_voltage_adj; uint8_t is_voltage_adj;
uint16_t elec; uint8_t turns;
uint8_t elec;
} dev_adj_power_t; } dev_adj_power_t;
/* 校准参数信息. */ /* 校准参数信息. */

@ -100,10 +100,13 @@ typedef struct
uint16_t vin; // 工作电压, 单位: mv uint16_t vin; // 工作电压, 单位: mv
uint16_t vbat; // 电池电压, 单位: mv uint16_t vbat; // 电池电压, 单位: mv
uint16_t vsc; // 超级电容电压, 单位: mv uint16_t vsc; // 超级电容电压, 单位: mv
uint16_t defect[4]; // 缺陷电流最大值 mA uint16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A
uint16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA
uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA
uint8_t col_flag; // DAU 采集标志位 uint8_t col_flag; // DAU 采集标志位
uint8_t reserve[3]; // Reserve uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态
} fd_data_t; } fd_data_t;
typedef struct typedef struct

@ -39,6 +39,7 @@
#include "math.h" #include "math.h"
#include "usart.h" #include "usart.h"
#include "rtc.h"
#include "common.h" #include "common.h"
#include "dev_config.h" #include "dev_config.h"
@ -94,7 +95,8 @@ typedef struct
uint16_t defect_thr; // 隐患阈值, 单位: mA. uint16_t defect_thr; // 隐患阈值, 单位: mA.
uint16_t fault_thr; // 故障阈值, 单位: A. uint16_t fault_thr; // 故障阈值, 单位: A.
uint8_t APN[DEV_APN_LEN]; // APN 名字. uint8_t APN[DEV_APN_LEN]; // APN 名字.
uint8_t reserve[20]; uint16_t fault_inr; // 故障间隔, 单位: s.
uint8_t reserve[18];
} debug_config_t; } debug_config_t;
/* Private macro -------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/
@ -113,6 +115,10 @@ static dev_adj_defect_zero_t debug_adj_defect;
dev_adj_fault_zero_t debug_adj_fault; dev_adj_fault_zero_t debug_adj_fault;
dev_adj_power_t debug_adj_power; dev_adj_power_t debug_adj_power;
static RTC_DateTypeDef debug_date;
static RTC_TimeTypeDef debug_time;
static struct tm debug_tm;
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/ /* Internal functions --------------------------------------------------------*/
/* 报文头校验. */ /* 报文头校验. */
@ -469,9 +475,7 @@ static void _debug_pkt_update_fpga(void)
mul_head_t *m_head = (mul_head_t*)(debug_buf.buf + sizeof(proto_head_t)); mul_head_t *m_head = (mul_head_t*)(debug_buf.buf + sizeof(proto_head_t));
uint8_t *data = (uint8_t*)(debug_buf.buf + sizeof(proto_head_t) + sizeof(mul_head_t)); uint8_t *data = (uint8_t*)(debug_buf.buf + sizeof(proto_head_t) + sizeof(mul_head_t));
uint32_t addr = TFTP_APP_ADDRESS; uint32_t addr = TFTP_APP_ADDRESS;
uint32_t app_len = 0;
uint32_t *crc = NULL; uint32_t *crc = NULL;
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
/* index 为 0 表示是首保, 需要擦除 FLASH. */ /* index 为 0 表示是首保, 需要擦除 FLASH. */
if (0 == m_head->index) if (0 == m_head->index)
@ -510,10 +514,9 @@ static void _debug_pkt_update_fpga(void)
if(m_head->len < DEBUG_FLASH_BUF_SIZE) if(m_head->len < DEBUG_FLASH_BUF_SIZE)
{ {
/* 校验数据. */ /* 校验数据. */
app_len = addr - TFTP_APP_ADDRESS + m_head->len;
dau_ctrl.update_flag = TRUE; dau_ctrl.update_flag = TRUE;
dau_ctrl.update_len = app_len; dau_ctrl.update_len = addr - TFTP_APP_ADDRESS + m_head->len;
dau_ctrl.update_rt = DAU_UPD_NONE; dau_ctrl.update_rt_dbg = DAU_UPD_NONE;
} }
/* 封装报文头. */ /* 封装报文头. */
@ -1274,6 +1277,20 @@ static void _debug_pkt_data_get(void)
data->temperature = ADC_ctrl.ADCi_temp; data->temperature = ADC_ctrl.ADCi_temp;
data->vbat = ADC_ctrl.ADCi_vbat; data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin; data->vin = ADC_ctrl.ADCi_vin;
HAL_RTC_GetTime(&hrtc, &debug_time, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &debug_date, RTC_FORMAT_BIN);
debug_tm.tm_year = debug_date.Year + 100;
debug_tm.tm_mon = debug_date.Month - 1;
debug_tm.tm_mday = debug_date.Date;
debug_tm.tm_hour = debug_time.Hours;
debug_tm.tm_min = debug_time.Minutes;
debug_tm.tm_sec = debug_time.Seconds;
data->time = mktime(&debug_tm);
data->run = HAL_GetTick() / 1000;
data->state_wir = wl_ctrl.state;
data->is_bat_charge = st_data.is_bat_charge;
data->is_utc_valid = dau_ctrl.is_utc_valid;
for(i = 0; i < DAU_PORT_POWER_CNT; i++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{ {
data->elec[i] = dau_ctrl.reg_elec[i]; data->elec[i] = dau_ctrl.reg_elec[i];
@ -1494,7 +1511,7 @@ static void _debug_pkt_adj_defect(void)
continue; continue;
} }
temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i]; temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i];
temp = 3276; //temp = 3276;
dev_config.defect_adj[i] = debug_adj_defect.defect_elec * 32768 / temp; dev_config.defect_adj[i] = debug_adj_defect.defect_elec * 32768 / temp;
} }
@ -1834,7 +1851,7 @@ static void _debug_pkt_update_fpga_result()
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(int32_t), DEBUG_CT_PRV_REPLY); _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(int32_t), DEBUG_CT_PRV_REPLY);
head->cmd_type = DEBUG_CT_PRV_REPLY; head->cmd_type = DEBUG_CT_PRV_REPLY;
head->cmd = DEBUG_PRV_UPDATE_RT; head->cmd = DEBUG_PRV_UPDATE_RT;
*res = (dau_ctrl.update_rt != DAU_UPD_OK); *res = (dau_ctrl.update_rt_dbg != DAU_UPD_OK);
/* 计算校验和. */ /* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len); crc = (uint32_t*)(debug_buf.buf + head->len);
@ -2045,10 +2062,10 @@ void debug_start(void)
{ {
common_watchdog_set(COM_WDG_CLI); common_watchdog_set(COM_WDG_CLI);
if (dau_ctrl.update_rt == DAU_UPD_OK) if (dau_ctrl.update_rt_dbg != DAU_UPD_NONE)
{ {
_debug_pkt_update_fpga_result(); _debug_pkt_update_fpga_result();
dau_ctrl.update_rt = DAU_UPD_NONE; dau_ctrl.update_rt_dbg = DAU_UPD_NONE;
} }
/* 开启串口空闲中断 DMA 收包. 注意这里会收到空闲中断, DMA 收一半中断, 全收中断, 注意中断处理. */ /* 开启串口空闲中断 DMA 收包. 注意这里会收到空闲中断, DMA 收一半中断, 全收中断, 注意中断处理. */

@ -285,15 +285,22 @@ static void _dau_data_save(void)
fd_data.vbat = ADC_ctrl.ADCi_vbat; fd_data.vbat = ADC_ctrl.ADCi_vbat;
fd_data.vin = ADC_ctrl.ADCi_vin; fd_data.vin = ADC_ctrl.ADCi_vin;
fd_data.vsc = ADC_ctrl.ADCi_vsc; fd_data.vsc = ADC_ctrl.ADCi_vsc;
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{
fd_data.fault[i] = dau_ctrl.reg_port_state.FMAX[i];
}
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{ {
fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i]; fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i];
} }
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{ {
fd_data.elec[i] = dau_ctrl.reg_elec[i]; fd_data.elec[i] = dau_ctrl.reg_elec[i];
} }
fd_data.col_flag = dau_ctrl.col_flag; fd_data.col_flag = dau_ctrl.col_flag;
fd_data.is_bat_charge = st_data.is_bat_charge;
fd_data.is_utc_valid = dau_ctrl.is_utc_valid;
fd_data.state_wir = wl_ctrl.state;
fd_write(&fd_data); fd_write(&fd_data);
} }
@ -312,6 +319,9 @@ int32_t _dau_update(void)
uint32_t addr = TFTP_APP_ADDRESS; uint32_t addr = TFTP_APP_ADDRESS;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 校验报文. */
E_RETURN(debug_app_check(TFTP_APP_ADDRESS, app_len, 3));
/* 发送升级数据 */ /* 发送升级数据 */
while(1) while(1)
{ {
@ -840,6 +850,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
return HAL_OK; return HAL_OK;
} }
flash_log_write(FLASH_LOG_TYPE_WARNING, "Fhault triggering!\r\n");
/* 采集波形 */ /* 采集波形 */
E_RETURN(_dau_wave_col_fault()); E_RETURN(_dau_wave_col_fault());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT)); E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
@ -847,6 +859,7 @@ int32_t _dau_wave_col_trigger_by_fault(void)
/* 置标志位 */ /* 置标志位 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
_dau_data_save();
#if 1 #if 1
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
@ -941,9 +954,9 @@ int32_t _dau_wave_col_trigger_by_reg(void)
_dau_power_calculate(DAU_SOURCE_REG); _dau_power_calculate(DAU_SOURCE_REG);
/* 置标志位, 保存数据 */ /* 置标志位, 保存数据 */
_dau_data_save();
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
dau_ctrl.col_time = tick; dau_ctrl.col_time = tick;
_dau_data_save();
#if 0 #if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
@ -1076,7 +1089,7 @@ static void _dau_init(void)
/* 触发阈值 */ /* 触发阈值 */
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i]; //*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
*temp = 0; *temp = 0x7fff;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)); _dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
osDelay(500); osDelay(500);
/* 开启 */ /* 开启 */
@ -1109,13 +1122,13 @@ static void _dau_start(void *argument)
} }
/* utc 对时处理 */ /* utc 对时处理 */
//_dau_utc(); _dau_utc();
/* 故障电流采集 */ /* 故障电流采集 */
_dau_wave_col_trigger_by_fault(); _dau_wave_col_trigger_by_fault();
/* 循环工频缺陷电流采集 */ /* 循环工频缺陷电流采集 */
//_dau_wave_col_trigger_by_reg(); _dau_wave_col_trigger_by_reg();
/* 处理升级 */ /* 处理升级 */
if (dau_ctrl.update_flag) if (dau_ctrl.update_flag)
@ -1349,7 +1362,7 @@ static void _dau_adj_start(void *argument)
/* 读取最大值. */ /* 读取最大值. */
_dau_reg_read_port_state(); _dau_reg_read_port_state();
/* 开启 */ /* 关闭 */
osDelay(500); osDelay(500);
*temp = 0; *temp = 0;
_dau_reg_write(0xf, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));

@ -589,13 +589,24 @@ void dev_config_defaults_set(void)
_dev_config_mutex_lock(); _dev_config_mutex_lock();
/* 配置初始化. */ /* 默认配置下发 */
_dev_config_default_set(); snprintf(dev_config.host, DEV_NAME_LEN, "%s", DEV_DEFAULT_HOST);
dev_config.collect_interval = 10;
dev_config.keepalive = 5;
dev_config.power_threshold = 5;
dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");
_dev_config_save(CONFIG_ADDRESS);
_dev_config_save(CONFIG_ADDRESS_BAK);
flash_log_write(FLASH_LOG_TYPE_INFO, "Config default system reset!\r\n"); flash_log_write(FLASH_LOG_TYPE_INFO, "Config default system reset!\r\n");
common_sys_set(COM_SYS_RESET, (void*)&reset_delay); common_sys_set(COM_SYS_RESET, (void*)&reset_delay);
_dev_config_mutex_unlock(); _dev_config_mutex_unlock();
return;
} }
/* 保存配置文件. */ /* 保存配置文件. */

@ -1298,7 +1298,6 @@ static void _wl_4G_send_realdata(void)
wl_proto_realdata_t *data = (wl_proto_realdata_t*)(wl_ctrl.dma_tx_buf + sizeof(proto_head_t)); wl_proto_realdata_t *data = (wl_proto_realdata_t*)(wl_ctrl.dma_tx_buf + sizeof(proto_head_t));
uint32_t *crc = NULL; uint32_t *crc = NULL;
uint8_t i = 0; uint8_t i = 0;
time_t temp = 0;
/* 封装报文头. */ /* 封装报文头. */
_wl_4G_head_init(sizeof(proto_head_t) + sizeof(wl_proto_realdata_t), DEBUG_CT_PRV_REPLY, DEBUG_PRV_REALDATA, wl_ctrl.pkt_id); _wl_4G_head_init(sizeof(proto_head_t) + sizeof(wl_proto_realdata_t), DEBUG_CT_PRV_REPLY, DEBUG_PRV_REALDATA, wl_ctrl.pkt_id);
@ -1317,8 +1316,7 @@ static void _wl_4G_send_realdata(void)
wl_tm.tm_hour = wl_time.Hours; wl_tm.tm_hour = wl_time.Hours;
wl_tm.tm_min = wl_time.Minutes; wl_tm.tm_min = wl_time.Minutes;
wl_tm.tm_sec = wl_time.Seconds; wl_tm.tm_sec = wl_time.Seconds;
temp = mktime(&wl_tm); data->utc = mktime(&wl_tm);
data->utc = temp;
data->run_time = HAL_GetTick() / 1000; data->run_time = HAL_GetTick() / 1000;
for(i = 0; i < DAU_PORT_POWER_CNT; i++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)

File diff suppressed because it is too large Load Diff

@ -86,11 +86,11 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus> <RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows> <MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>5A0B00000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100000A0B000055840000030000000E810000080000000B810000110000000584000003000000108400001F00000046810000010000000D81000007000000</CommandsUsage> <CommandsUsage>690B00000E00598400000200000040E1000002000000108600001000000056840000020000005F860000070000000F810000010000000C810000180B000055840000030000000E810000080000000B810000110000000584000003000000468100000100000010840000200000000D81000007000000</CommandsUsage>
</MFCToolBarParameters> </MFCToolBarParameters>
<CommandManager> <CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages> <CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>
<MenuUserImages>3700048400004C00000015810000250000002CE1000043000000048100001C000000268100002D00000007E100003B0000002392000000000000318400005300000004E10000390000005F86000034000000208100002B0000000F8100002300000001E10000360000000D8000001700000023E100003D0000000C81000020000000068400004E00000019820000150000001781000027000000038400004B00000016820000130000004A81000047000000148100002400000000840000480000002BE100004200000000810000190000000E840000500000003084000052000000449200001000000003E10000380000001F9200000D0000002F8200001600000025E100003F0000001F8100002A0000000E8100002200000000E10000350000002D9200000F00000022E100003C0000000B8100001F00000041E1000045000000058400004D0000001882000014000000D18400000C0000001681000026000000028400004A0000004981000046000000058100001D0000001084000051000000328400005400000005E100003A000000518400005600000002E10000370000000A8400004F0000000D810000210000002C9200000E000000</MenuUserImages> <MenuUserImages>3700048400004C000000268100002D000000048100001C0000002CE100004300000015810000250000003184000053000000239200000000000007E100003B0000000F81000023000000208100002B0000005F8600003400000004E10000390000000C8100002000000023E100003D0000000D8000001700000001E10000360000001982000015000000068400004E0000004A810000470000001682000013000000038400004B00000017810000270000002BE100004200000000840000480000001481000024000000449200001000000030840000520000000E8400005000000000810000190000000E810000220000001F8100002A00000025E100003F0000002F820000160000001F9200000D00000003E10000380000000B8100001F00000022E100003C0000002D9200000F00000000E1000035000000D18400000C0000001882000014000000058400004D00000041E1000045000000058100001D0000004981000046000000028400004A000000168100002600000032840000540000001084000051000000518400005600000005E100003A0000000D810000210000000A8400004F00000002E10000370000002C9200000E000000</MenuUserImages>
</CommandManager> </CommandManager>
<Pane-59393> <Pane-59393>
<ID>0</ID> <ID>0</ID>
@ -121,7 +121,7 @@
<IarPane-34051 /> <IarPane-34051 />
<Pane--1> <Pane--1>
<ID>4294967295</ID> <ID>4294967295</ID>
<RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat> <RectRecentFloat>0083FFFFB985FFFF808AFFFFDE86FFFF</RectRecentFloat>
<RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked> <RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
@ -360,7 +360,7 @@
<IsVisible>1</IsVisible> <IsVisible>1</IsVisible>
</BasePane-34063> </BasePane-34063>
<DockingManager-256> <DockingManager-256>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000B5020000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000B502000080070000B90200000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E65008000000100000000000000D002000080070000F503000000000000B902000080070000DE030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers> <DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000B5020000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000B502000080070000B90200000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E6500800000010000000083FFFFB985FFFF808AFFFFDE86FFFF00000000B902000080070000DE030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
</DockingManager-256> </DockingManager-256>
<MFCToolBar-34049> <MFCToolBar-34049>
<Name>CMSIS-Pack</Name> <Name>CMSIS-Pack</Name>
@ -381,7 +381,7 @@
</BasePane-34049> </BasePane-34049>
<MFCToolBar-34050> <MFCToolBar-34050>
<Name>Main</Name> <Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000000028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons> <Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000000003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34050> </MFCToolBar-34050>
<Pane-34050> <Pane-34050>
<ID>34050</ID> <ID>34050</ID>

Loading…
Cancel
Save