From ace41bb5255d1475e08e615baaf6ba48f144d213 Mon Sep 17 00:00:00 2001 From: JIU JIALIN <2339061402@qq.com> Date: Fri, 29 Aug 2025 08:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=BF=87=E7=A8=8B=E4=B8=AD=E6=9C=89=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=A9=BA=E7=BC=BA=E7=9A=84=E9=97=AE=E9=A2=98=E6=98=AF?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E4=B8=AD?= =?UTF-8?q?=E6=96=AD=E4=B8=AD=E6=9C=89=E4=B8=80=E4=B8=AA=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=8E=BB=E5=B0=86=E6=95=B0=E5=80=BC=E4=BB=98?= =?UTF-8?q?=E7=BB=99=E4=B8=8A=E4=BD=8D=E6=9C=BA,=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=BA=86=E9=AB=98=E9=A2=91=E8=BD=AC=E4=BD=8E=E9=A2=91=E4=BC=9A?= =?UTF-8?q?=E5=81=9C=E4=B8=8D=E4=B8=8B=E6=9D=A5=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?,=E5=8E=9F=E5=9B=A0=E6=98=AF=E6=97=B6=E5=BA=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98,=E4=BF=AE=E6=94=B9TIM6=E5=92=8CTIM2=E7=9A=84=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E5=8F=AF=E4=BB=A5=E8=A7=A3=E5=86=B3,?= =?UTF-8?q?=E8=AE=A9TIM6=E5=85=88=E6=89=A7=E8=A1=8C=E5=AE=8C=E5=86=8D?= =?UTF-8?q?=E5=87=BA=E5=8F=91TIM2=E5=B0=B1=E5=8F=AF=E4=BB=A5=E9=81=BF?= =?UTF-8?q?=E5=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLSR/PLSR/Core/Inc/tim.h | 6 +- PLSR/PLSR/Core/Inc/usart.h | 3 - PLSR/PLSR/Core/Src/main.c | 2 +- PLSR/PLSR/Core/Src/tim.c | 106 ++- PLSR/PLSR/Core/Src/usart.c | 90 ++- PLSR/PLSR/EWARM/settings/test.1.dnx | 4 +- PLSR/PLSR/EWARM/test.1.dep | 1027 ++++++++++--------------- PLSR/PLSR/EWARM/test.1/Exe/test.1.sim | Bin 40626 -> 41376 bytes 8 files changed, 519 insertions(+), 719 deletions(-) diff --git a/PLSR/PLSR/Core/Inc/tim.h b/PLSR/PLSR/Core/Inc/tim.h index 450a884..7b35884 100644 --- a/PLSR/PLSR/Core/Inc/tim.h +++ b/PLSR/PLSR/Core/Inc/tim.h @@ -74,7 +74,8 @@ typedef enum { } PLSR_AccelAlgorithm_t; // 运行状态枚举 -typedef enum { +typedef enum +{ PLSR_STATE_IDLE = 0, //< 空闲状态 PLSR_STATE_ACCEL = 1, //< 加速状态 PLSR_STATE_CONST = 2, //< 匀速状态 @@ -83,7 +84,8 @@ typedef enum { } PLSR_RunState_t; // 路径状态枚举 -typedef enum { +typedef enum +{ PLSR_ROUTE_IDLE = 0, // 路径空闲 PLSR_ROUTE_RUNNING = 1, // 路径运行中 PLSR_ROUTE_COMPLETED = 2, // 路径完成 diff --git a/PLSR/PLSR/Core/Inc/usart.h b/PLSR/PLSR/Core/Inc/usart.h index c5f7418..5424f2b 100644 --- a/PLSR/PLSR/Core/Inc/usart.h +++ b/PLSR/PLSR/Core/Inc/usart.h @@ -44,8 +44,6 @@ extern UART_HandleTypeDef huart1; /* USER CODE BEGIN Private defines */ ///> ==================== 寄存器配置 ==================== -#define MODBUS_HOLDING_REG_COUNT 0x2500 ///> 保持寄存器数量 (40001-49999) -#define MODBUS_OFFSET 0x1000 #define MODBUS_FC_READ_HOLDING_REGS 0x03 ///> 读保持寄存器 #define MODBUS_FC_WRITE_REG 0x06 @@ -68,7 +66,6 @@ extern UART_HandleTypeDef huart1; typedef struct { uint8_t slave_address; ///> 从机地址 - uint16_t holding_regs[MODBUS_HOLDING_REG_COUNT]; ///> 保持寄存器 (40001-49999) } ModbusSlave_t; /* USER CODE END Private defines */ diff --git a/PLSR/PLSR/Core/Src/main.c b/PLSR/PLSR/Core/Src/main.c index 07ff71c..7cb5961 100644 --- a/PLSR/PLSR/Core/Src/main.c +++ b/PLSR/PLSR/Core/Src/main.c @@ -267,7 +267,7 @@ static void KeyTask(void *p_arg) // PLSR_Route_Start(&g_plsr_route); while (1) { - if(ModbusSlave.holding_regs[0x2000] == 1) //按下发送脉冲按钮后,向0x3000地址写1,松手写2,设置地址偏移为0x1000,所以这里值为0x2000 + if(FlashSave_Get_Holding_Register(MODBUS_ADDR_PULSE_SEND_BUTTON) == 1) //按下发送脉冲按钮后,向0x3000地址写1,松手写2 { startflag = 1; g_plsr_route.route_state = PLSR_ROUTE_IDLE; diff --git a/PLSR/PLSR/Core/Src/tim.c b/PLSR/PLSR/Core/Src/tim.c index 2caf9b9..e42bc32 100644 --- a/PLSR/PLSR/Core/Src/tim.c +++ b/PLSR/PLSR/Core/Src/tim.c @@ -19,6 +19,7 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "tim.h" +#include "flash_save.h" // 包含Modbus地址定义和寄存器操作函数 #include // 用于sinf函数 /* USER CODE BEGIN 0 */ @@ -315,7 +316,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* TIM2 interrupt Init */ - HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + HAL_NVIC_SetPriority(TIM2_IRQn, 4, 4); HAL_NVIC_EnableIRQ(TIM2_IRQn); /* USER CODE BEGIN TIM2_MspInit 1 */ @@ -330,7 +331,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) __HAL_RCC_TIM6_CLK_ENABLE(); // 配置TIM6中断 - HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 5, 5); + HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 3, 3); HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); /* USER CODE BEGIN TIM6_MspInit 1 */ @@ -851,8 +852,8 @@ static void PLSR_UpdateGlobalPulseCount(int32_t current_pulse_count) } // 将32位全局累加脉冲计数分解为两个16位寄存器(支持负数) int32_t signed_count = g_plsr_location; // 使用有符号数进行计算 - ModbusSlave.holding_regs[0x1000] = signed_count & 0xFFFF; // 低16位 - ModbusSlave.holding_regs[0x1001] = (signed_count >> 16) & 0xFFFF; // 高16位 + backup_data->holding_regs[73] = signed_count & 0xFFFF; + backup_data->holding_regs[74] = (signed_count >> 16) & 0xFFFF; } void PLSR_HandleSectionEnd(void) @@ -866,9 +867,10 @@ void PLSR_HandleSectionEnd(void) // 重置部分状态 g_plsr_route.current_part = PLSR_PART_COMPLETE; - if(g_plsr_route.current_section_num == g_plsr_route.section_num - && g_plsr_route.section[g_plsr_route.current_section_num - 1].next_section == 0) + if(g_plsr_route.current_section_num >= g_plsr_route.section_num + && g_plsr_route.section[g_plsr_route.current_section_num - 1].next_section == 0) { + // 最后一段完成,路径结束 PLSR_Route_Stop(&g_plsr_route); } else @@ -895,14 +897,13 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) // TIM2中断:负责段切换逻辑 if(htim->Instance == TIM2) { - // if(g_plsr_route.current_section_num >= g_plsr_route.section_num && - // g_plsr_route.current_part != PLSR_PART_1 && - // g_plsr_route.run_state == PLSR_STATE_DECEL) - // { - // PLSR_Route_PWM_Stop(); - // } - // else PLSR_Section_PWM_Stop(); - PLSR_Route_PWM_Stop(); + if(g_plsr_route.current_section_num >= g_plsr_route.section_num && + g_plsr_route.current_part != PLSR_PART_1 && + g_plsr_route.run_state == PLSR_STATE_DECEL) + { + PLSR_Route_PWM_Stop(); + } + else PLSR_Section_PWM_Stop(); if(g_plsr_route.part1_target_freq == g_plsr_route.section[g_plsr_route.current_section_num - 1].target_freq && g_plsr_route.current_part == 1) { @@ -1053,9 +1054,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) // 更新路由结构体的脉冲计数(使用原子操作保证一致性) g_plsr_route.pulse_count = current_pulse_count; + // 计算当前段的Modbus地址基址 + uint16_t current_seg_base_addr = MODBUS_ADDR_SEGMENT_BASE + ((g_plsr_route.current_section_num-1) * MODBUS_ADDR_SEGMENT_OFFSET); + g_plsr_route.section[g_plsr_route.current_section_num-1].target_freq = - (((uint32_t)ModbusSlave.holding_regs[256+(16*(g_plsr_route.current_section_num-1))]) | - (uint32_t)ModbusSlave.holding_regs[257+(16*(g_plsr_route.current_section_num-1))]<<16); + ((uint32_t)FlashSave_Get_Holding_Register(current_seg_base_addr + MODBUS_OFFSET_FREQ_LOW)) | + ((uint32_t)FlashSave_Get_Holding_Register(current_seg_base_addr + MODBUS_OFFSET_FREQ_HIGH) << 16); if(g_plsr_route.section[g_plsr_route.current_section_num-1].target_freq != g_plsr_current_target_freq && g_plsr_route.current_part != PLSR_PART_COMPLETE) @@ -1076,24 +1080,31 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) } +/** + * @brief 设置PLSR路径配置参数 + * @param[in,out] route 路径控制结构体指针 + * @note 使用Modbus地址映射表中的索引访问寄存器数据 + */ void PLSR_Route_Set(PLSR_RouteConfig_t* route) { - route->output_port = ModbusSlave.holding_regs[0]; - route->dir_port = ModbusSlave.holding_regs[1]; - route->ext_port = ModbusSlave.holding_regs[2]; - route->dir_delay = ModbusSlave.holding_regs[3]; - route->dir_logic = ModbusSlave.holding_regs[4]; - route->accel_config.accel_algorithm = ModbusSlave.holding_regs[5]; - route->mode = ModbusSlave.holding_regs[6]; //绝对/相对 - route->section_num = ModbusSlave.holding_regs[7]; //总段数 - route->start_section = ModbusSlave.holding_regs[8]; - route->default_freq = ModbusSlave.holding_regs[9]|ModbusSlave.holding_regs[10]<<16; - route->default_accel_time_ms = ModbusSlave.holding_regs[11]; - route->default_decel_time_ms = ModbusSlave.holding_regs[12]; - - // 新增:设置默认加减速时间 - route->default_accel_time_ms = ModbusSlave.holding_regs[11]; // 使用相同的加速时间 - route->default_decel_time_ms = ModbusSlave.holding_regs[12]; // 使用相同的减速时间 + /* 基本配置参数 - 使用Modbus地址访问 */ + route->output_port = FlashSave_Get_Holding_Register(MODBUS_ADDR_PULSE_OUTPUT_PIN); ///< 脉冲输出端子 + route->dir_port = FlashSave_Get_Holding_Register(MODBUS_ADDR_DIRECTION_OUTPUT_PIN); ///< 方向输出端子 + route->ext_port = FlashSave_Get_Holding_Register(MODBUS_ADDR_EXT_INPUT_PIN); ///< 外部输入端子 + route->dir_delay = FlashSave_Get_Holding_Register(MODBUS_ADDR_DIRECTION_DELAY_TIME); ///< 方向延时时间 + route->dir_logic = FlashSave_Get_Holding_Register(MODBUS_ADDR_DIRECTION_LOGIC); ///< 方向逻辑 + route->accel_config.accel_algorithm = FlashSave_Get_Holding_Register(MODBUS_ADDR_ACCEL_DECEL_MODE); ///< 加减速算法 + route->mode = FlashSave_Get_Holding_Register(MODBUS_ADDR_RUN_MODE); ///< 运行模式(绝对/相对) + route->section_num = FlashSave_Get_Holding_Register(MODBUS_ADDR_TOTAL_SEGMENTS); ///< 总段数 + route->start_section = FlashSave_Get_Holding_Register(MODBUS_ADDR_START_SEGMENT); ///< 起始段 + + /* 默认频率(32位) = 低16位 | (高16位 << 16) */ + route->default_freq = ((uint32_t)FlashSave_Get_Holding_Register(MODBUS_ADDR_DEFAULT_SPEED_LOW)) | + ((uint32_t)FlashSave_Get_Holding_Register(MODBUS_ADDR_DEFAULT_SPEED_HIGH) << 16); + + route->default_accel_time_ms = FlashSave_Get_Holding_Register(MODBUS_ADDR_DEFAULT_ACCEL_TIME); ///< 默认加速时间 + route->default_decel_time_ms = FlashSave_Get_Holding_Register(MODBUS_ADDR_DEFAULT_DECEL_TIME); ///< 默认减速时间 + // 自动更新加减速度 PLSR_Accel_UpdateRates(route); @@ -1101,15 +1112,25 @@ void PLSR_Route_Set(PLSR_RouteConfig_t* route) route->end_freq = 0; // 结束频率:0Hz route->initial_freq = 0; // 加减速初始频率:0Hz - // 初始化所有段的配置 - 遍历并初始化每个段 + /* 初始化所有段的配置 - 使用Modbus地址访问段参数 */ for (uint8_t i = 0; i < route->section_num; i++) { - route->section[i].section_num = i + 1; - route->section[i].target_freq = (((uint32_t)ModbusSlave.holding_regs[256+(16*i)]) | (uint32_t)ModbusSlave.holding_regs[257+(16*i)]<<16); - route->section[i].target_pulse = (((int32_t)ModbusSlave.holding_regs[258+(16*i)]) | (int32_t)ModbusSlave.holding_regs[259+(16*i)]<<16); - route->section[i].wait_condition.wait_type = ModbusSlave.holding_regs[260+(16*i)]; - route->section[i].next_section = ModbusSlave.holding_regs[261+(16*i)]; + + /* 计算当前段的Modbus地址基址 */ + uint16_t seg_base_addr = MODBUS_ADDR_SEGMENT_BASE + (i * MODBUS_ADDR_SEGMENT_OFFSET); + + /* 目标频率 = 低16位 | (高16位 << 16) */ + route->section[i].target_freq = ((uint32_t)FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_FREQ_LOW)) | + ((uint32_t)FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_FREQ_HIGH) << 16); + + /* 目标脉冲数 = 低16位 | (高16位 << 16) */ + route->section[i].target_pulse = ((int32_t)FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_PULSE_COUNT_LOW)) | + ((int32_t)FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_PULSE_COUNT_HIGH) << 16); + + /* 等待条件和跳转编号 */ + route->section[i].wait_condition.wait_type = FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_WAIT_CONDITION); + route->section[i].next_section = FlashSave_Get_Holding_Register(seg_base_addr + MODBUS_OFFSET_JUMP_NUMBER); } } @@ -1982,6 +2003,9 @@ void PLSR_Accel_SetDefaultParams(PLSR_RouteConfig_t* route, uint32_t accel_time_ void PLSR_TaskSectionSwitch(PLSR_RouteConfig_t* route) { if (route == NULL) return; + + // 如果路径已完成,直接返回,不执行任何操作 + if (route->route_state == PLSR_ROUTE_COMPLETED) return; /* 获取当前段配置 */ PLSR_SectionConfig_t* current_section = &route->section[route->current_section_num - 1]; if(current_section->wait_condition.wait_type == PLSR_WAIT_EXT_EVENT) @@ -2118,7 +2142,7 @@ uint8_t PLSR_Section_CheckWaitCondition(PLSR_RouteConfig_t* route) switch (wait_cond->wait_type) { case PLSR_WAIT_PLUSEEND: return PLSR_Section_CheckPulseComplete(route); - + case PLSR_WAIT_EXT_EVENT: // 外部事件条件:等待外部事件触发 // 外部事件可通过PLSR_SetExtEvent函数设置 @@ -2225,7 +2249,8 @@ void PLSR_SectionSwitchTask(void *p_arg) (void)p_arg; // 避免编译器警告 - while (1) { + while (1) + { /* 等待段切换信号量 */ OSSemPend(s_section_switch_sem, 0, &err); @@ -2233,6 +2258,5 @@ void PLSR_SectionSwitchTask(void *p_arg) /* 信号量获取成功,执行段切换逻辑 */ PLSR_TaskSectionSwitch(&g_plsr_route); } - /* 如果信号量获取失败,继续等待下一次信号 */ } } diff --git a/PLSR/PLSR/Core/Src/usart.c b/PLSR/PLSR/Core/Src/usart.c index 3101d18..724ee61 100644 --- a/PLSR/PLSR/Core/Src/usart.c +++ b/PLSR/PLSR/Core/Src/usart.c @@ -19,6 +19,7 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "usart.h" +#include "flash_save.h" /* USER CODE BEGIN 0 */ // USART1缓冲区变量定义 - 添加内存对齐确保DMA传输稳定 @@ -72,7 +73,6 @@ void MX_USART1_UART_Init(void) // 初始化Modbus Modbus_Init(1); // 默认从机地址为1 /* USER CODE END USART1_Init 2 */ - } void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) @@ -276,7 +276,6 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) void Modbus_Init(uint8_t slave_addr) { ModbusSlave.slave_address = slave_addr; - memset(ModbusSlave.holding_regs, 0, sizeof(ModbusSlave.holding_regs)); } /** @@ -352,8 +351,9 @@ void Modbus_Clear_Pluse(uint8_t* frame, uint16_t length) g_plsr_total_pulse_count = 0; // 假设0x100寄存器用于存储脉冲计数 g_plsr_location = 0; int32_t signed_count = g_plsr_location; // 使用有符号数进行计算 - ModbusSlave.holding_regs[0x1000] = signed_count & 0xFFFF; // 低16位 - ModbusSlave.holding_regs[0x1001] = (signed_count >> 16) & 0xFFFF; // 高16位 + /* 使用地址映射更新脉冲计数监控值 */ + FlashSave_Set_Holding_Register(MODBUS_ADDR_PULSE_COUNT_LOW, signed_count & 0xFFFF); // 低16位 + FlashSave_Set_Holding_Register(MODBUS_ADDR_PULSE_COUNT_HIGH, (signed_count >> 16) & 0xFFFF); // 高16位 Modbus_Send_Response(response, 3); } @@ -421,10 +421,10 @@ void Modbus_Handle_SendLog(uint8_t* frame, uint16_t length) return; } - uint16_t start_addr = ((frame[2] << 8) | frame[3]) - MODBUS_OFFSET; + uint16_t start_addr = (frame[2] << 8) | frame[3]; // 不减去MODBUS_OFFSET,保持原始地址 uint16_t reg_count = (frame[4] << 8) | frame[5]; - if(reg_count == 0 || reg_count > 125 || start_addr + reg_count > MODBUS_HOLDING_REG_COUNT) + if(reg_count == 0 || reg_count > 125) { Modbus_Send_Exception(MODBUS_FC_READ_HOLDING_REGS, MODBUS_EX_ILLEGAL_DATA_ADDRESS); return; @@ -435,9 +435,26 @@ void Modbus_Handle_SendLog(uint8_t* frame, uint16_t length) response[1] = MODBUS_FC_READ_HOLDING_REGS; response[2] = reg_count * 2; // 字节数 + /* 使用地址映射读取寄存器值 */ for(uint16_t i = 0; i < reg_count; i++) { - uint16_t reg_value = ModbusSlave.holding_regs[start_addr + i]; + uint16_t current_addr = start_addr + i; + uint16_t reg_value = FlashSave_Get_Holding_Register(current_addr); + + /* 如果地址无效,返回异常 */ + if(reg_value == 0 && current_addr != MODBUS_ADDR_PULSE_OUTPUT_PIN) // 避免误判地址0x1000的值为0的情况 + { + // 检查是否为有效地址范围 + if(!((current_addr >= 0x1000 && current_addr <= 0x100C) || + (current_addr >= 0x1100 && current_addr <= 0x1195) || + (current_addr >= 0x2000 && current_addr <= 0x2001) || + (current_addr == 0x3000))) + { + Modbus_Send_Exception(MODBUS_FC_READ_HOLDING_REGS, MODBUS_EX_ILLEGAL_DATA_ADDRESS); + return; + } + } + response[3 + i * 2] = (reg_value >> 8) & 0xFF; response[4 + i * 2] = reg_value & 0xFF; } @@ -459,19 +476,24 @@ void Modbus_Handle_SendLog(uint8_t* frame, uint16_t length) return; } - uint16_t reg_addr = ((frame[2] << 8) | frame[3]); - uint16_t write_addr = ((frame[2] << 8) | frame[3]) - MODBUS_OFFSET; + uint16_t reg_addr = (frame[2] << 8) | frame[3]; // 保持原始地址 uint16_t write_num = (frame[4] << 8) | frame[5]; - if(write_addr > MODBUS_HOLDING_REG_COUNT) + /* 检查地址是否有效 */ + if(!((reg_addr >= 0x1000 && reg_addr <= 0x100C) || + (reg_addr >= 0x1100 && reg_addr <= 0x1195) || + (reg_addr >= 0x2000 && reg_addr <= 0x2001) || + (reg_addr == 0x3000))) { Modbus_Send_Exception(MODBUS_FC_WRITE_REG, MODBUS_EX_ILLEGAL_DATA_ADDRESS); return; } - ModbusSlave.holding_regs[write_addr] = write_num; + /* 使用地址映射写入寄存器值 */ + FlashSave_Set_Holding_Register(reg_addr, write_num); - BackupSRAM_SaveRegData(); + /* 保存到备份SRAM */ + BackupSRAM_SaveRegData(); // 发送响应 uint8_t response[8]; @@ -498,24 +520,39 @@ void Modbus_Handle_SendLog(uint8_t* frame, uint16_t length) return; } - uint16_t start_addr = ((frame[2] << 8) | frame[3]); - uint16_t write_addr = ((frame[2] << 8) | frame[3]) - MODBUS_OFFSET; + uint16_t start_addr = (frame[2] << 8) | frame[3]; // 保持原始地址 uint16_t reg_count = (frame[4] << 8) | frame[5]; - if((reg_count == 0) || (reg_count > 123) || ((write_addr + reg_count) > MODBUS_HOLDING_REG_COUNT)) + if(reg_count == 0 || reg_count > 123) { Modbus_Send_Exception(MODBUS_FC_WRITE_MULTIPLE_REGS, MODBUS_EX_ILLEGAL_DATA_ADDRESS); return; } - // 写入寄存器数据 + /* 检查所有地址是否有效 */ + for(uint16_t i = 0; i < reg_count; i++) + { + uint16_t current_addr = start_addr + i; + if(!((current_addr >= 0x1000 && current_addr <= 0x100C) || + (current_addr >= 0x1100 && current_addr <= 0x1195) || + (current_addr >= 0x2000 && current_addr <= 0x2001) || + (current_addr == 0x3000))) + { + Modbus_Send_Exception(MODBUS_FC_WRITE_MULTIPLE_REGS, MODBUS_EX_ILLEGAL_DATA_ADDRESS); + return; + } + } + + /* 使用地址映射写入寄存器数据 */ for(uint16_t i = 0; i < reg_count; i++) { + uint16_t current_addr = start_addr + i; uint16_t reg_value = (frame[7 + i * 2] << 8) | frame[8 + i * 2]; - ModbusSlave.holding_regs[write_addr + i] = reg_value; + FlashSave_Set_Holding_Register(current_addr, reg_value); } - BackupSRAM_SaveRegData(); + /* 保存到备份SRAM */ + BackupSRAM_SaveRegData(); // 发送响应 uint8_t response[8]; @@ -565,29 +602,24 @@ void Modbus_Handle_SendLog(uint8_t* frame, uint16_t length) /** * @brief 设置保持寄存器值 - * @param addr 寄存器地址 + * @param addr 寄存器地址(Modbus地址) * @param value 寄存器值 */ void Modbus_SetHoldingRegister(uint16_t addr, uint16_t value) { - if(addr < MODBUS_HOLDING_REG_COUNT) - { - ModbusSlave.holding_regs[addr] = value; - } + /* 使用地址映射设置寄存器值 */ + FlashSave_Set_Holding_Register(addr, value); } /** * @brief 获取保持寄存器值 - * @param addr 寄存器地址 + * @param addr 寄存器地址(Modbus地址) * @return 寄存器值 */ uint16_t Modbus_GetHoldingRegister(uint16_t addr) { - if(addr < MODBUS_HOLDING_REG_COUNT) - { - return ModbusSlave.holding_regs[addr]; - } - return 0; + /* 使用地址映射获取寄存器值 */ + return FlashSave_Get_Holding_Register(addr); } /* USER CODE END 1 */ diff --git a/PLSR/PLSR/EWARM/settings/test.1.dnx b/PLSR/PLSR/EWARM/settings/test.1.dnx index bdf21f1..6036b0f 100644 --- a/PLSR/PLSR/EWARM/settings/test.1.dnx +++ b/PLSR/PLSR/EWARM/settings/test.1.dnx @@ -12,12 +12,12 @@ 50 - 46232557 - _ 0 _ 0 0 2 + 46232557 + 630028761 diff --git a/PLSR/PLSR/EWARM/test.1.dep b/PLSR/PLSR/EWARM/test.1.dep index e8680ac..390e6bc 100644 --- a/PLSR/PLSR/EWARM/test.1.dep +++ b/PLSR/PLSR/EWARM/test.1.dep @@ -5,1183 +5,928 @@ test.1 + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c + $PROJ_DIR$\..\Core\Src\dma.c + $PROJ_DIR$\..\Core\Src\main.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_timebase_tim.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c + $PROJ_DIR$\..\Core\Src\tim.c + $PROJ_DIR$\..\Core\Src\system_stm32f4xx.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c + $PROJ_DIR$\..\Core\Src\flash_save.c + $PROJ_DIR$\..\Core\Src\modbus_log.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c + $PROJ_DIR$\startup_stm32f407xx.s + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c + $PROJ_DIR$\..\Core\Src\modbus_crc.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_msp.c + $PROJ_DIR$\..\Core\Src\usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c + $PROJ_DIR$\..\Core\Src\gpio.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_it.c + $PROJ_DIR$\..\Core\Src\tools.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rng.c + $PROJ_DIR$\..\UCOS\Ports\os_dbg.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_i2c.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c $PROJ_DIR$\..\UCOS\Config\app_hooks.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c + $PROJ_DIR$\..\UCOS\Ports\os_cpu_c.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_pwr.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dac.c + $PROJ_DIR$\..\UCOS\Source\ucos_ii.c $PROJ_DIR$\..\UCOS\Ports\os_cpu_a.asm - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_crc.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h + $TOOLKIT_DIR$\inc\c\stdarg.h + $PROJ_DIR$\..\UCOS\Source\os_flag.c + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_gpio.o $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_crc.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dac.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_i2c.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rng.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c - $PROJ_DIR$\..\Core\Src\flash_save.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c - $PROJ_DIR$\startup_stm32f407xx.s - $PROJ_DIR$\..\Core\Src\dma.c - $PROJ_DIR$\..\Core\Src\modbus_crc.c - $PROJ_DIR$\..\Core\Src\gpio.c - $PROJ_DIR$\..\Core\Src\modbus_log.c - $PROJ_DIR$\..\Core\Src\stm32f4xx_it.c - $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_timebase_tim.c - $PROJ_DIR$\..\Core\Src\tim.c - $PROJ_DIR$\..\Core\Src\tools.c - $PROJ_DIR$\..\Core\Src\usart.c - $PROJ_DIR$\..\Core\Src\system_stm32f4xx.c - $PROJ_DIR$\..\Core\Src\main.c - $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_msp.c - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_usart.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_msp.__cstat.et - $PROJ_DIR$\test.1\Obj\tools.__cstat.et + $PROJ_DIR$\..\Core\Inc\stm32f4xx_it.h + $PROJ_DIR$\test.1\Obj\os_cpu_a.o + $PROJ_DIR$\..\UCOS\Config\os_cfg.h + $TOOLKIT_DIR$\inc\c\math.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc_ex.o + $PROJ_DIR$\..\Drivers\CMSIS\Include\core_cm4.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h + $PROJ_DIR$\..\Core\Inc\modbus_log.h + $TOOLKIT_DIR$\inc\c\DLib_Defaults.h $PROJ_DIR$\test.1\Obj\usart.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h + $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h + $TOOLKIT_DIR$\lib\shb_l.a + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rcc.o + $TOOLKIT_DIR$\lib\rt7M_tl.a + $TOOLKIT_DIR$\inc\c\string.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h + $PROJ_DIR$\..\Core\Inc\dma.h + $PROJ_DIR$\test.1\Obj\flash_save.o + $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_compiler.h + $PROJ_DIR$\test.1\Obj\modbus_crc.o + $PROJ_DIR$\test.1\Obj\dma.o + $PROJ_DIR$\..\UCOS\Source\os_sem.c + $PROJ_DIR$\..\UCOS\Source\ucos_ii.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h + $PROJ_DIR$\..\Core\Inc\usart.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h + $TOOLKIT_DIR$\inc\c\stdlib.h + $TOOLKIT_DIR$\inc\c\DLib_Config_Full.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rng.__cstat.et - $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rcc.__cstat.et - $TOOLKIT_DIR$\inc\c\stdint.h $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash_ramfunc.o - $PROJ_DIR$\test.1\Obj\os_cpu_c.__cstat.et + $TOOLKIT_DIR$\inc\c\DLib_float_setup.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h + $PROJ_DIR$\..\UCOS\Source\os_tmr.c + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_usart.o $TOOLKIT_DIR$\inc\c\stddef.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_it.o - $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_version.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim_ex.__cstat.et - $PROJ_DIR$\stm32f407xx_flash.icf - $PROJ_DIR$\test.1\Obj\os_dbg.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_tim.__cstat.et - $PROJ_DIR$\..\Core\Inc\main.h - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h - $PROJ_DIR$\..\UCOS\Source\os_sem.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h - $PROJ_DIR$\test.1\List\test.1.map - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma.__cstat.et $TOOLKIT_DIR$\inc\c\DLib_Product_stdlib.h - $TOOLKIT_DIR$\inc\c\stdarg.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_dma.o - $PROJ_DIR$\test.1\Obj\app_hooks.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rcc.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_gpio.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_dma.__cstat.et - $PROJ_DIR$\test.1\Obj\modbus_log.__cstat.et - $PROJ_DIR$\test.1\Obj\main.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_wwdg.__cstat.et - $PROJ_DIR$\test.1\Obj\modbus_log.o - $PROJ_DIR$\..\Core\Inc\stm32f4xx_hal_conf.h - $PROJ_DIR$\..\UCOS\Source\os_trace.h - $PROJ_DIR$\..\UCOS\Ports\os_cpu.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_crc.__cstat.et - $PROJ_DIR$\..\UCOS\Config\app_cfg.h - $PROJ_DIR$\..\Core\Inc\gpio.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_pwr.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_tim.o $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_crc.o - $PROJ_DIR$\..\UCOS\Source\os_q.c - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_spi.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_crc.__cstat.et - $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_usart.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_uart.__cstat.et - $PROJ_DIR$\..\UCOS\Config\os_cfg.h - $PROJ_DIR$\test.1\Obj\ucos_ii.__cstat.et - $TOOLKIT_DIR$\lib\shb_l.a - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_pwr.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_gpio.__cstat.et - $PROJ_DIR$\..\Drivers\CMSIS\Include\core_cm4.h - $TOOLKIT_DIR$\inc\c\DLib_Config_Full.h - $TOOLKIT_DIR$\inc\c\DLib_Defaults.h - $PROJ_DIR$\..\Core\Inc\modbus_log.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash_ramfunc.__cstat.et - $PROJ_DIR$\test.1\Obj\os_cpu_a.o - $PROJ_DIR$\test.1\Obj\tim.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_cortex.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_usart.o + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h $PROJ_DIR$\..\Core\Inc\modbus_crc.h - $PROJ_DIR$\..\UCOS\Source\os_mbox.c - $PROJ_DIR$\..\UCOS\Source\os_mutex.c - $PROJ_DIR$\test.1\Obj\gpio.__cstat.et - $TOOLKIT_DIR$\inc\c\math.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_wwdg.o - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h - $PROJ_DIR$\test.1\Obj\main.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash_ex.__cstat.et $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_dac.o - $PROJ_DIR$\..\Drivers\CMSIS\Include\mpu_armv7.h - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h - $PROJ_DIR$\test.1\Obj\startup_stm32f407xx.o - $PROJ_DIR$\..\UCOS\Source\os_tmr.c - $TOOLKIT_DIR$\inc\c\stdio.h - $PROJ_DIR$\..\UCOS\Source\os_time.c - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_sram.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash_ex.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_uart.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_exti.o $TOOLKIT_DIR$\inc\c\DLib_Product_string.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_msp.o - $PROJ_DIR$\..\UCOS\Source\os_task.c - $PROJ_DIR$\test.1\Obj\dma.o - $TOOLKIT_DIR$\inc\c\stdlib.h - $PROJ_DIR$\test.1\Obj\dma.__cstat.et - $PROJ_DIR$\test.1\Obj\flash_save.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc.__cstat.et - $PROJ_DIR$\..\UCOS\Source\os_flag.c - $PROJ_DIR$\test.1\Obj\usart.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_exti.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr.o - $PROJ_DIR$\..\Core\Inc\usart.h - $TOOLKIT_DIR$\lib\dl7M_tlf.a - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c.__cstat.et - $PROJ_DIR$\..\UCOS\Source\os_mem.c - $TOOLKIT_DIR$\lib\rt7M_tl.a - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr_ex.o - $TOOLKIT_DIR$\inc\c\string.h - $TOOLKIT_DIR$\inc\c\DLib_float_setup.h - $PROJ_DIR$\..\UCOS\Source\os.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c_ex.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc.o - $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_dac.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_timebase_tim.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rng.o - $PROJ_DIR$\test.1\Exe\test.1.out - $PROJ_DIR$\test.1\Obj\tools.o - $PROJ_DIR$\..\Core\Inc\stm32f4xx_it.h - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h - $PROJ_DIR$\..\UCOS\Source\os_core.c - $TOOLKIT_DIR$\inc\c\DLib_Product.h $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_crc.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr_ex.__cstat.et - $TOOLKIT_DIR$\inc\c\yvals.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr.__cstat.et - $TOOLKIT_DIR$\inc\c\iccarm_builtin.h - $PROJ_DIR$\test.1\Obj\ucos_ii.o - $PROJ_DIR$\test.1\Obj\system_stm32f4xx.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_exti.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_gpio.__cstat.et + $PROJ_DIR$\..\UCOS\Source\os_mbox.c $TOOLKIT_DIR$\inc\c\ctype.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim.o + $PROJ_DIR$\test.1\Obj\ucos_ii.o + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_dma.o + $TOOLKIT_DIR$\inc\c\DLib_Product.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h + $PROJ_DIR$\test.1\List\test.1.map + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_cortex.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash_ex.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma_ex.o + $PROJ_DIR$\..\Core\Inc\stm32f4xx_hal_conf.h + $PROJ_DIR$\test.1\Obj\gpio.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_rng.o + $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h + $PROJ_DIR$\..\UCOS\Source\os.h + $TOOLKIT_DIR$\inc\c\stdint.h + $PROJ_DIR$\..\UCOS\Source\os_mem.c + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_usart.o $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_i2c.o - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc.o + $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h $PROJ_DIR$\..\Core\Inc\tim.h - $PROJ_DIR$\..\UCOS\Source\ucos_ii.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_msp.o + $TOOLKIT_DIR$\inc\c\stdio.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma.o + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h + $PROJ_DIR$\test.1\Obj\startup_stm32f407xx.o + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash.o + $PROJ_DIR$\..\UCOS\Source\os_trace.h + $PROJ_DIR$\..\UCOS\Source\os_q.c + $PROJ_DIR$\..\Drivers\CMSIS\Include\mpu_armv7.h + $PROJ_DIR$\..\Core\Inc\main.h + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_gpio.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_sram.o + $TOOLKIT_DIR$\lib\dl7M_tlf.a + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_tim.o + $PROJ_DIR$\test.1\Obj\main.o + $PROJ_DIR$\test.1\Exe\test.1.out $TOOLKIT_DIR$\inc\c\ycheck.h - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h - $PROJ_DIR$\test.1\Obj\tim.o + $PROJ_DIR$\..\UCOS\Source\os_core.c + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_exti.o + $PROJ_DIR$\..\UCOS\Source\os_mutex.c + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim_ex.o + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h + $PROJ_DIR$\..\Core\Inc\gpio.h $PROJ_DIR$\..\Core\Inc\flash_save.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_it.__cstat.et - $PROJ_DIR$\test.1\Obj\gpio.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma_ex.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c_ex.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_gpio.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_cortex.__cstat.et - $PROJ_DIR$\test.1\Obj\system_stm32f4xx.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_usart.__cstat.et - $PROJ_DIR$\test.1\Obj\flash_save.o - $PROJ_DIR$\test.1\Obj\os_cpu_c.o - $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_compiler.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_sram.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim.o - $PROJ_DIR$\test.1\Obj\modbus_crc.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_spi.__cstat.et - $PROJ_DIR$\test.1\Obj\modbus_crc.o + $PROJ_DIR$\..\UCOS\Config\app_cfg.h + $PROJ_DIR$\..\UCOS\Source\os_task.c + $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_version.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_pwr.o + $TOOLKIT_DIR$\inc\c\yvals.h $TOOLKIT_DIR$\inc\c\ysizet.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_dma_ex.o - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h - $PROJ_DIR$\..\UCOS\Source\ucos_ii.c - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_flash.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_exti.o + $PROJ_DIR$\test.1\Obj\os_dbg.o $PROJ_DIR$\test.1\Exe\test.1.hex - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_tim_ex.o - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_timebase_tim.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_pwr_ex.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c_ex.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_spi.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_crc.o $TOOLKIT_DIR$\lib\m7M_tls.a - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_exti.o - $PROJ_DIR$\..\Core\Inc\dma.h - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc_ex.o - $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_iccarm.h + $PROJ_DIR$\test.1\Obj\os_cpu_c.o + $TOOLKIT_DIR$\inc\c\iccarm_builtin.h + $PROJ_DIR$\test.1\Obj\tools.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_i2c.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_wwdg.o + $PROJ_DIR$\stm32f407xx_flash.icf $PROJ_DIR$\test.1\Obj\app_hooks.o - $PROJ_DIR$\..\UCOS\Ports\os_dbg.c - $PROJ_DIR$\test.1\Obj\stm32f4xx_ll_i2c.__cstat.et - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_uart.o - $PROJ_DIR$\test.1\Obj\os_dbg.o - $PROJ_DIR$\..\UCOS\Ports\os_cpu_c.c - $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_rcc_ex.__cstat.et - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h + $PROJ_DIR$\test.1\Obj\system_stm32f4xx.o + $PROJ_DIR$\test.1\Obj\modbus_log.o + $PROJ_DIR$\..\UCOS\Ports\os_cpu.h + $PROJ_DIR$\test.1\Obj\stm32f4xx_it.o + $PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_iccarm.h + $PROJ_DIR$\..\UCOS\Source\os_time.c + $PROJ_DIR$\test.1\Obj\tim.o + $PROJ_DIR$\test.1\Obj\stm32f4xx_hal_timebase_tim.o [ROOT_NODE] ILINK - 166 74 + 148 112 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c - - - ICCARM - 136 - - - __cstat - 127 - - - - - ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c - - - ICCARM - 161 - - - __cstat - 146 - - - - - ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c - - - ICCARM - 205 - - - __cstat - 135 - - - - - ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c - - - ICCARM - 219 - - - __cstat - 66 - - - - - ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c ICCARM - 124 - - - __cstat - 87 + 166 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\UCOS\Config\app_hooks.c + $PROJ_DIR$\..\Core\Src\dma.c ICCARM - 228 - - - __cstat 79 ICCARM - 159 187 93 77 133 189 175 112 111 171 211 105 91 90 + 75 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_pwr.c - - - ICCARM - 108 - - - __cstat - 95 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c + $PROJ_DIR$\..\Core\Src\main.c ICCARM - 61 - - - __cstat - 114 + 147 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 155 128 83 130 73 102 105 85 95 46 98 156 66 61 90 81 157 60 179 137 75 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dac.c - - - ICCARM - 128 - - - __cstat - 163 - - - - - $PROJ_DIR$\..\UCOS\Ports\os_cpu_a.asm - - - AARM - 115 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_crc.c - - - ICCARM - 173 - - - __cstat - 101 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_timebase_tim.c ICCARM - 206 - - - __cstat - 54 + 184 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c ICCARM - 150 - - - __cstat - 176 + 48 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c - - - ICCARM - 198 - - - __cstat - 109 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c ICCARM - 216 - - - __cstat - 81 + 96 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c + $PROJ_DIR$\..\Core\Src\tim.c ICCARM - 197 - - - __cstat - 160 + 183 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 128 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 83 130 73 102 105 85 95 46 98 156 66 61 90 81 157 60 179 137 155 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c - - - ICCARM - 100 - - - __cstat - 209 - - - - - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c + $PROJ_DIR$\..\Core\Src\system_stm32f4xx.c ICCARM - 83 - - - __cstat - 182 + 177 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 65 116 88 111 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c ICCARM - 231 - - - __cstat - 104 + 114 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c ICCARM - 226 - - - __cstat - 234 + 173 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c - ICCARM - 118 - - - __cstat - 201 + ICCARM + 142 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c + $PROJ_DIR$\..\Core\Src\flash_save.c ICCARM - 217 + 76 + + - __cstat - 149 + ICCARM + 156 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 98 73 102 - + - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c + $PROJ_DIR$\..\Core\Src\modbus_log.c ICCARM - 188 - - - __cstat - 153 + 178 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 66 83 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 130 73 102 105 85 95 46 98 156 128 61 90 81 157 60 179 137 155 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_i2c.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c ICCARM - 184 + 113 + + - __cstat - 230 + ICCARM + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - + - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c + $PROJ_DIR$\startup_stm32f407xx.s - ICCARM - 78 - - - __cstat - 84 + AARM + 133 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c ICCARM - 82 + 101 + + - __cstat - 59 + ICCARM + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - + - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rng.c + $PROJ_DIR$\..\Core\Src\modbus_crc.c ICCARM - 165 + 78 + + - __cstat - 57 + ICCARM + 98 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 65 116 88 111 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - + - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c ICCARM - 50 + 136 + + - __cstat - 103 + ICCARM + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - + - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_msp.c ICCARM - 156 - - - __cstat - 174 + 129 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c + $PROJ_DIR$\..\Core\Src\usart.c ICCARM - 97 + 68 + + - __cstat - 69 + ICCARM + 83 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 130 73 102 105 85 95 46 98 156 66 128 61 90 81 157 60 179 137 155 - + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c ICCARM - 212 - - - __cstat - 196 + 115 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c + $PROJ_DIR$\..\Core\Src\gpio.c ICCARM - 224 - - - __cstat - 180 + 117 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 155 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 128 83 130 73 102 105 85 95 46 98 156 66 61 90 81 157 60 179 137 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c ICCARM - 195 - - - __cstat - 145 + 131 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c ICCARM - 117 - - - __cstat - 199 + 89 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\flash_save.c + $PROJ_DIR$\..\Core\Src\stm32f4xx_it.c ICCARM - 202 - - - __cstat - 143 + 180 ICCARM - 192 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 151 70 133 157 137 183 141 76 77 119 113 186 123 158 187 93 105 91 90 94 + 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 58 81 157 46 130 60 179 137 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c + $PROJ_DIR$\..\Core\Src\tools.c ICCARM - 98 - - - __cstat - 92 + 172 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 128 140 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 83 130 73 102 105 85 95 46 98 156 66 61 90 81 157 60 179 137 155 - $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c ICCARM - 96 - - - __cstat - 75 + 143 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\startup_stm32f407xx.s + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rng.c - AARM - 131 + ICCARM + 118 - $PROJ_DIR$\..\Core\Src\dma.c + $PROJ_DIR$\..\UCOS\Ports\os_dbg.c ICCARM - 140 - - - __cstat - 142 + 163 ICCARM - 225 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 81 157 46 130 149 161 67 86 110 162 60 179 137 - $PROJ_DIR$\..\Core\Src\modbus_crc.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c ICCARM - 210 - - - __cstat - 207 + 123 - + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_i2c.c + ICCARM - 119 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 169 89 56 221 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 124 - + - $PROJ_DIR$\..\Core\Src\gpio.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c ICCARM - 194 - - - __cstat - 122 + 126 ICCARM - 94 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 186 151 133 157 137 183 141 76 77 119 192 113 123 158 187 93 105 91 90 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\modbus_log.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c ICCARM - 88 - - - __cstat - 85 + 153 ICCARM - 113 151 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 133 157 137 183 141 76 77 119 192 186 123 158 187 93 105 91 90 94 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\stm32f4xx_it.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c ICCARM - 64 - - - __cstat - 193 + 100 ICCARM - 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 168 187 93 77 133 105 91 90 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_timebase_tim.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c ICCARM - 164 - - - __cstat - 220 + 174 ICCARM - 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\tim.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c ICCARM - 191 - - - __cstat - 116 + 167 - + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c + ICCARM - 186 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 151 133 157 137 183 141 76 77 119 192 113 123 158 187 93 105 91 90 94 + 146 - + - $PROJ_DIR$\..\Core\Src\tools.c + $PROJ_DIR$\..\UCOS\Config\app_hooks.c ICCARM - 167 - - - __cstat - 52 + 176 ICCARM - 186 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 151 133 157 137 183 141 76 77 119 192 113 123 158 187 93 105 91 90 94 + 120 81 157 46 130 149 161 67 86 110 162 60 179 137 - $PROJ_DIR$\..\Core\Src\usart.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c ICCARM - 53 + 49 + + + + $PROJ_DIR$\..\UCOS\Ports\os_cpu_c.c + - __cstat - 148 + ICCARM + 170 ICCARM - 151 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 133 157 137 183 141 76 77 119 192 113 186 123 158 187 93 105 91 90 94 + 81 157 46 130 149 161 67 86 110 162 60 179 137 - $PROJ_DIR$\..\Core\Src\system_stm32f4xx.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c ICCARM - 179 + 109 + + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c + - __cstat - 200 + ICCARM + 165 ICCARM - 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 169 89 56 221 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\Core\Src\main.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_pwr.c ICCARM - 126 + 160 + + + + $PROJ_DIR$\..\UCOS\Source\ucos_ii.c + - __cstat - 86 + ICCARM + 107 ICCARM - 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 94 186 151 133 157 137 183 141 76 77 119 192 113 123 158 187 93 105 91 90 225 + 81 157 46 130 149 161 67 86 110 162 60 179 137 150 47 104 122 152 138 80 158 182 92 - $PROJ_DIR$\..\Core\Src\stm32f4xx_hal_msp.c + $PROJ_DIR$\..\UCOS\Ports\os_cpu_a.asm - ICCARM - 138 + AARM + 59 + + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + - __cstat - 51 + ICCARM + 63 ICCARM - 70 169 89 56 221 162 102 110 60 189 175 112 111 171 65 204 227 177 129 58 208 63 211 80 125 71 55 181 213 190 222 130 235 73 172 185 215 144 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\test.1\Exe\test.1.out + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_crc.c - ILINK - 74 + ICCARM + 168 + + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + - OBJCOPY - 218 + ICCARM + 93 - ILINK - 67 228 140 202 194 126 210 88 115 203 232 131 195 117 98 96 212 224 216 136 61 83 188 197 138 150 156 161 226 205 206 219 164 231 118 124 64 173 128 78 217 198 184 108 82 165 100 97 50 179 191 167 178 53 107 155 223 152 + ICCARM + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\UCOS\Source\ucos_ii.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c ICCARM - 178 - - - __cstat 106 ICCARM - 187 93 77 133 189 175 112 111 171 211 105 91 90 170 147 120 154 121 99 72 139 134 132 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\UCOS\Ports\os_dbg.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dac.c ICCARM - 232 + 99 + + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c + - __cstat - 68 + ICCARM + 151 + + + + + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c + + + ICCARM + 144 ICCARM - 187 93 77 133 189 175 112 111 171 211 105 91 90 + 65 116 88 111 69 127 64 121 149 161 67 86 110 159 77 181 171 139 119 97 94 162 135 87 154 125 132 82 84 141 134 91 74 103 62 108 45 - $PROJ_DIR$\..\UCOS\Ports\os_cpu_c.c + $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c ICCARM - 203 + 71 + + + + + $PROJ_DIR$\test.1\Exe\test.1.out + + + ILINK + 112 - __cstat - 62 + OBJCOPY + 164 - ICCARM - 187 93 77 133 189 175 112 111 171 211 105 91 90 + ILINK + 175 176 79 76 117 147 78 178 59 170 163 133 48 113 96 131 115 101 136 114 89 143 173 166 129 142 165 126 63 144 106 153 184 100 93 174 180 168 99 109 151 49 124 160 71 118 167 146 123 177 183 172 107 68 70 72 169 145 diff --git a/PLSR/PLSR/EWARM/test.1/Exe/test.1.sim b/PLSR/PLSR/EWARM/test.1/Exe/test.1.sim index ea3d103ac82c07f04334bf9ab7a2858295de7bd1..72e66455517d9c5ec2212cf3f9b4f9f16a517cae 100644 GIT binary patch delta 10218 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 Obpd`gFzIg>NB%#f>1N*m delta 9483 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