From 6b84e3c369584b36125b3d0bbb06388d8b7389e0 Mon Sep 17 00:00:00 2001 From: hold the blade Date: Sun, 16 Nov 2025 23:29:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=BB=E6=9C=BA485?= =?UTF-8?q?=E8=BD=AE=E8=AF=A2=E4=BB=8E=E6=9C=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureSensorBoardMaster/Core/Src/main.c | 503 +++--- .../PressureSensorBoardMaster.uvguix.kkkjt | 44 +- .../PressureSensorBoardMaster.axf | Bin 582796 -> 586772 bytes .../PressureSensorBoardMaster.build_log.htm | 66 +- .../PressureSensorBoardMaster.hex | 1241 ++++++++------- .../PressureSensorBoardMaster.htm | 992 ++++++------ .../PressureSensorBoardMaster.map | 1414 +++++++++-------- ...rBoardMaster_PressureSensorBoardMaster.dep | 1270 +++++++-------- .../MDK-ARM/PressureSensorBoardMaster/dma.crf | Bin 559016 -> 559002 bytes .../MDK-ARM/PressureSensorBoardMaster/dma.d | 4 +- .../MDK-ARM/PressureSensorBoardMaster/dma.o | Bin 620936 -> 620848 bytes .../PressureSensorBoardMaster/gpio.crf | Bin 559473 -> 559459 bytes .../MDK-ARM/PressureSensorBoardMaster/gpio.d | 4 +- .../MDK-ARM/PressureSensorBoardMaster/gpio.o | Bin 621248 -> 621156 bytes .../PressureSensorBoardMaster/main.crf | Bin 569686 -> 571917 bytes .../MDK-ARM/PressureSensorBoardMaster/main.d | 8 +- .../MDK-ARM/PressureSensorBoardMaster/main.o | Bin 646640 -> 651060 bytes .../startup_stm32f103xb.o | Bin 6024 -> 6024 bytes .../stm32f1xx_hal.crf | Bin 560291 -> 560277 bytes .../PressureSensorBoardMaster/stm32f1xx_hal.d | 4 +- .../PressureSensorBoardMaster/stm32f1xx_hal.o | Bin 654916 -> 654828 bytes .../stm32f1xx_hal_cortex.crf | Bin 559752 -> 559738 bytes .../stm32f1xx_hal_cortex.d | 4 +- .../stm32f1xx_hal_cortex.o | Bin 644460 -> 644368 bytes .../stm32f1xx_hal_dma.crf | Bin 566748 -> 566734 bytes .../stm32f1xx_hal_dma.d | 4 +- .../stm32f1xx_hal_dma.o | Bin 641960 -> 641872 bytes .../stm32f1xx_hal_exti.crf | Bin 561916 -> 561902 bytes .../stm32f1xx_hal_exti.d | 4 +- .../stm32f1xx_hal_exti.o | Bin 633544 -> 633452 bytes .../stm32f1xx_hal_flash.crf | Bin 563635 -> 563621 bytes .../stm32f1xx_hal_flash.d | 4 +- .../stm32f1xx_hal_flash.o | Bin 641632 -> 641544 bytes .../stm32f1xx_hal_flash_ex.crf | Bin 564889 -> 564875 bytes .../stm32f1xx_hal_flash_ex.d | 4 +- .../stm32f1xx_hal_flash_ex.o | Bin 640924 -> 640832 bytes .../stm32f1xx_hal_gpio.crf | Bin 562687 -> 562673 bytes .../stm32f1xx_hal_gpio.d | 4 +- .../stm32f1xx_hal_gpio.o | Bin 632992 -> 632900 bytes .../stm32f1xx_hal_gpio_ex.crf | Bin 558952 -> 558938 bytes .../stm32f1xx_hal_gpio_ex.d | 4 +- .../stm32f1xx_hal_gpio_ex.o | Bin 622716 -> 622628 bytes .../stm32f1xx_hal_msp.crf | Bin 559157 -> 559143 bytes .../stm32f1xx_hal_msp.d | 4 +- .../stm32f1xx_hal_msp.o | Bin 620472 -> 620384 bytes .../stm32f1xx_hal_pwr.crf | Bin 561756 -> 561742 bytes .../stm32f1xx_hal_pwr.d | 4 +- .../stm32f1xx_hal_pwr.o | Bin 644720 -> 644632 bytes .../stm32f1xx_hal_rcc.crf | Bin 571093 -> 571079 bytes .../stm32f1xx_hal_rcc.d | 4 +- .../stm32f1xx_hal_rcc.o | Bin 644012 -> 643924 bytes .../stm32f1xx_hal_rcc_ex.crf | Bin 561568 -> 561554 bytes .../stm32f1xx_hal_rcc_ex.d | 4 +- .../stm32f1xx_hal_rcc_ex.o | Bin 624792 -> 624700 bytes .../stm32f1xx_hal_tim.crf | Bin 623794 -> 623780 bytes .../stm32f1xx_hal_tim.d | 4 +- .../stm32f1xx_hal_tim.o | Bin 825208 -> 825120 bytes .../stm32f1xx_hal_tim_ex.crf | Bin 585316 -> 585302 bytes .../stm32f1xx_hal_tim_ex.d | 4 +- .../stm32f1xx_hal_tim_ex.o | Bin 695892 -> 695800 bytes .../stm32f1xx_hal_uart.crf | Bin 586739 -> 586725 bytes .../stm32f1xx_hal_uart.d | 4 +- .../stm32f1xx_hal_uart.o | Bin 722436 -> 722344 bytes .../stm32f1xx_it.crf | Bin 559591 -> 559577 bytes .../PressureSensorBoardMaster/stm32f1xx_it.d | 4 +- .../PressureSensorBoardMaster/stm32f1xx_it.o | Bin 637248 -> 637156 bytes .../system_stm32f1xx.crf | Bin 559098 -> 559084 bytes .../system_stm32f1xx.d | 4 +- .../system_stm32f1xx.o | Bin 621716 -> 621624 bytes .../MDK-ARM/PressureSensorBoardMaster/tim.crf | Bin 560097 -> 560083 bytes .../MDK-ARM/PressureSensorBoardMaster/tim.d | 4 +- .../MDK-ARM/PressureSensorBoardMaster/tim.o | Bin 626612 -> 626524 bytes .../PressureSensorBoardMaster/usart.crf | Bin 562064 -> 562050 bytes .../MDK-ARM/PressureSensorBoardMaster/usart.d | 4 +- .../MDK-ARM/PressureSensorBoardMaster/usart.o | Bin 629364 -> 629276 bytes .../MDK-ARM/startup_stm32f103xb.lst | 9 +- Software/~$从机通信协议.docx | Bin 162 -> 0 bytes 77 files changed, 2996 insertions(+), 2635 deletions(-) delete mode 100644 Software/~$从机通信协议.docx diff --git a/Software/master/PressureSensorBoardMaster/Core/Src/main.c b/Software/master/PressureSensorBoardMaster/Core/Src/main.c index 51035eb..67d33b8 100644 --- a/Software/master/PressureSensorBoardMaster/Core/Src/main.c +++ b/Software/master/PressureSensorBoardMaster/Core/Src/main.c @@ -24,53 +24,85 @@ /* USER CODE BEGIN PTD */ // 从机信息结构 typedef struct { + uint8_t address; // 从机地址 uint8_t is_online; // 是否在线 uint8_t is_ready; // 是否就绪 uint8_t matrix_data[5]; // 矩阵数据 + uint32_t last_response; // 最后响应时间 + uint8_t retry_count; // 重试计数 } SlaveDevice_t; + +// 通信状态 +typedef enum { + STATE_IDLE = 0, // 空闲状态 + STATE_SENDING = 1, // 发送中 + STATE_WAITING_RESPONSE = 2, // 等待响应 + STATE_PROCESSING = 3 // 处理响应 +} CommState_t; + +// 轮询阶段 +typedef enum { + PHASE_STATUS_QUERY = 0, // 状态查询阶段 + PHASE_MATRIX_QUERY = 1 // 矩阵查询阶段 +} PollPhase_t; /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ -#define SLAVE_ADDRESS 0x03 // 只查询从机3 -#define TOTAL_MATRIX_POINTS 30 -#define RX_BUFFER_SIZE 32 +#define SLAVE_COUNT 3 +#define TOTAL_MATRIX_POINTS 90 +#define RX_BUFFER_SIZE 64 // 通信端口定义 -#define RS485_SLAVE_PORT &huart1 // 与从机通信 -#define RS485_OUTPUT_PORT &huart2 // 对外输出 -#define RS232_OUTPUT_PORT &huart3 // 调试输出 +#define RS485_SLAVE_PORT &huart1 +#define RS485_OUTPUT_PORT &huart2 +#define RS232_OUTPUT_PORT &huart3 -// 查询间隔 -#define QUERY_INTERVAL 200 // 查询间隔(ms) +// 时序参数(关键!) +#define SEND_TO_RECEIVE_DELAY 2 // 发送到接收切换延时(ms) +#define RESPONSE_TIMEOUT 50 // 响应超时(ms) +#define INTER_QUERY_DELAY 5 // 查询间延时(ms) +#define STATUS_QUERY_INTERVAL 1000 // 状态查询周期(ms) +#define MATRIX_QUERY_INTERVAL 100 // 矩阵查询周期(ms) +#define MAX_RETRY_COUNT 3 // 最大重试次数 /* USER CODE END PD */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ -// 从机设备 -SlaveDevice_t slave = {0, 0, {0}}; +// 从机设备数组 +SlaveDevice_t slaves[SLAVE_COUNT] = { + {0x01, 0, 0, {0}, 0, 0}, // 从机1 + {0x02, 0, 0, {0}, 0, 0}, // 从机2 + {0x03, 0, 0, {0}, 0, 0} // 从机3 +}; -// 矩阵状态 -uint8_t matrix_data[TOTAL_MATRIX_POINTS] = {0}; +// 全局矩阵状态 +uint8_t global_matrix[TOTAL_MATRIX_POINTS] = {0}; // 通信缓冲区 uint8_t tx_buffer[16]; uint8_t rx_buffer[RX_BUFFER_SIZE]; uint16_t last_dma_pos = 0; -// 状态变量 -uint8_t query_mode = 0; // 0=状态查询, 1=矩阵查询 -uint32_t last_query_time = 0; +// 系统状态 +CommState_t comm_state = STATE_IDLE; +PollPhase_t poll_phase = PHASE_STATUS_QUERY; +uint8_t current_slave_index = 0; +uint32_t last_status_query_time = 0; +uint32_t last_matrix_query_time = 0; +uint32_t current_operation_start = 0; +uint8_t expecting_response_from = 0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ -void Send_Status_Query(void); -void Send_Matrix_Query(void); +void RS485_Send_Query(uint8_t slave_address, uint8_t function_code); +void Process_Received_Data(void); +void Update_Global_Matrix(uint8_t slave_index); void Send_Output_Frame(void); -void Process_Response(void); -void Update_Matrix_Data(void); +void Handle_Response_Timeout(void); +void Handle_Slave_Response(uint8_t slave_address, uint8_t function_code, uint8_t* data); uint16_t Calculate_CRC16(uint8_t *data, uint8_t length); uint16_t Get_DMA_Received_Count(void); /* USER CODE END PFP */ @@ -102,10 +134,11 @@ int main(void) HAL_UART_Receive_DMA(RS485_SLAVE_PORT, rx_buffer, RX_BUFFER_SIZE); // 发送启动信息 - char msg[] = "Single Slave Master Started - Only Query Slave 03\r\n"; + char msg[] = "RS485 Multi-Slave Master Started\r\n"; HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); - last_query_time = HAL_GetTick(); + last_status_query_time = HAL_GetTick(); + last_matrix_query_time = HAL_GetTick(); /* USER CODE END 2 */ /* Infinite loop */ @@ -117,30 +150,248 @@ int main(void) uint16_t current_dma_pos = Get_DMA_Received_Count(); if (current_dma_pos != last_dma_pos) { - Process_Response(); + Process_Received_Data(); last_dma_pos = current_dma_pos; } - // 定时发送查询 - if (current_time - last_query_time > QUERY_INTERVAL) + // 主状态机 - 非阻塞设计 + switch (comm_state) { - if (!slave.is_online || !slave.is_ready) - { - // 状态查询阶段:一直查询直到从机在线并就绪 - Send_Status_Query(); - query_mode = 0; - } - else if (current_time - last_query_time > 100) - { - // 矩阵查询阶段:一直查询矩阵数据 - Send_Matrix_Query(); - query_mode = 1; - } - - last_query_time = current_time; + case STATE_IDLE: + // 决定下一个操作 + if (poll_phase == PHASE_STATUS_QUERY) + { + // 状态查询阶段 + if (current_time - last_status_query_time >= STATUS_QUERY_INTERVAL) + { + // 找到下一个需要查询的从机 + uint8_t found = 0; + for (uint8_t i = 0; i < SLAVE_COUNT; i++) + { + uint8_t index = (current_slave_index + i) % SLAVE_COUNT; + if (slaves[index].retry_count < MAX_RETRY_COUNT) + { + current_slave_index = index; + found = 1; + break; + } + } + + if (found) + { + RS485_Send_Query(slaves[current_slave_index].address, 0x01); + expecting_response_from = slaves[current_slave_index].address; + comm_state = STATE_SENDING; + current_operation_start = current_time; + } + } + else + { + // 切换到矩阵查询阶段 + poll_phase = PHASE_MATRIX_QUERY; + current_slave_index = 0; + } + } + else // PHASE_MATRIX_QUERY + { + // 矩阵查询阶段 + if (current_time - last_matrix_query_time >= MATRIX_QUERY_INTERVAL) + { + // 找到下一个在线的从机 + uint8_t found = 0; + for (uint8_t i = 0; i < SLAVE_COUNT; i++) + { + uint8_t index = (current_slave_index + i) % SLAVE_COUNT; + if (slaves[index].is_online && slaves[index].is_ready) + { + current_slave_index = index; + found = 1; + break; + } + } + + if (found) + { + RS485_Send_Query(slaves[current_slave_index].address, 0x03); + expecting_response_from = slaves[current_slave_index].address; + comm_state = STATE_SENDING; + current_operation_start = current_time; + last_matrix_query_time = current_time; + } + else + { + // 没有在线从机,切换回状态查询 + poll_phase = PHASE_STATUS_QUERY; + current_slave_index = 0; + } + } + } + break; + + case STATE_SENDING: + // 发送完成,切换到等待响应状态 + if (current_time - current_operation_start >= SEND_TO_RECEIVE_DELAY) + { + comm_state = STATE_WAITING_RESPONSE; + current_operation_start = current_time; + } + break; + + case STATE_WAITING_RESPONSE: + // 检查响应超时 + if (current_time - current_operation_start >= RESPONSE_TIMEOUT) + { + Handle_Response_Timeout(); + comm_state = STATE_IDLE; + + // 查询间延时,避免连续查询 + HAL_Delay(INTER_QUERY_DELAY); + } + break; + + case STATE_PROCESSING: + // 处理完成,回到空闲状态 + comm_state = STATE_IDLE; + + // 查询间延时 + HAL_Delay(INTER_QUERY_DELAY); + break; } - HAL_Delay(10); + // 定期发送输出帧 + static uint32_t last_output_time = 0; + if (current_time - last_output_time >= 500) // 每500ms发送一次 + { + Send_Output_Frame(); + last_output_time = current_time; + } + + HAL_Delay(1); // 小延时,避免过度占用CPU + } +} + +/** + * @brief RS485发送查询命令 + */ +void RS485_Send_Query(uint8_t slave_address, uint8_t function_code) +{ + uint8_t frame_index = 0; + + // 构建查询帧 + tx_buffer[frame_index++] = slave_address; + tx_buffer[frame_index++] = function_code; + + // CRC校验 + uint16_t crc = Calculate_CRC16(tx_buffer, frame_index); + tx_buffer[frame_index++] = crc & 0xFF; + tx_buffer[frame_index++] = (crc >> 8) & 0xFF; + + // 发送 + HAL_UART_Transmit(RS485_SLAVE_PORT, tx_buffer, frame_index, 100); + + // 调试信息 + char debug_msg[64]; + const char* func_str = (function_code == 0x01) ? "status" : "matrix"; + snprintf(debug_msg, sizeof(debug_msg), "Sent %s query to slave %02X\r\n", func_str, slave_address); + HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)debug_msg, strlen(debug_msg), 100); +} + +/** + * @brief 处理接收到的数据 + */ +void Process_Received_Data(void) +{ + uint16_t received_count = Get_DMA_Received_Count(); + + // 处理缓冲区中的所有数据 + for(uint16_t i = 0; i < received_count && i < RX_BUFFER_SIZE - 3; i++) + { + uint8_t address = rx_buffer[i]; + uint8_t func_code = rx_buffer[i+1]; + + // 检查是否是我们期望的响应 + if(address == expecting_response_from && (func_code == 0x01 || func_code == 0x03)) + { + Handle_Slave_Response(address, func_code, &rx_buffer[i]); + + // 标记为处理状态 + comm_state = STATE_PROCESSING; + + // 跳过这个帧 + i += (func_code == 0x01) ? 4 : 8; + } + } +} + +/** + * @brief 处理从机响应 + */ +void Handle_Slave_Response(uint8_t slave_address, uint8_t function_code, uint8_t* data) +{ + uint8_t slave_index = slave_address - 0x01; + + if (slave_index >= SLAVE_COUNT) return; + + if(function_code == 0x01) // 状态响应 + { + uint8_t status = data[2]; + slaves[slave_index].is_online = 1; + slaves[slave_index].is_ready = (status == 0x01); + slaves[slave_index].last_response = HAL_GetTick(); + slaves[slave_index].retry_count = 0; + + char msg[64]; + snprintf(msg, sizeof(msg), "Slave %02X: online=1, ready=%d\r\n", + slave_address, slaves[slave_index].is_ready); + HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); + } + else if(function_code == 0x03) // 矩阵响应 + { + uint8_t data_length = data[2]; + if(data_length == 5) + { + memcpy(slaves[slave_index].matrix_data, &data[3], 5); + Update_Global_Matrix(slave_index); + + slaves[slave_index].last_response = HAL_GetTick(); + slaves[slave_index].retry_count = 0; + + char msg[64]; + snprintf(msg, sizeof(msg), "Slave %02X matrix updated\r\n", slave_address); + HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); + } + } +} + +/** + * @brief 处理响应超时 + */ +void Handle_Response_Timeout(void) +{ + // 找到对应的从机 + for (uint8_t i = 0; i < SLAVE_COUNT; i++) + { + if (slaves[i].address == expecting_response_from) + { + slaves[i].retry_count++; + + char msg[64]; + snprintf(msg, sizeof(msg), "Slave %02X timeout (retry %d/%d)\r\n", + expecting_response_from, slaves[i].retry_count, MAX_RETRY_COUNT); + HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); + + if (slaves[i].retry_count >= MAX_RETRY_COUNT) + { + slaves[i].is_online = 0; + slaves[i].is_ready = 0; + + char offline_msg[64]; + snprintf(offline_msg, sizeof(offline_msg), "Slave %02X marked offline\r\n", + expecting_response_from); + HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)offline_msg, strlen(offline_msg), 100); + } + break; + } } } @@ -153,183 +404,73 @@ uint16_t Get_DMA_Received_Count(void) } /** - * @brief 发送状态查询命令 + * @brief 更新全局矩阵数据 */ -void Send_Status_Query(void) +void Update_Global_Matrix(uint8_t slave_index) { - uint8_t frame_index = 0; + // 每个从机有30个点 (5行×6列) + uint8_t base_index = slave_index * 30; - // 构建查询帧 - tx_buffer[frame_index++] = SLAVE_ADDRESS; // 地址 - tx_buffer[frame_index++] = 0x01; // 功能码:读状态 - - // CRC校验 - uint16_t crc = Calculate_CRC16(tx_buffer, frame_index); - tx_buffer[frame_index++] = crc & 0xFF; - tx_buffer[frame_index++] = (crc >> 8) & 0xFF; - - // 发送 - HAL_UART_Transmit(RS485_SLAVE_PORT, tx_buffer, frame_index, 100); - - // 调试信息 - if (query_mode == 0) - { - char debug_msg[64]; - snprintf(debug_msg, sizeof(debug_msg), "Querying slave 03 status...\r\n"); - HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)debug_msg, strlen(debug_msg), 100); - } -} - -/** - * @brief 发送矩阵查询命令 - */ -void Send_Matrix_Query(void) -{ - uint8_t frame_index = 0; - - // 构建查询帧 - tx_buffer[frame_index++] = SLAVE_ADDRESS; // 地址 - tx_buffer[frame_index++] = 0x03; // 功能码:读矩阵 - - // CRC校验 - uint16_t crc = Calculate_CRC16(tx_buffer, frame_index); - tx_buffer[frame_index++] = crc & 0xFF; - tx_buffer[frame_index++] = (crc >> 8) & 0xFF; - - // 发送 - HAL_UART_Transmit(RS485_SLAVE_PORT, tx_buffer, frame_index, 100); - - // 调试信息 - 减少输出频率,避免刷屏 - static uint8_t counter = 0; - if (counter++ % 10 == 0) // 每10次输出一次 - { - char debug_msg[64]; - snprintf(debug_msg, sizeof(debug_msg), "Querying slave 03 matrix...\r\n"); - HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)debug_msg, strlen(debug_msg), 100); - } -} - -/** - * @brief 处理从机响应 - */ -void Process_Response(void) -{ - uint16_t received_count = Get_DMA_Received_Count(); - - // 处理缓冲区中的所有数据 - for(uint16_t i = 0; i < received_count && i < RX_BUFFER_SIZE - 3; i++) - { - uint8_t address = rx_buffer[i]; - uint8_t func_code = rx_buffer[i+1]; - - // 检查是否是从机3的响应 - if(address == SLAVE_ADDRESS && (func_code == 0x01 || func_code == 0x03)) - { - if(func_code == 0x01) // 状态响应 - { - uint8_t status = rx_buffer[i+2]; - slave.is_online = 1; - slave.is_ready = (status == 0x01); - - char msg[64]; - snprintf(msg, sizeof(msg), "Slave 03 status: online=%d, ready=%d\r\n", - slave.is_online, slave.is_ready); - HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); - - // 如果从机就绪,发送输出帧 - if (slave.is_ready) - { - Send_Output_Frame(); - } - } - else if(func_code == 0x03) // 矩阵响应 - { - uint8_t data_length = rx_buffer[i+2]; - if(data_length == 5 && (i + 8) < RX_BUFFER_SIZE) - { - memcpy(slave.matrix_data, &rx_buffer[i+3], 5); - Update_Matrix_Data(); - - // 每次收到矩阵数据都发送输出帧 - Send_Output_Frame(); - - char msg[64]; - snprintf(msg, sizeof(msg), "Slave 03 matrix updated\r\n"); - HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); - } - } - - // 跳过这个帧,继续处理后面的数据 - i += (func_code == 0x01) ? 4 : 8; - } - } -} - -/** - * @brief 更新矩阵数据 - */ -void Update_Matrix_Data(void) -{ for(uint8_t row = 0; row < 5; row++) { - uint8_t row_data = slave.matrix_data[row]; + uint8_t row_data = slaves[slave_index].matrix_data[row]; for(uint8_t col = 0; col < 6; col++) { uint8_t point_state = (row_data & (1 << col)) ? 1 : 0; - uint8_t matrix_index = row * 6 + col; + uint8_t global_index = base_index + row * 6 + col; - if(matrix_index < TOTAL_MATRIX_POINTS) + if(global_index < TOTAL_MATRIX_POINTS) { - matrix_data[matrix_index] = point_state; + global_matrix[global_index] = point_state; } } } } /** - * @brief 发送输出帧(包含全部30个点) + * @brief 发送输出帧 */ void Send_Output_Frame(void) { - // 构建输出帧 - 需要容纳全部30个点 - uint8_t output_frame[40] = {0}; + // 构建完整的输出帧 - 包含90个矩阵点 + uint8_t output_frame[100] = {0}; // 增加缓冲区大小 uint8_t index = 0; // 帧头 output_frame[index++] = 0xAA; output_frame[index++] = 0x55; - // 从机状态 - output_frame[index++] = slave.is_online; - output_frame[index++] = slave.is_ready; + // 从机在线状态 (3字节) + for(uint8_t i = 0; i < SLAVE_COUNT; i++) + { + output_frame[index++] = slaves[i].is_online; + } - // 矩阵数据 (全部30个点) + // 从机就绪状态 (3字节) + for(uint8_t i = 0; i < SLAVE_COUNT; i++) + { + output_frame[index++] = slaves[i].is_ready; + } + + // 完整的矩阵数据 (90个点) for(uint8_t i = 0; i < TOTAL_MATRIX_POINTS; i++) { - output_frame[index++] = matrix_data[i]; + output_frame[index++] = global_matrix[i]; } // 通过RS485发送 HAL_UART_Transmit(RS485_OUTPUT_PORT, output_frame, index, 100); - // 调试信息 - 显示所有点的状态 + // 调试信息 static uint8_t output_counter = 0; if (output_counter++ % 5 == 0) // 每5次输出一次,避免刷屏 { char msg[128]; snprintf(msg, sizeof(msg), - "Output: online=%d, ready=%d, Matrix: " - "%d%d%d%d%d%d " // 行0 - "%d%d%d%d%d%d " // 行1 - "%d%d%d%d%d%d " // 行2 - "%d%d%d%d%d%d " // 行3 - "%d%d%d%d%d%d\r\n", - slave.is_online, slave.is_ready, - matrix_data[0], matrix_data[1], matrix_data[2], matrix_data[3], matrix_data[4], matrix_data[5], - matrix_data[6], matrix_data[7], matrix_data[8], matrix_data[9], matrix_data[10], matrix_data[11], - matrix_data[12], matrix_data[13], matrix_data[14], matrix_data[15], matrix_data[16], matrix_data[17], - matrix_data[18], matrix_data[19], matrix_data[20], matrix_data[21], matrix_data[22], matrix_data[23], - matrix_data[24], matrix_data[25], matrix_data[26], matrix_data[27], matrix_data[28], matrix_data[29]); + "Output: online=%d,%d,%d ready=%d,%d,%d points=%d\r\n", + slaves[0].is_online, slaves[1].is_online, slaves[2].is_online, + slaves[0].is_ready, slaves[1].is_ready, slaves[2].is_ready, + TOTAL_MATRIX_POINTS); HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100); } } @@ -426,4 +567,8 @@ void assert_failed(uint8_t *file, uint32_t line) ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } -#endif /* USE_FULL_ASSERT */ \ No newline at end of file +#endif /* USE_FULL_ASSERT */ + +/* USER CODE BEGIN 4 */ +// 这里可以放置其他用户代码,如中断回调函数等 +/* USER CODE END 4 */ \ No newline at end of file diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.kkkjt b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.kkkjt index 613e099..7099c1d 100644 --- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.kkkjt +++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.kkkjt @@ -101,17 +101,17 @@ -1 - 128 - 170 - 1610 - 887 + 239 + 335 + 1775 + 998 0 420 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000064433A5C55736572735C6B6B6B6A745C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000C5D4F200FFFFFFFF64433A5C55736572735C6B6B6B6A745C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000069030000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000064433A5C55736572735C6B6B6B6A745C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000C5D4F200FFFFFFFF64433A5C55736572735C6B6B6B6A745C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700003A030000 @@ -150,7 +150,7 @@ 0 16 - 0300000066000000ED00000039030000 + 0300000066000000ED0000000A030000 16 @@ -170,7 +170,7 @@ 0 16 - 0300000066000000ED00000039030000 + 0300000066000000ED0000000A030000 16 @@ -450,7 +450,7 @@ 0 16 - 0300000066000000ED00000039030000 + 0300000066000000ED0000000A030000 16 @@ -470,7 +470,7 @@ 0 16 - 0300000066000000ED00000039030000 + 0300000066000000ED0000000A030000 16 @@ -490,7 +490,7 @@ 0 16 - 000000006A03000080070000E6030000 + 030000003E0300007D070000CD030000 16 @@ -530,7 +530,7 @@ 0 16 - 030000006D0300007D070000CD030000 + 030000003E0300007D0700009E030000 16 @@ -1160,7 +1160,7 @@ 38007 38007 - 0 + 1 0 0 0 @@ -1170,7 +1170,7 @@ 0 16 - 030000006D0300007D070000CD030000 + 030000003E0300007D070000CD030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 030000006D0300007D070000CD030000 + 030000003E0300007D0700009E030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 030000006D0300007D070000CD030000 + 030000003E0300007D0700009E030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 030000006D0300007D070000CD030000 + 030000003E0300007D0700009E030000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000052030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000520300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000023030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000230300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000002303000080070000270300000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000002703000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2560 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000094144435F537461727496000000000000000100094144435F537461727400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2835 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000134D61747269785F436F6D70726573735F526F7796000000000000000E00134D61747269785F436F6D70726573735F526F770B6D61747269785F646174610C6465766963655F73746174650B63757272656E745F726F7714554152545F53656E645F4144435F56616C756573056372633136036372630C636F6D70726573735F726F770B4D6174726978526F775F741848414C5F4144435F436F6E7643706C7443616C6C6261636B0875696E7431365F741148414C5F4144435F53746172745F444D412475696E7433325F74206164635F6275666665725B4144435F4255464645525F53495A455D144D61747269785F5363616E5F4E6578745F526F770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1874,9 +1874,9 @@ ../Core/Src/main.c - 28 - 583 - 969 + 1 + 416 + 476 1 0 diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf index 8000911555d61a6093a48bd224d858ae0ce023d3..2cc2cdb7d034087ec65cdb69f887133089060727 100644 GIT binary patch delta 40839 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 diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm index c691432..eec0031 100644 --- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm +++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm @@ -3,68 +3,46 @@

 

Vision Build Log

Tool Versions:

-IDE-Version: Vision V5.41.0.0 -Copyright (C) 2024 ARM Ltd and ARM Germany GmbH. All rights reserved. -License Information: 123 1543588107@qq.com, 123, LIC=65ISZ-J0KE9-011P1-CAV5H-FN80T-C8A3E +IDE-Version: Vision V5.43.1.0 +Copyright (C) 2025 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: 23 23, 2323, LIC=X96CK-Z03Q7-63IMB-2TXM6-GA9NR-VVDXS Tool Versions: -Toolchain: MDK-ARM Plus Version: 5.41.0.0 -Toolchain Path: C:\app\Keil_v5\ARM\ARMCC\Bin +Toolchain: MDK-ARM Plus Version: 5.43.0.0 +Toolchain Path: C:\keil\ARM\ARMCC\Bin C Compiler: Armcc.exe V5.06 update 7 (build 960) Assembler: Armasm.exe V5.06 update 7 (build 960) Linker/Locator: ArmLink.exe V5.06 update 7 (build 960) Library Manager: ArmAr.exe V5.06 update 7 (build 960) Hex Converter: FromElf.exe V5.06 update 7 (build 960) -CPU DLL: SARMCM3.DLL V5.41.0.0 +CPU DLL: SARMCM3.DLL V5.43.0.0 Dialog DLL: DCM.DLL V1.17.5.0 -Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.3.0.0 -Dialog DLL: TCM.DLL V1.56.4.0 +Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.3.1.0 +Dialog DLL: TCM.DLL V1.56.6.0

Project:

-C:\Users\15435\Desktop\PressureSensorBoard\Software\master\PressureSensorBoardMaster\MDK-ARM\PressureSensorBoardMaster.uvprojx -Project File Date: 11/12/2025 +C:\Users\kkkjt\Desktop\PressureSensorBoard\Software\master\PressureSensorBoardMaster\MDK-ARM\PressureSensorBoardMaster.uvprojx +Project File Date: 11/10/2025

Output:

-*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\app\Keil_v5\ARM\ARMCC\Bin' -Rebuild target 'PressureSensorBoardMaster' -assembling startup_stm32f103xb.s... -compiling stm32f1xx_hal_rcc_ex.c... -compiling stm32f1xx_it.c... -compiling usart.c... -compiling dma.c... -compiling tim.c... -compiling stm32f1xx_hal_cortex.c... -compiling stm32f1xx_hal_msp.c... -compiling stm32f1xx_hal.c... +*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\keil\ARM\ARMCC\Bin' +Build target 'PressureSensorBoardMaster' compiling main.c... -../Core/Src/main.c(429): warning: #1-D: last line of file ends without a newline - #endif /* USE_FULL_ASSERT */ +../Core/Src/main.c(574): warning: #1-D: last line of file ends without a newline + /* USER CODE END 4 */ ../Core/Src/main.c: 1 warning, 0 errors -compiling stm32f1xx_hal_gpio_ex.c... -compiling gpio.c... -compiling stm32f1xx_hal_gpio.c... -compiling stm32f1xx_hal_dma.c... -compiling stm32f1xx_hal_rcc.c... -compiling stm32f1xx_hal_tim_ex.c... -compiling stm32f1xx_hal_tim.c... -compiling stm32f1xx_hal_pwr.c... -compiling stm32f1xx_hal_exti.c... -compiling system_stm32f1xx.c... -compiling stm32f1xx_hal_flash.c... -compiling stm32f1xx_hal_flash_ex.c... -compiling stm32f1xx_hal_uart.c... linking... -Program Size: Code=9100 RO-data=416 RW-data=36 ZI-data=2140 +Program Size: Code=9976 RO-data=368 RW-data=88 ZI-data=2232 FromELF: creating hex file... "PressureSensorBoardMaster\PressureSensorBoardMaster.axf" - 0 Error(s), 1 Warning(s).

Software Packages used:

Package Vendor: ARM - https://www.keil.com/pack/ARM.CMSIS.6.1.0.pack - ARM::CMSIS@6.1.0 + https://www.keil.com/pack/ARM.CMSIS.6.2.0.pack + ARM::CMSIS@6.2.0 CMSIS (Common Microcontroller Software Interface Standard) - * Component: CORE Version: 6.1.0 + * Component: CORE Version: 6.1.1 Package Vendor: Keil https://www.keil.com/pack/Keil.STM32F1xx_DFP.2.4.1.pack @@ -73,14 +51,14 @@ Package Vendor: Keil

Collection of Component include folders:

./RTE/_PressureSensorBoardMaster - C:/app/Keil_v5/ARM/Packs/ARM/CMSIS/6.1.0/CMSIS/Core/Include - C:/app/Keil_v5/ARM/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include + C:/keil/ARM/CMSIS/6.2.0/CMSIS/Core/Include + C:/keil/Keil/STM32F1xx_DFP/2.4.1/Device/Include

Collection of Component Files used:

- * Component: ARM::CMSIS:CORE@6.1.0 + * Component: ARM::CMSIS:CORE@6.1.1 Include file: CMSIS/Core/Include/tz_context.h -Build Time Elapsed: 00:00:03 +Build Time Elapsed: 00:00:01
diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.hex b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.hex index 96a22b9..2467663 100644 --- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.hex +++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.hex @@ -1,600 +1,655 @@ :020000040800F2 -:1000000080080020910100088B1A00087B18000866 -:10001000891A00084B050008612300080000000051 -:100020000000000000000000000000009D1B000810 -:10003000B705000800000000911A0008BD1D000867 -:10004000AB010008AB010008AB010008AB010008E0 -:10005000AB010008AB010008AB010008AB010008D0 -:10006000AB010008AB010008AB010008AB010008C0 -:10007000AB010008AB010008AB01000881050008D6 -:10008000AB010008AB010008AB010008AB010008A0 -:10009000AB010008AB010008AB010008AB01000890 -:1000A000AB010008AB010008AB010008AB01000880 -:1000B000AB010008AB010008AB010008AB01000870 -:1000C000AB010008AB010008AB010008AB01000860 -:1000D000AB010008ED220008F92200080523000802 -:1000E000AB010008AB010008AB01000800F002F80A -:1000F00000F03FF80AA090E8000C82448344AAF183 -:100100000107DA4501D100F034F8AFF2090EBAE880 +:10000000100900209D010008371E0008251C00086B +:10001000351E00084B070008E92500080000000015 +:100020000000000000000000000000002D1F00087C +:10003000B7070008000000003D1E0008352000083A +:10004000B7010008B7010008B7010008B7010008B0 +:10005000B7010008B7010008B7010008B7010008A0 +:10006000B7010008B7010008B7010008B701000890 +:10007000B7010008B7010008B701000881070008B0 +:10008000B7010008B7010008B7010008B701000870 +:10009000B7010008B7010008B7010008B701000860 +:1000A000B7010008B7010008B7010008B701000850 +:1000B000B7010008B7010008B7010008B701000840 +:1000C000B7010008B7010008B7010008B701000830 +:1000D000B701000865250008712500087D25000886 +:1000E000B7010008B7010008B701000800F002F8E6 +:1000F00000F045F80AA090E8000C82448344AAF17D +:100100000107DA4501D100F03AF8AFF2090EBAE87A :100110000F0013F0010F18BFFB1A43F0010318473B -:10012000EC2300000C240000103A24BF78C878C1EA +:100120002827000048270000103A24BF78C878C16B :10013000FAD8520724BF30C830C144BF04680C60ED :10014000704700000023002400250026103A28BF35 :1001500078C1FBD8520728BF30C148BF0B60704739 -:10016000642900F08380002070471FB51FBD10B5C3 -:1001700010BD00F0B0F91146FFF7F7FF02F002F9E9 -:1001800000F0CEF903B4FFF7F2FF03BC00F0D6F99C -:100190000948804709480047FEE7FEE7FEE7FEE71B -:1001A000FEE7FEE7FEE7FEE7FEE7FEE70448054957 -:1001B000054A064B70470000211E0008ED000008AC -:1001C000800200208008002080040020800400209D -:1001D0000FB41CB50C0007AA009001D02044401EAB -:1001E000074B7B4469460190069800F054F9002CB7 -:1001F00003D06946002000F061F91CBC5DF814FBD7 -:10020000E10200002DE9F0410E4604460020206284 -:100210002046E168884730B3252805D0D4E901217C -:100220009047206A401CF2E7E16820460027884793 -:10023000050018D0A5F14100192802D820354FF447 -:1002400000673246294620462760FFF789FF40B104 -:10025000012804D0F61D26F007060836D8E7361D1B -:10026000D6E72846DAE7206ABDE8F0812DE9F041BB -:100270000646002410687529314616A510D0AFF344 -:100280000080002802DA404213A507E031688A079F -:1002900001D512A502E0490704D511A5012401E00A -:1002A000AFF3008000210A2206F1240709E0B0FB29 -:1002B000F2FCB0FBF2F302FB1C003030785418461D -:1002C000491C0028F3D123462A463046BDE8F041B8 -:1002D00000F083B8000000002D0000002B0000009B -:1002E0002000000010B5431C02E010F8011B71B1A2 -:1002F0008107FAD14FF0013202C88C1A8C4314EAFC -:10030000C211F9D0C01A0A0603D0C01E10BDC01A0F -:1003100010BD0A0401D0801E10BD0902FCD0401E91 -:1003200010BD10B5203AC0F00B80B1E81850203A4B -:10033000A0E81850B1E81850A0E81850BFF4F5AF85 -:100340005FEA027C24BFB1E81850A0E8185044BF0F -:1003500018C918C0BDE810405FEA827C24BF51F87C -:10036000043B40F8043B08BF7047D20728BF31F870 -:10037000023B48BF11F8012B28BF20F8023B48BFC1 -:1003800000F8012B70474FF0000200B51346944669 -:100390009646203922BFA0E80C50A0E80C50B1F1DD -:1003A0002001BFF4F7AF090728BFA0E80C5048BFF1 -:1003B0000CC05DF804EB890028BF40F8042B08BF8F -:1003C000704748BF20F8022B11F0804F18BF00F88B -:1003D000012B70477047704770472DE9F0470D4675 -:1003E00099469246044600F124080168880604D51F -:1003F000E06921F01001216000E00120A84201DD48 -:10040000471B00E00027A1697A1902EB0900081ACE -:10041000A0612078C00602D42046AFF300800026F9 -:1004200008E0D4E901211AF806009047206A401C30 -:10043000761C20624E45F4DB2078C0060AD52046A3 -:10044000AFF3008006E0D4E9012130209047206A14 -:10045000401C2062381EA7F10107F4DC07E0D4E954 -:10046000012118F805009047206A401C2062281ED0 -:10047000A5F10105F3DC2046AFF3008020780006EB -:1004800002D50220BDE8F0870120FBE701694A1C84 -:1004900002610878704700B58FB0CDE901310021C5 -:1004A000059105497944CDE9031011466846FFF7E7 -:1004B000A9FE0FB000BD0000E5FFFFFF0A6802F8CB -:1004C000010B0A607047D1E900239A4202D2531C03 -:1004D0000B6010707047754600F02CF8AE460500B2 -:1004E0006946534620F00700854618B020B5FFF74F -:1004F0005DFEBDE820404FF000064FF000074FF0D2 -:1005000000084FF0000B21F00701AC46ACE8C00931 -:10051000ACE8C009ACE8C009ACE8C0098D4670473A -:1005200010B50446AFF300802046BDE81040FFF749 -:1005300029BE000000487047200200200149182011 -:10054000ABBEFEE7260002007047FEE770B5054629 -:100550004FF6FF7000224AF201040EE0AB5C5840F7 -:100560000023C60702D084EA500000E040085B1C6C -:10057000DBB2082BF5D3521CD2B28A42EED370BD47 -:10058000014800F095B80000DC01002030B590F87B -:1005900040500124AC40C56B6C60046863604368E4 -:1005A000102B036803D099600068C26030BD9A6068 -:1005B0000068C16030BD704772B6FEE70348C06B8B -:1005C00000684068C0F1200080B27047040100203C -:1005D00010B590F821100022022905D00421816372 -:1005E00080F82020012010BD01680B6823F00E0365 -:1005F0000B6001680B6823F001030B6090F840303A -:10060000C46B012101FA03F3636080F8211080F8C4 -:100610002020104610BD000010B590F821100024D5 -:10062000022903D00421816301243DE001680A68A6 -:1006300022F00E020A6001680A6822F001020A60D4 -:100640001A4A0168914201D1012121E0174A14326E -:10065000914201D110211BE0144A2832914201D16C -:10066000891515E0114A3C32914201D189140FE0FD -:100670000E4A5032914202D14FF4803108E00B4AC9 -:100680006432914202D14FF4801101E04FF0807149 -:10069000064A083A5160012180F82110002180F8B3 -:1006A0002010416B01B18847204610BD0800024070 -:1006B0002DE9F05FC16B0C6801680B68D0F840C091 -:1006C000042202FA0CF2494DDFF824A1494E4A4FA8 -:1006D000DFF828B1DFF828E122422CD05A072AD5CA -:1006E0000A68920603D40A6822F004020A600168CC -:1006F000A94201D1042219E0514501D1402215E05F -:10070000B14202D14FF4806210E0B94202D14FF4FD -:1007100080420BE0594502D14FF4802206E071453A -:1007200002D14FF4800201E04FF080622F49083976 -:100730004A60C16A3BE04FF0020808FA0CF818EA78 -:10074000040F4FF000094FF0010235D05FEA8378C3 -:1007500032D50B689B0605D40B6823F00A030B60A7 -:1007600080F821200168A94201D1022219E05145F7 -:1007700001D1202215E0B14202D14FF4007210E005 -:10078000B94202D14FF400520BE0594502D14FF467 -:10079000003206E0714502D14FF4001201E04FF043 -:1007A0000072124908394A6080F82090816A002955 -:1007B0001AD0BDE8F05F0847082505FA0CF5254278 -:1007C00012D01B0710D50B6823F00E030B6090F8B6 -:1007D0004010C36B02FA01F15960826380F8212056 -:1007E00080F82090016BE2E7BDE8F09F080002402E -:1007F0001C00024030000240440002405800024009 -:100800006C00024030B528B308C8134914221944BB -:10081000B1FBF2F18900C163104981630221417784 -:100820001A6843F6F0718A43D0E900142143D0E9F5 -:1008300002452C43214304692143446921438469CF -:10084000214311431960002141630122427701775E -:10085000084630BD012030BDF8FFFDBF000002405A -:1008600070B5044690F82000002501280CD0012026 -:1008700084F8200094F821600020012E06D084F82E -:1008800020000225284670BD022070BD022684F893 -:100890002160A0632068066826F0010606602046F5 -:1008A000FFF774FEE06A00282068016802D041F07A -:1008B0000E0106E021F0040101602068016841F0AA -:1008C0000A0101602068016841F001010160D9E777 -:1008D00070B5044600F004F90546601C02D00448D7 -:1008E0000078044400F0FCF8401BA042FAD370BD2D -:1008F000140000202DE9F84FDFF8B8910024A9F189 -:10090000040B23460F2709F1040AABF1040EC9E0DA -:100910000125A5402A40AA427DD1674ED1F804C0E6 -:10092000ACEB0608B44532D014DCBCF1030F3AD06E -:1009300009DCBCF1000F2AD0BCF1010F1CD0BCF1C6 -:10094000020F31D11DE0BCF1110F17D0BCF1120F15 -:100950002AD119E0B8F5881F19D006DCB8F5803F18 -:1009600015D0B8F5801F1FD111E0B8F5001F0ED0CB -:10097000B8F5041F18D10AE0CB6815E0CB681B1D41 -:1009800012E0CB6808330FE0CB680C330CE08B68C7 -:100990002BB1012B4FF0080303D0456104E0042381 -:1009A00002E0056100E00023FF2A01D8064601E0CD -:1009B00000F104064FEA840501D9A5F12005D6F817 -:1009C000008007FA05FC28EA0C0803FA05F548EA56 -:1009D0000508C6F800804D68ED0062D5374DAE6958 -:1009E00046F00106AE61AD6924F0030605F001058D -:1009F0000095334D06EB050CDCF80850A607360FC2 -:100A000007FA06F825EA0805DFF8B880404503D163 -:100A10004FF0000817E044E0DFF8AC80404502D119 -:100A20004FF001080FE0DFF8A480404502D14FF0FD -:100A3000020808E0DFF89880404502D14FF0030833 -:100A400001E04FF0040808FA06F848EA0508CCF877 -:100A500008804D68D9F80060ED024D4601D5164377 -:100A600000E096432E604D68DAF80060AD0255460E -:100A700001D5164300E096432E604D68DBF8006018 -:100A8000AD035D4601D5164300E096432E604D68E8 -:100A9000DEF80060ED03754601D5164300E096438D -:100AA0002E60641C0D682A46E5407FF431AFBDE836 -:100AB000F88F0000080401400000111000100240EF -:100AC0000000014000080140000C014000100140FE -:100AD000001401400AB1016170470904FBE70000FE -:100AE00001488068704700001400002002488168B7 -:100AF000027811448160704714000020074810B547 -:100B0000016841F010010160032000F075F80F202A -:100B100000F006F800F024F8002010BD002002408C -:100B200070B50D4D04464FF47A712878B1FBF0F0A2 -:100B30000A490968B1FBF0F000F0F0FA48B9102C4E -:100B400007D200222146501E00F036F800206C60CB -:100B500070BD012070BD00001400002020000020A6 -:100B60000C4808B5816941F001018161816901F09A -:100B700001010091C16941F08051C161C06900F07B -:100B8000805000900448416821F0E06141F000711C -:100B9000416008BD0010024000000140002809DB50 -:100BA00000F01F02012191404009800000F1E02087 -:100BB000C0F8001170470000F0B40E4B1B680C46E3 -:100BC000C3F30223C3F10705042D00D90425191D21 -:100BD000072901D2002300E0DB1E012606FA05F1F9 -:100BE000491E214099409E40761E16403143F0BC7C -:100BF00001F0B7BB0CED00E0064900F00702086801 -:100C00004FF6FF03184040EA0220034A10430860F1 -:100C1000704700000CED00E00000FA05704700008E -:100C20002DE9F0470F46050061D0434E306800F0D3 -:100C30000700B84209D2306820F00700384330601E -:100C4000306800F00700B84251D128683B4C81075A -:100C500012D5400703D5606840F4E06060602878F2 -:100C6000000703D5606840F4605060606068A96860 -:100C700020F0F000084360602878C00728D068683A -:100C8000012810D02168022810D0890700292EDA07 -:100C9000616821F0030101436160FFF721FF804695 -:100CA00041F288390DE021688903EFE78901EDE71A -:100CB000FFF716FFA0EB0801494502D90320BDE864 -:100CC000F0876068696800F00C00B0EB810FEFD12D -:100CD000306800F00700B8420BD9306820F00700F8 -:100CE00038433060306800F00700B84201D001207E -:100CF000E5E72878400705D56068E96820F4E060FA -:100D0000084360602878000706D56068296920F4E8 -:100D1000605040EAC100606000F03EF86168084A37 -:100D2000C1F30311515CC8400649086006480068D9 -:100D3000FFF7F6FE0020C2E700200240001002404C -:100D40008A2400082000002018000020014901200A -:100D5000C864704700004242044805490068496879 -:100D6000044AC1F30221515CC840704720000020B2 -:100D7000001002409A2400080448054900684968A8 -:100D8000044AC1F3C221515CC840704720000020D2 -:100D9000001002409A2400080E4A51680E4801F0E3 -:100DA0000C03042B11D0082B0FD10C48C1F3834343 -:100DB000C903C05C0AD55168084AC1F34041921E7C -:100DC000515C054A5043B0FBF1F070470449484379 -:100DD000704700000010024000127A007A240008D8 -:100DE00000093D0010B5044CA068000603D5FFF7CC -:100DF00015FF8020A07210BD001002402DE9F84FB1 -:100E0000040070D02078C04DC00749D06868C0F396 -:100E10008100012807D06868C0F38100022809D149 -:100E20006868C00306D52868800339D56068002843 -:100E3000E7D035E06068B0F5803F0BD010B1B0F579 -:100E4000A02F11D0286820F480302860286820F472 -:100E5000802002E0286840F480302860606890B10B -:100E6000FFF73EFE06460AE0286840F4802028602E -:100E7000F0E700BFFFF734FE801B642873D82868B2 -:100E80008003F7D50CE0FFF72BFE064605E000BF18 -:100E9000FFF726FE801B6428F0D828688003F7D46B -:100EA00020789A4E80074FF001094FF0000839D59D -:100EB000686810F00C0F07D06868C0F38100022842 -:100EC00009D16868C00306D42868800714D5206952 -:100ED000012808D110E02069B0B1C6F80090FFF7F2 -:100EE000FFFD074605E00AE1FFF7FAFDC01B0228F7 -:100EF000C4D828688007F7D52868616920F0F80011 -:100F000040EAC10028600DE0C6F80080FFF7E8FD68 -:100F1000074604E0FFF7E4FDC01B022823D8286839 -:100F20008007F7D4207800072CD57948A169D9B17A -:100F3000C0F80090FFF7D4FD074604E0FFF7D0FDAE -:100F4000C01B02280FD8686A8007F7D571484FF494 -:100F5000FA510068B0FBF1F0009000BF0098411E0C -:100F60000091FAD20EE080E0C0F80080FFF7B8FDF3 -:100F7000074604E0FFF7B4FDC01B022875D8686A75 -:100F80008007F7D42078400760D5E8690027C000C3 -:100F900008D4E86940F08050E861E869012700F072 -:100FA000805000905C480168C90513D401688346ED -:100FB00041F480710160FFF793FD824606E000BFB7 -:100FC000FFF78EFDA0EB0A0064284ED8DBF8000086 -:100FD000C005F5D5E06801280AD008B1052813D06E -:100FE000286A20F001002862286A20F0040002E04C -:100FF000286A40F001002862E06841F2883B98B11D -:10100000FFF76EFD82460BE0286A40F0040028627C -:10101000EEE700BFFFF764FDA0EB0A0159455AD87F -:10102000286A8007F6D50CE0FFF75AFD824605E0F6 -:10103000FFF756FDA0EB0A0159454CD8286A8007F6 -:10104000F6D41FB1E86920F08050E861E06988B308 -:101050006968C1F38101022944D00228C6F8608082 -:1010600004D0FFF73DFD044638E034E0FFF738FDDB -:10107000074604E0FFF734FDC01B02282BD8286880 -:101080008001F7D4206AB0F5803F05D16868A16877 -:1010900020F4003008436860D4E908010843696817 -:1010A00021F4741108436860C6F86090FFF718FDDA -:1010B000044606E025E000BFFFF712FD001B0228F2 -:1010C00009D828688001F7D51BE000BFFFF708FDAD -:1010D000001B022802D90320BDE8F88F2868800190 -:1010E000F4D40EE00128F7D06868226A00F4803159 -:1010F000914204D1616A00F47010884201D001204D -:10110000EAE70020E8E70000001002400000424249 -:1011100080044242200000200070004010B5401EB4 -:10112000B0F1807F01D3012010BD4FF0E024606159 -:101130000F21601701F015F90020A0610720206140 -:10114000002010BD70B590F83C20012A26D0012463 -:1011500080F83C40022280F83D2003685A689D6870 -:1011600022F070060A6832435A600D4B02689A42B8 -:1011700008D0B2F1804F05D00A4B9A4202D00A4BF8 -:101180009A4204D1496825F080031943916080F8A0 -:101190003D40002180F83C10084670BD022070BD23 -:1011A000002C0140000400400008004010B504007D -:1011B00003D094F83D0010B107E0012010BD0020DD -:1011C00084F83C00204600F01FF8022084F83D001F -:1011D000211D206800F026FE012084F8460084F8D6 -:1011E0003E0084F83F0084F8400084F8410084F811 -:1011F000420084F8430084F8440084F8450084F8F1 -:101200003D00002010BD000008B501680B48B1F199 -:10121000804F0BD00A4A914207D1C16941F00201C7 -:10122000C161C06900F00200009008BDC16941F0D1 -:101230000101C161C06900F00100F5E70010024042 -:101240000004004090F83D10012901D001207047B2 -:10125000022180F83D100168CA6842F00102CA60AC -:1012600000680B49884208D0B0F1804F05D0094989 -:10127000884202D00849884204D1816801F0070100 -:10128000062903D0016841F0010101600020704788 -:10129000002C0140000400400008004070B50446E6 -:1012A00090F83C000025012817D0012684F83C6006 -:1012B000022084F83D002068826822F0770222F440 -:1012C0007F4282600868502838D00DDC20284FD03B -:1012D00005DC90B3102811D14AE0022070BD3028FF -:1012E00046D040280AD13BE060282FD070280DD08E -:1012F000B0F5805F03D0B0F5005F12D0012584F80F -:101300003D60002084F83C00284670BDCB68D1E9E0 -:101310000121206800F0C2FD2068816841F077015A -:1013200009E0CB68D1E90121206800F0B7FD206811 -:10133000816841F480418160E1E719E0CA68496849 -:10134000206800F0BDFD5021206806E0CA684968A9 -:10135000206800F0C6FD6021206800F0A9FDCEE7FE -:10136000CA684968206800F0ABFD40212068F4E7B6 -:10137000226801461046F0E770477047F8B50168EB -:1013800004460868CA684B6910F00F0F4FF000055B -:1013900059D003F0010602F49077374365D0C107B6 -:1013A00005D0D10503D5616C41F0010161644107AD -:1013B00005D5D90703D0616C41F002016164810752 -:1013C00005D5D90703D0616C41F0040161640107C0 -:1013D00007D502F02001314303D0616C41F00801D0 -:1013E0006164616C00293AD0800604D5900602D56C -:1013F000204600F03CFE20684069616CC0F380101C -:10140000090700D460B3204600F0FCFD2068406965 -:10141000400621D52068143050E8001F21F040011B -:1014200040E80012002AF5D1E06BA8B16D49416394 -:10143000E06BFFF7F1F8002811D0E06B416B01B0D1 -:10144000BDE8F040084783060FD593060DD520462A -:10145000BDE8F84000F00BBE2046FFF78EFFF8BD58 -:101460002046FFF78AFF6564F8BD266B2023012E16 -:101470007CD1C6067AD5D60678D50868486800902B -:1014800048694FF00206400640D5E16B08684068A5 -:101490000004000CE8D0A28D8242E5D9E08588697D -:1014A00020282DD020680C3050E8001F21F48071D6 -:1014B00040E80012002AF5D12068143050E8001FDF -:1014C00021F0010140E80012002AF5D12068143013 -:1014D00050E8001F21F0400140E80012002AF5D139 -:1014E00084F84230256320680C3050E8001F21F05A -:1014F000100140E80012002AF5D1E06BFFF768F810 -:101500006663A08DE18D401A81B22AE0A08DE18D45 -:10151000401A81B2E08D0028A6D00029A4D022680C -:101520000C3252E8000F20F4907042E80007002FC0 -:10153000F5D12068143050E8002F22F0010240E875 -:101540000027002FF5D184F84230256320680C3045 -:1015500050E8002F22F0100240E80023002BF5D1C4 -:1015600066632046FFF708FFF8BDFFE705062BD5A9 -:10157000150629D594F841002128F5D1A068B0F5C9 -:10158000805F01D12069B0B1206A411C21622168CD -:1015900000784860E08C401E0004000CE084E3D139 -:1015A0002068C16821F08001C1602068C16841F0F5 -:1015B0004001C160D8E7206A0088C0F30800486095 -:1015C000206A801C2062E5E74006CDD55006CBD5C9 -:1015D000CA68204622F04002CA6084F8413000F018 -:1015E0004BF9C1E7071F000870B5040004D094F858 -:1015F0004100002510B106E0012070BD84F8405084 -:10160000204600F023F8242084F841002068C168B7 -:1016100021F40051C160204600F08AFD2068016974 -:1016200021F4904101612068416921F02A01416162 -:101630002068C16841F40051C1606564202084F8CD -:10164000410084F842006563002070BDF0B585B0AC -:1016500000240094019402940394054603684F48C3 -:10166000DFF834C1022103224D4E071563453BD1FB -:10167000836943F480438361836903F48043049363 -:10168000836943F0040383618069039200F00400DE -:1016900004900802CDE9000169463046FFF72AF9B7 -:1016A000CDE90074694630460294FFF723F93E4EB7 -:1016B0003C48C6E900048020C6E90240202034618D -:1016C000C6E905404FF44050F0613046FFF79AF804 -:1016D00008B1FEF771FFEE63002211462520756206 -:1016E000FFF76AFA252028E0304DAB4229D1C369C3 -:1016F00043F40033C361C36903F400330493836983 -:1017000043F0040383618069039200F004000490B5 -:101710000420CDE9000169463046FFF7EBF80820C8 -:10172000CDE90004694630460294FFF7E3F8002251 -:1017300011462620FFF740FA2620FFF72FFA05B0C2 -:10174000F0BD1B4DAB42FAD1C36943F48023C361A2 -:10175000C36903F480230493836943F0080383611E -:101760008069CDE9007100F00800CDE90320114D3A -:1017700069462846FFF7BEF8E814CDE9000469463B -:1017800028460294FFF7B6F8002211462720FFF7FB -:1017900013FA2720D1E70000003801400010024072 -:1017A0000008014058000240DC01002000440040D5 -:1017B00000480040000C014090F84230202B01D03E -:1017C0000220704721B11AB10023036300F00CBD61 -:1017D00001207047704770472DE9F843044690F8A0 -:1017E0004100984616460D46202802D00220BDE84A -:1017F000F88385B17EB100206064212084F8410027 -:10180000FFF76EF9A6848146E684A0682027B0F52C -:10181000805F02D003E00120E9E7206910B12E4685 -:1018200000250EE000260CE08021204600F024FD7B -:10183000A8B9C6B116F8010B21684860E08C401EBB -:10184000E084E08C4B464FF00002CDF80080002889 -:10185000EAD14FF04001204600F00EFD40B184F87F -:1018600041700320C3E735F8020BC0F30800E3E73B -:1018700084F841700020BAE77047FEE7094808B5D0 -:10188000416941F0010141614069002200F001001D -:10189000009011460F20FFF78FF9BDE808400F2098 -:1018A000FFF77CB90010024030B585B0002418481D -:1018B0000094019402940394816941F020018161B4 -:1018C000816901F020010491816941F00401816185 -:1018D000816901F004010491816941F0080181618D -:1018E00080690C4D00F0080004900122F021284688 -:1018F000FFF7F0F8F02000900120CDE9010402206C -:10190000039069462846FEF7F5FF05B030BD00009C -:1019100000100240000C014010B586B000241648AB -:10192000009401940294039404944FF08041059430 -:10193000C0E900144FF6FF71C0E9024104618461FF -:10194000FFF734FC08B1FEF737FE4FF480500090EB -:1019500069460948FFF7A2FC08B1FEF72DFE049482 -:1019600004A905480594FFF7EDFB002801D0FEF718 -:1019700023FE06B010BD00007400002010B586B034 -:10198000002416480094019402940394049412498C -:101990000594C0E900144FF6FF71C0E902410461EB -:1019A0008461FFF703FC08B1FEF706FE4FF4805098 -:1019B000009069460948FFF771FC08B1FEF7FCFD8D -:1019C000049404A905480594FFF7BCFB002801D046 -:1019D000FEF7F2FD06B010BD00040040BC00002080 -:1019E0000C4810B50A4901604FF4165141600021BE -:1019F00081600C22C160C0E904128161C161FFF7FE -:101A0000F3FD002803D0BDE81040FEF7D5BD10BDA2 -:101A100000380140040100200C4810B50A4901605B -:101A20004FF416514160002181600C22C160C0E971 -:101A300004128161C161FFF7D7FD002803D0BDE822 -:101A40001040FEF7B9BD10BD004400404C0100201D -:101A50000C4810B50A4901604FF41651416000214D -:101A600081600C22C160C0E904128161C161FFF78D -:101A7000BBFD002803D0BDE81040FEF79DBD10BDA2 -:101A80000048004094010020FEE7FFF7ABF9FEE7B5 -:101A900070470000F0B591B0FEF790FD07460024B6 -:101AA0002A4D2B4E4BE03019315D4278032944D149 -:101AB000012A05D0032A40D1817805291CD039E0BC -:101AC000807801232B70012800D0002068700090DE -:101AD00020A2402101A8FEF77BFB01A8FEF702FC33 -:101AE00082B2642301A92548FFF776FE687808B121 -:101AF00000F09CF804201EE004F10801202919D20E -:101B00001249D0F803200C39C1F80E20C07988742E -:101B100000F0FEFB00F08AF819A240216846FEF7AB -:101B200057FB6846FEF7DEFB82B264236946134822 -:101B3000FFF752FE0820204484B2641CA4B2BC42C9 -:101B400001D21D2CAFD311B0F0BD00000C0000205D -:101B500052000020536C617665203033207374612D -:101B60007475733A206F6E6C696E653D25642C2028 -:101B700072656164793D25640D0A000094010020BE -:101B8000536C617665203033206D61747269782002 -:101B9000757064617465640D0A0000007047000090 -:101BA00010B5164C90B003202070607002212046C2 -:101BB000FEF7CCFCA070000AE070042264232146EA -:101BC0000F48FFF709FE0F490A224878B0FBF2F3ED -:101BD00002FB1302401C4870002A0DD10AA24021CA -:101BE0006846FEF7F5FA6846FEF77CFB82B264238E -:101BF00069460D48FFF7F0FD10B010BD420000200F -:101C000004010020000000205175657279696E673B -:101C100020736C617665203033206D617472697851 -:101C20002E2E2E0D0A0000009401002030B5C9B000 -:101C300028211FA8FEF7A7FBAA208DF87C003A4DAB -:101C400055208DF87D0028788DF87E0068788DF815 -:101C50007F000422354C1FA90020235C8B54521CAA -:101C6000401CC0B2D2B21E28F7D364233048FFF71D -:101C7000B3FD2D4905220C398878B0FBF2F302FB45 -:101C80001302401C8870002A4BD1A07E0DF16C0C11 -:101C9000637F227FE17E8CE80F00A07D0DF15C0C5C -:101CA000637E227EE17D8CE80F00A07C0DF14C0C60 -:101CB000637D227DE17C8CE80F00A07B0DF13C0C64 -:101CC000637C227CE17B8CE80F00A07A0DF12C0C68 -:101CD000637B227BE17A8CE80F00A0790DF11C0C6C -:101CE000637A227AE1798CE80F00A0780DF10C0C70 -:101CF00063792279E1788CE80F006878627821783E -:101D00008DE807002B780B4A802129A8FEF760FA9E -:101D100029A8FEF7E7FA82B2642329A90648FFF74B -:101D20005BFD49B030BD00000C0000202400002005 -:101D30004C010020A42400089401002010B5134C8D -:101D400090B0032020700120607002212046FEF731 -:101D5000FDFBA070000AE0700422642321460C48B9 -:101D6000FFF73AFD0B48007800280DD10AA2402168 -:101D70006846FEF72DFA6846FEF7B4FA82B264238D -:101D800069460D48FFF728FD10B010BD4200002045 -:101D900004010020000000205175657279696E67AA -:101DA00020736C61766520303320737461747573B1 -:101DB0002E2E2E0D0A00000094010020FEF796BE84 -:101DC00030B58FB028216846FEF7DDFA14210AA845 -:101DD000FEF7D9FA01210804CDE90010002402948D -:101DE00002250491CDE907504FF4E01009906846B0 -:101DF000FFF704F808B172B6FEE70F20CDE90A0537 -:101E00004FF48060CDE90C4002210AA80E94FEF741 -:101E100007FF08B172B6FEE7FEF798FF0FB030BDBE -:101E200070470000F0B50268194B1A4C1A4D4FF07C -:101E30008047984205D0B84203D0A04201D0A842C2 -:101E400003D122F070064A683243984205D0B84266 -:101E500003D0A04201D0A84203D122F44074CA6842 -:101E600022434C6922F08002224302608A68C262E7 -:101E70000A688262984201D10969016301214161C6 -:101E80000169C90703D0016921F001010161F0BDB9 -:101E9000002C0140000400400008004010B5846898 -:101EA00042EA032224F47F440A432243826010BDA5 -:101EB000826822F070020A4342F007018160704795 -:101EC00010B5036A046A24F001040462846924F0F2 -:101ED000F00444EA021423F00A020A438461026215 -:101EE00010BD10B5036A046A24F01004046284690A -:101EF00023F0A00324F4704444EA023243EA0111BF -:101F00008261016210BD10B5406A0021C185C184A3 -:101F1000FFF733FA10BD70B5446A2068406994F841 -:101F20004110C0F3C0100025212904D118B1E58467 -:101F3000204600F08EF82068406994F84210C0F303 -:101F40008010222904D118B1E585204600F05AF806 -:101F5000606C40F0100060642046FFF70EFA70BD20 -:101F600010B50146406A096809684FF00002890609 -:101F70002ED4C28501680C3151E8003F23F48073F0 -:101F800041E80034002CF5D10168143151E8003FDC -:101F900023F0010341E80034002CF5D1016814312D -:101FA00051E8003F23F0400341E80034002CF5D114 -:101FB000202180F84210016B012909D101680C3100 -:101FC00051E8003F23F0100341E80034002CF5D124 -:101FD0004263016B012902D0FFF7FCFB10BD818D2C -:101FE000FFF7CAF910BD10B5406A01214163016BCA -:101FF000012902D0FFF7EFFB10BD818D4908FFF7E3 -:10200000BBF910BD01680C3151E8002F22F4907229 -:1020100041E80023002BF5D10168143151E8002F6D -:1020200022F0010241E80023002BF5D1016B0129C8 -:1020300009D101680C3151E8002F22F0100241E86B -:102040000023002BF5D1202180F8421000210163EC -:10205000704701680C3151E8002F22F0C00241E8BE -:102060000023002BF5D1202180F84110704708B5DE -:1020700090F84210222901D0022008BD82684FF456 -:1020800080539A4201D1016921B1816A9A421BD0E1 -:102090004AB10AE00268816A5268C2F308020A8003 -:1020A000816A891C08E0026972B10268526802F014 -:1020B0007F020A70816A491C8162C18D491E090430 -:1020C000090CC18503D01BE002685268F1E7016882 -:1020D000CA6822F02002CA600168CA6822F48072CD -:1020E000CA6001684A6922F001024A61202180F831 -:1020F000421000214163026B012A03D0FFF76AFB03 -:10210000002008BD016301680C3151E8002F22F066 -:10211000100241E80023002BF5D101680A68D206BD -:1021200002D50A6849680091818DFFF725F9E7E734 -:1021300070B5044600680169E26821F4405111431A -:1021400001612169A0680843616908432168CA6880 -:1021500041F20C639A430243CA6020684169A26954 -:1021600021F44071114341611E492068884202D127 -:10217000FEF702FE01E0FEF7EFFD00EBC00101EB10 -:102180000012606864218000B2FBF0F3B3FBF1F34E -:102190006FF018067343B2FBF0F5B2FBF0F605EBF7 -:1021A0008305322303EB0515B5FBF1F5B6FBF1F61C -:1021B00005F0F00505EB0615B2FBF0F6B2FBF0F00A -:1021C000B0FBF1F06FF01802504306EB800003EB18 -:1021D0000010B0FBF1F0216800F00F002844886087 -:1021E00070BD00000038014038B581620446828528 -:1021F000002013466064222284F84220E56B1B4ACB -:10220000AA62E56B1A4AEA62E56B1A4A2A63E26B34 -:1022100050630A462168E06B091DFEF721FB206828 -:10222000016840680090206948B120680C3050E88F -:10223000001F41F4807140E80012002AF5D12068A7 -:10224000143050E8001F41F0010140E80012002A5C -:10225000F5D12068143050E8001F41F0400140E8FB -:102260000012002AF5D1002038BD0000611F0008CF -:10227000E71F0008171F00082DE9F8439846174686 -:102280000D460446089E24E0701C22D0FEF728FC70 -:10229000A0EB0800B0421AD8CEB12068C168490747 -:1022A00017D5802D15D0402D13D00168C9430907DB -:1022B0000FD401680025406800902046FFF7A2FE79 -:1022C0000820606484F840500120BDE8F8830320B2 -:1022D000FBE72068006835EA000004D00020B8421F -:1022E000D2D00020F1E70120F9E700000148FFF714 -:1022F00045B80000040100200148FFF73FB8000086 -:102300004C0100200148FFF739B80000940100207B -:10231000F0B50021DFF840C05FF001020CEB0100D6 -:102320000E4F8578002001EB410400BF02FA00F354 -:102330002B4201D0012600E0002600EB4403DBB273 -:102340001E2B00D2FE54401CC0B20628EED3491CFE -:10235000C9B20529E2D3F0BD0C0000202400002002 -:10236000FEE70907090E002804DB00F1E02080F8F1 -:102370000014704700F00F0000F1E02080F8141DF9 -:10238000704700008EB0FEF7B9FBFFF719FDFFF7AD -:102390008BFAFFF773FAFFF73FFBFFF7BDFAFFF782 -:1023A000EDFAFFF71DFBFFF753FB2148FEF74AFF4D -:1023B000202220492048FFF7FFF934221FA1684658 -:1023C000FDF7AFFF6846FDF78DFF82B264236946D3 -:1023D0002748FFF701FAFEF783FB264C4FF0000871 -:1023E00004F10C064FF00109C4F80800FEF778FB71 -:1023F0000546FEF7E3F80746A088874202D0FFF7BC -:1024000049FBA780A068281AC82808D9307850B19D -:10241000707840B1FFF7C4FB84F80090A5600A20F3 -:10242000FEF756FAE2E7FFF789FC84F80080F5E74B -:1024300074000020520000200401002053696E67E0 -:102440006C6520536C617665204D617374657220F4 -:1024500053746172746564202D204F6E6C79205125 -:102460007565727920536C6176652030330D0A00F2 -:102470009401002000000020010202030405060769 -:1024800008090A0B0C0D0E0F1010000000000000D0 -:102490000000010203040607080900000000010211 -:1024A000030400004F75747075743A206F6E6C6988 -:1024B0006E653D25642C2072656164793D25642C30 -:1024C000204D61747269783A20256425642564255D -:1024D00064256425642025642564256425642564B9 -:1024E00025642025642564256425642564256420ED -:1024F00025642564256425642564256420256425D8 -:102500006425642564256425640D0A002C250008D3 -:1025100000000020240000002801000850250008C9 -:10252000240000205C0800004401000800000000B6 -:10253000000000000000000000000000000000009B -:1025400001000000100000000000000000127A00EE +:10016000642900F0A580782900F0DE80732900F072 +:10017000AE82002070471FB51FBD10B510BD00F046 +:10018000AAFA1146FFF7F7FF02F046FA00F0C8FAA4 +:1001900003B4FFF7F2FF03BC00F0D0FA0948804730 +:1001A00009480047FEE7FEE7FEE7FEE7FEE7FEE759 +:1001B000FEE7FEE7FEE7FEE704480549054A064B71 +:1001C0007047000099200008ED000008100300208F +:1001D0001009002010050020100500200FB41CB5E8 +:1001E0000C0007AA009001D02044401E074B7B441E +:1001F00069460190069800F038FA002C03D0694651 +:10020000002000F045FA1CBC5DF814FBA9040000B6 +:1002100070B5044685690068C10601D5302600E046 +:100220002026C00707D070BDD4E901213046904791 +:10023000206A401C20626D1EF6D570BD70B5044664 +:1002400085690078C00707D170BDD4E9012120205D +:100250009047206A401C20626D1EF6D570BD70B5B7 +:100260000C460546012A05D02878800600D5EA69A3 +:10027000002302E0012305E05B1C934202D2E05C14 +:100280000028F9D1A869E618C01AA861286A18449C +:1002900028622846FFF7BCFF04E0D5E9012114F8E5 +:1002A000010B9047B442F8D32846FFF7C7FF70BD53 +:1002B0002DE9F0410646002410687529314616A53F +:1002C00010D0AFF30080002802DA404213A507E007 +:1002D00031688A0701D512A502E0490704D511A5A6 +:1002E000012401E0AFF3008000210A2206F1240777 +:1002F00009E0B0FBF2FCB0FBF2F302FB1C00303073 +:1003000078541846491C0028F3D123462A46304623 +:10031000BDE8F04100F04BB9000000002D000000E6 +:100320002B0000002000000070B504460D46214659 +:100330001068AFF300802188090502D50F4A7A447E +:1003400002E00E4A7A440E32002104F1240305E053 +:1003500000F00F060009965D5E54491C0028F7D195 +:1003600020780023000704D5702D02D009B10223A4 +:1003700011322046BDE8704000F019B9CC240000CD +:100380002DE9F05F894604464FF0000ADFF824B1FA +:10039000FB44C0F820A02046E168884700287DD0B3 +:1003A000252806D0D4E901219047206A401C20620C +:1003B000F1E700255F462046E16888472028064689 +:1003C00007DB312E05D2B81910F8200C08B105430F +:1003D000F1E7A80701D525F00405C4F81CA0002703 +:1003E000C4F818A02A2E09D0304602F00EF938B30E +:1003F00004EB8708303EC8F8186019E059F8041B70 +:10040000204604EB87029161E1688847012F064688 +:1004100018D1E069002820DA25F020051DE0D8F881 +:10042000180000EB800006EB40003038C8F81800D8 +:100430002046E1688847064602F0E7F80028EED13A +:10044000012F0AD02E2E08D12046E16888477F1C54 +:100450000646022F45F02005C4DBA069002803DA18 +:10046000404245F00105A061E80701D025F01005E4 +:10047000A6B1A6F14100192802D8203645F400653E +:100480004A463146204625604D46FFF769FE60B179 +:10049000012807D0ED1D25F0070000E007E000F17E +:1004A000080978E705F1040975E730467AE7206A1C +:1004B000BDE8F09FA224000010B5431C02E010F834 +:1004C000011B71B18107FAD14FF0013202C88C1AB9 +:1004D0008C4314EAC211F9D0C01A0A0603D0C01E18 +:1004E00010BDC01A10BD0A0401D0801E10BD090243 +:1004F000FCD0401E10BD10B5203AC0F00B80B1E812 +:100500001850203AA0E81850B1E81850A0E8185048 +:10051000BFF4F5AF5FEA027C24BFB1E81850A0E851 +:10052000185044BF18C918C0BDE810405FEA827C6B +:1005300024BF51F8043B40F8043B08BF7047D20782 +:1005400028BF31F8023B48BF11F8012B28BF20F823 +:10055000023B48BF00F8012B70474FF0000200B586 +:10056000134694469646203922BFA0E80C50A0E8D6 +:100570000C50B1F12001BFF4F7AF090728BFA0E884 +:100580000C5048BF0CC05DF804EB890028BF40F850 +:10059000042B08BF704748BF20F8022B11F0804F92 +:1005A00018BF00F8012B70477047704770472DE95E +:1005B000F0470D4699469246044600F1240801682A +:1005C000880604D5E06921F01001216000E00120D7 +:1005D000A84201DD471B00E00027A1697A1902EB60 +:1005E0000900081AA0612078C00602D42046FFF74F +:1005F0000FFE002608E0D4E901211AF80600904712 +:10060000206A401C761C20624E45F4DB2078C00630 +:100610000AD52046FFF7FCFD06E0D4E90121302091 +:100620009047206A401C2062381EA7F10107F4DCC5 +:1006300007E0D4E9012118F805009047206A401C22 +:100640002062281EA5F10105F3DC2046FFF7F6FD28 +:100650002078000602D50220BDE8F0870120FBE7E4 +:1006600001694A1C02610878704700B58FB0CDE976 +:1006700001310021059105497944CDE90310114666 +:100680006846FFF77DFE0FB000BD0000E5FFFFFFED +:100690000A6802F8010B0A607047D1E900239A4208 +:1006A00002D2531C0B601070704710B5436913B130 +:1006B000AFF3008001E0FFF7D2FD012010BD1278FA +:1006C00000F124010A7000224A700122EDE711684E +:1006D0004FF0FF32E9E7754600F02CF8AE46050012 +:1006E0006946534620F00700854618B020B5FFF74D +:1006F00063FDBDE820404FF000064FF000074FF0CB +:1007000000084FF0000B21F00701AC46ACE8C0092F +:10071000ACE8C009ACE8C009ACE8C0098D46704738 +:1007200010B50446AFF300802046BDE81040FFF747 +:100730002FBD000000487047B0020020014918207A +:10074000ABBEFEE7260002007047FEE770B5054627 +:100750004FF6FF7000224AF201040EE0AB5C5840F5 +:100760000023C60702D084EA500000E040085B1C6A +:10077000DBB2082BF5D3521CD2B28A42EED370BD45 +:10078000014800F095B800006C02002030B590F8E8 +:1007900040500124AC40C56B6C60046863604368E2 +:1007A000102B036803D099600068C26030BD9A6066 +:1007B0000068C16030BD704772B6FEE70348C06B89 +:1007C00000684068C0F1400080B27047940100208A +:1007D00010B590F821100022022905D00421816370 +:1007E00080F82020012010BD01680B6823F00E0363 +:1007F0000B6001680B6823F001030B6090F8403038 +:10080000C46B012101FA03F3636080F8211080F8C2 +:100810002020104610BD000010B590F821100024D3 +:10082000022903D00421816301243DE001680A68A4 +:1008300022F00E020A6001680A6822F001020A60D2 +:100840001A4A0168914201D1012121E0174A14326C +:10085000914201D110211BE0144A2832914201D16A +:10086000891515E0114A3C32914201D189140FE0FB +:100870000E4A5032914202D14FF4803108E00B4AC7 +:100880006432914202D14FF4801101E04FF0807147 +:10089000064A083A5160012180F82110002180F8B1 +:1008A0002010416B01B18847204610BD080002406E +:1008B0002DE9F05FC16B0C6801680B68D0F840C08F +:1008C000042202FA0CF2494DDFF824A1494E4A4FA6 +:1008D000DFF828B1DFF828E122422CD05A072AD5C8 +:1008E0000A68920603D40A6822F004020A600168CA +:1008F000A94201D1042219E0514501D1402215E05D +:10090000B14202D14FF4806210E0B94202D14FF4FB +:1009100080420BE0594502D14FF4802206E0714538 +:1009200002D14FF4800201E04FF080622F49083974 +:100930004A60C16A3BE04FF0020808FA0CF818EA76 +:10094000040F4FF000094FF0010235D05FEA8378C1 +:1009500032D50B689B0605D40B6823F00A030B60A5 +:1009600080F821200168A94201D1022219E05145F5 +:1009700001D1202215E0B14202D14FF4007210E003 +:10098000B94202D14FF400520BE0594502D14FF465 +:10099000003206E0714502D14FF4001201E04FF041 +:1009A0000072124908394A6080F82090816A002953 +:1009B0001AD0BDE8F05F0847082505FA0CF5254276 +:1009C00012D01B0710D50B6823F00E030B6090F8B4 +:1009D0004010C36B02FA01F15960826380F8212054 +:1009E00080F82090016BE2E7BDE8F09F080002402C +:1009F0001C00024030000240440002405800024007 +:100A00006C00024030B528B308C8134914221944B9 +:100A1000B1FBF2F18900C163104981630221417782 +:100A20001A6843F6F0718A43D0E900142143D0E9F3 +:100A300002452C43214304692143446921438469CD +:100A4000214311431960002141630122427701775C +:100A5000084630BD012030BDF8FFFDBF0000024058 +:100A600070B5044690F82000002501280CD0012024 +:100A700084F8200094F821600020012E06D084F82C +:100A800020000225284670BD022070BD022684F891 +:100A90002160A0632068066826F0010606602046F3 +:100AA000FFF774FEE06A00282068016802D041F078 +:100AB0000E0106E021F0040101602068016841F0A8 +:100AC0000A0101602068016841F001010160D9E775 +:100AD00070B5044600F004F90546601C02D00448D5 +:100AE0000078044400F0FCF8401BA042FAD370BD2B +:100AF000480000202DE9F84FDFF8B8910024A9F153 +:100B0000040B23460F2709F1040AABF1040EC9E0D8 +:100B10000125A5402A40AA427DD1674ED1F804C0E4 +:100B2000ACEB0608B44532D014DCBCF1030F3AD06C +:100B300009DCBCF1000F2AD0BCF1010F1CD0BCF1C4 +:100B4000020F31D11DE0BCF1110F17D0BCF1120F13 +:100B50002AD119E0B8F5881F19D006DCB8F5803F16 +:100B600015D0B8F5801F1FD111E0B8F5001F0ED0C9 +:100B7000B8F5041F18D10AE0CB6815E0CB681B1D3F +:100B800012E0CB6808330FE0CB680C330CE08B68C5 +:100B90002BB1012B4FF0080303D0456104E004237F +:100BA00002E0056100E00023FF2A01D8064601E0CB +:100BB00000F104064FEA840501D9A5F12005D6F815 +:100BC000008007FA05FC28EA0C0803FA05F548EA54 +:100BD0000508C6F800804D68ED0062D5374DAE6956 +:100BE00046F00106AE61AD6924F0030605F001058B +:100BF0000095334D06EB050CDCF80850A607360FC0 +:100C000007FA06F825EA0805DFF8B880404503D161 +:100C10004FF0000817E044E0DFF8AC80404502D117 +:100C20004FF001080FE0DFF8A480404502D14FF0FB +:100C3000020808E0DFF89880404502D14FF0030831 +:100C400001E04FF0040808FA06F848EA0508CCF875 +:100C500008804D68D9F80060ED024D4601D5164375 +:100C600000E096432E604D68DAF80060AD0255460C +:100C700001D5164300E096432E604D68DBF8006016 +:100C8000AD035D4601D5164300E096432E604D68E6 +:100C9000DEF80060ED03754601D5164300E096438B +:100CA0002E60641C0D682A46E5407FF431AFBDE834 +:100CB000F88F0000080401400000111000100240ED +:100CC0000000014000080140000C014000100140FC +:100CD000001401400AB1016170470904FBE70000FC +:100CE0000148806870470000480000200248816881 +:100CF000027811448160704748000020074810B511 +:100D0000016841F010010160032000F075F80F2028 +:100D100000F006F800F024F8002010BD002002408A +:100D200070B50D4D04464FF47A712878B1FBF0F0A0 +:100D30000A490968B1FBF0F000F0F0FA48B9102C4C +:100D400007D200222146501E00F036F800206C60C9 +:100D500070BD012070BD000048000020540000203C +:100D60000C4808B5816941F001018161816901F098 +:100D700001010091C16941F08051C161C06900F079 +:100D8000805000900448416821F0E06141F000711A +:100D9000416008BD0010024000000140002809DB4E +:100DA00000F01F02012191404009800000F1E02085 +:100DB000C0F8001170470000F0B40E4B1B680C46E1 +:100DC000C3F30223C3F10705042D00D90425191D1F +:100DD000072901D2002300E0DB1E012606FA05F1F7 +:100DE000491E214099409E40761E16403143F0BC7A +:100DF00001F0FBBB0CED00E0064900F007020868BB +:100E00004FF6FF03184040EA0220034A10430860EF +:100E1000704700000CED00E00000FA05704700008C +:100E20002DE9F0470F46050061D0434E306800F0D1 +:100E30000700B84209D2306820F00700384330601C +:100E4000306800F00700B84251D128683B4C810758 +:100E500012D5400703D5606840F4E06060602878F0 +:100E6000000703D5606840F4605060606068A9685E +:100E700020F0F000084360602878C00728D0686838 +:100E8000012810D02168022810D0890700292EDA05 +:100E9000616821F0030101436160FFF721FF804693 +:100EA00041F288390DE021688903EFE78901EDE718 +:100EB000FFF716FFA0EB0801494502D90320BDE862 +:100EC000F0876068696800F00C00B0EB810FEFD12B +:100ED000306800F00700B8420BD9306820F00700F6 +:100EE00038433060306800F00700B84201D001207C +:100EF000E5E72878400705D56068E96820F4E060F8 +:100F0000084360602878000706D56068296920F4E6 +:100F1000605040EAC100606000F03EF86168084A35 +:100F2000C1F30311515CC8400649086006480068D7 +:100F3000FFF7F6FE0020C2E700200240001002404A +:100F4000F6270008540000204C0000200149012031 +:100F5000C864704700004242044805490068496877 +:100F6000044AC1F30221515CC8407047540000207C +:100F70000010024006280008044805490068496836 +:100F8000044AC1F3C221515CC8407047540000209C +:100F900000100240062800080E4A51680E4801F071 +:100FA0000C03042B11D0082B0FD10C48C1F3834341 +:100FB000C903C05C0AD55168084AC1F34041921E7A +:100FC000515C054A5043B0FBF1F070470449484377 +:100FD000704700000010024000127A00E627000867 +:100FE00000093D0010B5044CA068000603D5FFF7CA +:100FF00015FF8020A07210BD001002402DE9F84FAF +:10100000040070D02078C04DC00749D06868C0F394 +:101010008100012807D06868C0F38100022809D147 +:101020006868C00306D52868800339D56068002841 +:10103000E7D035E06068B0F5803F0BD010B1B0F577 +:10104000A02F11D0286820F480302860286820F470 +:10105000802002E0286840F480302860606890B109 +:10106000FFF73EFE06460AE0286840F4802028602C +:10107000F0E700BFFFF734FE801B642873D82868B0 +:101080008003F7D50CE0FFF72BFE064605E000BF16 +:10109000FFF726FE801B6428F0D828688003F7D469 +:1010A00020789A4E80074FF001094FF0000839D59B +:1010B000686810F00C0F07D06868C0F38100022840 +:1010C00009D16868C00306D42868800714D5206950 +:1010D000012808D110E02069B0B1C6F80090FFF7F0 +:1010E000FFFD074605E00AE1FFF7FAFDC01B0228F5 +:1010F000C4D828688007F7D52868616920F0F8000F +:1011000040EAC10028600DE0C6F80080FFF7E8FD66 +:10111000074604E0FFF7E4FDC01B022823D8286837 +:101120008007F7D4207800072CD57948A169D9B178 +:10113000C0F80090FFF7D4FD074604E0FFF7D0FDAC +:10114000C01B02280FD8686A8007F7D571484FF492 +:10115000FA510068B0FBF1F0009000BF0098411E0A +:101160000091FAD20EE080E0C0F80080FFF7B8FDF1 +:10117000074604E0FFF7B4FDC01B022875D8686A73 +:101180008007F7D42078400760D5E8690027C000C1 +:1011900008D4E86940F08050E861E869012700F070 +:1011A000805000905C480168C90513D401688346EB +:1011B00041F480710160FFF793FD824606E000BFB5 +:1011C000FFF78EFDA0EB0A0064284ED8DBF8000084 +:1011D000C005F5D5E06801280AD008B1052813D06C +:1011E000286A20F001002862286A20F0040002E04A +:1011F000286A40F001002862E06841F2883B98B11B +:10120000FFF76EFD82460BE0286A40F0040028627A +:10121000EEE700BFFFF764FDA0EB0A0159455AD87D +:10122000286A8007F6D50CE0FFF75AFD824605E0F4 +:10123000FFF756FDA0EB0A0159454CD8286A8007F4 +:10124000F6D41FB1E86920F08050E861E06988B306 +:101250006968C1F38101022944D00228C6F8608080 +:1012600004D0FFF73DFD044638E034E0FFF738FDD9 +:10127000074604E0FFF734FDC01B02282BD828687E +:101280008001F7D4206AB0F5803F05D16868A16875 +:1012900020F4003008436860D4E908010843696815 +:1012A00021F4741108436860C6F86090FFF718FDD8 +:1012B000044606E025E000BFFFF712FD001B0228F0 +:1012C00009D828688001F7D51BE000BFFFF708FDAB +:1012D000001B022802D90320BDE8F88F286880018E +:1012E000F4D40EE00128F7D06868226A00F4803157 +:1012F000914204D1616A00F47010884201D001204B +:10130000EAE70020E8E70000001002400000424247 +:1013100080044242540000200070004010B5401E7E +:10132000B0F1807F01D3012010BD4FF0E024606157 +:101330000F21601701F059F90020A06107202061FA +:10134000002010BD70B590F83C20012A26D0012461 +:1013500080F83C40022280F83D2003685A689D686E +:1013600022F070060A6832435A600D4B02689A42B6 +:1013700008D0B2F1804F05D00A4B9A4202D00A4BF6 +:101380009A4204D1496825F080031943916080F89E +:101390003D40002180F83C10084670BD022070BD21 +:1013A000002C0140000400400008004010B504007B +:1013B00003D094F83D0010B107E0012010BD0020DB +:1013C00084F83C00204600F01FF8022084F83D001D +:1013D000211D206800F062FE012084F8460084F898 +:1013E0003E0084F83F0084F8400084F8410084F80F +:1013F000420084F8430084F8440084F8450084F8EF +:101400003D00002010BD000008B501680B48B1F197 +:10141000804F0BD00A4A914207D1C16941F00201C5 +:10142000C161C06900F00200009008BDC16941F0CF +:101430000101C161C06900F00100F5E70010024040 +:101440000004004090F83D10012901D001207047B0 +:10145000022180F83D100168CA6842F00102CA60AA +:1014600000680B49884208D0B0F1804F05D0094987 +:10147000884202D00849884204D1816801F00701FE +:10148000062903D0016841F0010101600020704786 +:10149000002C0140000400400008004070B50446E4 +:1014A00090F83C000025012817D0012684F83C6004 +:1014B000022084F83D002068826822F0770222F43E +:1014C0007F4282600868502838D00DDC20284FD039 +:1014D00005DC90B3102811D14AE0022070BD3028FD +:1014E00046D040280AD13BE060282FD070280DD08C +:1014F000B0F5805F03D0B0F5005F12D0012584F80D +:101500003D60002084F83C00284670BDCB68D1E9DE +:101510000121206800F0FEFD2068816841F077011C +:1015200009E0CB68D1E90121206800F0F3FD2068D3 +:10153000816841F480418160E1E719E0CA68496847 +:10154000206800F0F9FD5021206806E0CA6849686B +:10155000206800F002FE6021206800F0E5FDCEE783 +:10156000CA684968206800F0E7FD40212068F4E778 +:10157000226801461046F0E770477047F8B50168E9 +:1015800004460868CA684B6910F00F0F4FF0000559 +:1015900059D003F0010602F49077374365D0C107B4 +:1015A00005D0D10503D5616C41F0010161644107AB +:1015B00005D5D90703D0616C41F002016164810750 +:1015C00005D5D90703D0616C41F0040161640107BE +:1015D00007D502F02001314303D0616C41F00801CE +:1015E0006164616C00293AD0800604D5900602D56A +:1015F000204600F078FE20684069616CC0F38010DE +:10160000090700D460B3204600F038FE2068406926 +:10161000400621D52068143050E8001F21F0400119 +:1016200040E80012002AF5D1E06BA8B16D49416392 +:10163000E06BFFF7F1F8002811D0E06B416B01B0CF +:10164000BDE8F040084783060FD593060DD5204628 +:10165000BDE8F84000F047BE2046FFF78EFFF8BD1A +:101660002046FFF78AFF6564F8BD266B2023012E14 +:101670007CD1C6067AD5D60678D508684868009029 +:1016800048694FF00206400640D5E16B08684068A3 +:101690000004000CE8D0A28D8242E5D9E08588697B +:1016A00020282DD020680C3050E8001F21F48071D4 +:1016B00040E80012002AF5D12068143050E8001FDD +:1016C00021F0010140E80012002AF5D12068143011 +:1016D00050E8001F21F0400140E80012002AF5D137 +:1016E00084F84230256320680C3050E8001F21F058 +:1016F000100140E80012002AF5D1E06BFFF768F80E +:101700006663A08DE18D401A81B22AE0A08DE18D43 +:10171000401A81B2E08D0028A6D00029A4D022680A +:101720000C3252E8000F20F4907042E80007002FBE +:10173000F5D12068143050E8002F22F0010240E873 +:101740000027002FF5D184F84230256320680C3043 +:1017500050E8002F22F0100240E80023002BF5D1C2 +:1017600066632046FFF708FFF8BDFFE705062BD5A7 +:10177000150629D594F841002128F5D1A068B0F5C7 +:10178000805F01D12069B0B1206A411C21622168CB +:1017900000784860E08C401E0004000CE084E3D137 +:1017A0002068C16821F08001C1602068C16841F0F3 +:1017B0004001C160D8E7206A0088C0F30800486093 +:1017C000206A801C2062E5E74006CDD55006CBD5C7 +:1017D000CA68204622F04002CA6084F8413000F016 +:1017E0004BF9C1E77F21000870B5040004D094F8DC +:1017F0004100002510B106E0012070BD84F8405082 +:10180000204600F023F8242084F841002068C168B5 +:1018100021F40051C160204600F0C6FD2068016936 +:1018200021F4904101612068416921F02A01416160 +:101830002068C16841F40051C1606564202084F8CB +:10184000410084F842006563002070BDF0B585B0AA +:1018500000240094019402940394054603684F48C1 +:10186000DFF834C1022103224D4E071563453BD1F9 +:10187000836943F480438361836903F48043049361 +:10188000836943F0040383618069039200F00400DC +:1018900004900802CDE9000169463046FFF72AF9B5 +:1018A000CDE90074694630460294FFF723F93E4EB5 +:1018B0003C48C6E900048020C6E90240202034618B +:1018C000C6E905404FF44050F0613046FFF79AF802 +:1018D00008B1FEF771FFEE63002211462520756204 +:1018E000FFF76AFA252028E0304DAB4229D1C369C1 +:1018F00043F40033C361C36903F400330493836981 +:1019000043F0040383618069039200F004000490B3 +:101910000420CDE9000169463046FFF7EBF80820C6 +:10192000CDE90004694630460294FFF7E3F800224F +:1019300011462620FFF740FA2620FFF72FFA05B0C0 +:10194000F0BD1B4DAB42FAD1C36943F48023C361A0 +:10195000C36903F480230493836943F0080383611C +:101960008069CDE9007100F00800CDE90320114D38 +:1019700069462846FFF7BEF8E814CDE90004694639 +:1019800028460294FFF7B6F8002211462720FFF7F9 +:1019900013FA2720D1E70000003801400010024070 +:1019A00000080140580002406C0200200044004042 +:1019B00000480040000C014090F84230202B01D03C +:1019C0000220704721B11AB10023036300F048BD23 +:1019D00001207047704770472DE9F843044690F89E +:1019E0004100984616460D46202802D00220BDE848 +:1019F000F88385B17EB100206064212084F8410025 +:101A0000FFF76EF9A6848146E684A0682027B0F52A +:101A1000805F02D003E00120E9E7206910B12E4683 +:101A200000250EE000260CE08021204600F060FD3D +:101A3000A8B9C6B116F8010B21684860E08C401EB9 +:101A4000E084E08C4B464FF00002CDF80080002887 +:101A5000EAD14FF04001204600F04AFD40B184F841 +:101A600041700320C3E735F8020BC0F30800E3E739 +:101A700084F841700020BAE77047000030B51F4D70 +:101A8000A3B00020EB7805F1180100BF01EB0012B4 +:101A900012789A422DD101EB00140321207B18A269 +:101AA000401CC0B22073CDE90001402102A8FEF71E +:101AB00095FB02A8FEF700FD82B2642302A9194833 +:101AC000FFF78AFF207B032811D300206070A070ED +:101AD000EB7815A2402112A8FEF780FB12A8FEF7B2 +:101AE000EBFC82B2642312A90E48FFF775FF23B006 +:101AF00030BD401CC0B20328C8D3F8E70000002066 +:101B0000536C61766520253032582074696D656F9D +:101B10007574202872657472792025642F256429D4 +:101B20000D0A000024020020536C617665202530E8 +:101B30003258206D61726B6564206F66666C696EE9 +:101B4000650D0A0070B50546401EC0B292B003286C +:101B500027D26C1E214B0026E4B203EB04140129AA +:101B600021D003291DD1917805291AD1D2F803106B +:101B7000C4F80310D179E17100F006FDFFF7B0F869 +:101B8000A06026732B4616A240216846FEF726FB6E +:101B90006846FEF791FC82B2642369461748FFF756 +:101BA0001BFF12B070BD907801216170012800D038 +:101BB0000020A070FFF794F8A0602673A078009032 +:101BC0002B460FA2402101A8FEF708FB01A8FEF753 +:101BD00073FC82B2642301A9E0E700001800002032 +:101BE000536C6176652025303258206D61747269BE +:101BF0007820757064617465640D0A002402002009 +:101C0000536C61766520253032583A206F6E6C69CE +:101C10006E653D312C2072656164793D25640D0A45 +:101C200000000000FEE70000094808B5416941F0E6 +:101C3000010141614069002200F00100009011465D +:101C40000F20FFF7B9F8BDE808400F20FFF7A6B84E +:101C50000010024030B585B000241848009401946B +:101C600002940394816941F020018161816901F04E +:101C700020010491816941F004018161816901F0D1 +:101C800004010491816941F00801816180690C4D72 +:101C900000F0080004900122F0212846FFF71AF80E +:101CA000F02000900120CDE9010402200390694654 +:101CB0002846FEF71FFF05B030BD000000100240AF +:101CC000000C014010B586B0002416480094019421 +:101CD0000294039404944FF080410594C0E90014E9 +:101CE0004FF6FF71C0E9024104618461FFF75EFBBA +:101CF00008B1FEF761FD4FF4805000906946094835 +:101D0000FFF7CCFB08B1FEF757FD049404A9054882 +:101D10000594FFF717FB002801D0FEF74DFD06B034 +:101D200010BD00000401002010B586B00024164844 +:101D30000094019402940394049412490594C0E918 +:101D400000144FF6FF71C0E9024104618461FFF79E +:101D50002DFB08B1FEF730FD4FF48050009069462E +:101D60000948FFF79BFB08B1FEF726FD049404A980 +:101D700005480594FFF7E6FA002801D0FEF71CFDA0 +:101D800006B010BD000400404C0100200C4810B506 +:101D90000A4901604FF416514160002181600C2214 +:101DA000C160C0E904128161C161FFF71DFD002817 +:101DB00003D0BDE81040FEF7FFBC10BD0038014065 +:101DC000940100200C4810B50A4901604FF41651E7 +:101DD0004160002181600C22C160C0E90412816170 +:101DE000C161FFF701FD002803D0BDE81040FEF7F8 +:101DF000E3BC10BD00440040DC0100200C4810B5DD +:101E00000A4901604FF416514160002181600C22A3 +:101E1000C160C0E904128161C161FFF7E5FC0028DF +:101E200003D0BDE81040FEF7C7BC10BD004800401D +:101E300024020020FEE7FFF7D5F8FEE77047000018 +:101E40002DE9F041FEF7BAFC07460024114EDFF8F9 +:101E5000488017E03219305D98F8031055788842B1 +:101E60000ED1012D01D0032D0AD12946FFF76AFEBC +:101E7000032188F80010012D0AD00820204484B2E4 +:101E8000641CA4B2BC4201D23D2CE3D3BDE8F08176 +:101E90000420F3E7C20000200000002070B5144CBD +:101EA00092B00D4620700646617002212046FEF772 +:101EB0004DFCA070000AE0700422642321460D4806 +:101EC000FFF78AFD012D11D00BA30DA2402101A81F +:101ED0000096FEF783F901A8FEF7EEFA82B26423BA +:101EE00001A90F48FFF778FD12B070BD0DA3ECE714 +:101EF000B2000020940100206D61747269780000C6 +:101F000053656E7420257320717565727920746F26 +:101F100020736C61766520253032580D0A00000070 +:101F20002402002073746174757300007047000010 +:101F300030B5BFB0642106A8FEF70FFBAA218DF8CB +:101F4000181055218DF819100222294C06A80021DD +:101F500004EB0113491C5B788354521CC9B2D2B202 +:101F60000329F5D35FF0000104EB0113491C9B78B2 +:101F70008354521CC9B2D2B20329F5D31D4B0021A0 +:101F80005D5C8554521C491CC9B2D2B25A29F7D3A0 +:101F9000014664231848FFF71FFD1549052218392B +:101FA0000879B0FBF2F302FB1302401C0871002A0F +:101FB0001BD1A07802AD5A2394F82220A17C85E899 +:101FC0000F0094F82110607CCDE9000163780BA22A +:101FD00080211FA8FEF702F91FA8FEF76DFA82B252 +:101FE00064231FA91248FFF7F7FC3FB030BD000083 +:101FF0001800002058000020DC0100204F7574708C +:1020000075743A206F6E6C696E653D25642C25648D +:102010002C25642072656164793D25642C25642C2F +:10202000256420706F696E74733D25640D0A00008D +:1020300024020020FEF75ABE30B58FB02821684632 +:10204000FEF78BFA14210AA8FEF787FA012108048B +:10205000CDE900100024029402250491CDE9075037 +:102060004FF4E01009906846FEF7C8FF08B172B659 +:10207000FEE70F20CDE90A054FF48060CDE90C4062 +:1020800002210AA80E94FEF7CBFE08B172B6FEE755 +:10209000FEF75CFF0FB030BD70470000F0B502687E +:1020A000194B1A4C1A4D4FF08047984205D0B84250 +:1020B00003D0A04201D0A84203D122F070064A68A2 +:1020C0003243984205D0B84203D0A04201D0A84282 +:1020D00003D122F44074CA6822434C6922F0800282 +:1020E000224302608A68C2620A688262984201D111 +:1020F00009690163012141610169C90703D00169CF +:1021000021F001010161F0BD002C014000040040FC +:102110000008004010B5846842EA032224F47F449A +:102120000A432243826010BD826822F070020A4393 +:1021300042F007018160704710B5036A046A24F019 +:1021400001040462846924F0F00444EA021423F0D8 +:102150000A020A438461026210BD10B5036A046A70 +:1021600024F010040462846923F0A00324F4704472 +:1021700044EA023243EA01118261016210BD10B5E6 +:10218000406A0021C185C184FFF7F7F910BD70B521 +:10219000446A2068406994F84110C0F3C0100025DB +:1021A000212904D118B1E584204600F08EF820687A +:1021B000406994F84210C0F38010222904D118B16C +:1021C000E585204600F05AF8606C40F0100060642D +:1021D0002046FFF7D2F970BD10B50146406A096884 +:1021E00009684FF0000289062ED4C28501680C31BF +:1021F00051E8003F23F4807341E80034002CF5D10E +:102200000168143151E8003F23F0010341E8003434 +:10221000002CF5D10168143151E8003F23F0400350 +:1022200041E80034002CF5D1202180F84210016BE8 +:10223000012909D101680C3151E8003F23F0100356 +:1022400041E80034002CF5D14263016B012902D032 +:10225000FFF7C0FB10BD818DFFF78EF910BD10B5E3 +:10226000406A01214163016B012902D0FFF7B3FBF2 +:1022700010BD818D4908FFF77FF910BD01680C3151 +:1022800051E8002F22F4907241E80023002BF5D191 +:102290000168143151E8002F22F0010241E80023C7 +:1022A000002BF5D1016B012909D101680C3151E8EE +:1022B000002F22F0100241E80023002BF5D120214D +:1022C00080F8421000210163704701680C3151E829 +:1022D000002F22F0C00241E80023002BF5D120217D +:1022E00080F84110704708B590F84210222901D0BB +:1022F000022008BD82684FF480539A4201D10169DF +:1023000021B1816A9A421BD04AB10AE00268816A0F +:102310005268C2F308020A80816A891C08E00269D7 +:1023200072B10268526802F07F020A70816A491C29 +:102330008162C18D491E0904090CC18503D01BE0CF +:1023400002685268F1E70168CA6822F02002CA6098 +:102350000168CA6822F48072CA6001684A6922F082 +:1023600001024A61202180F8421000214163026B82 +:10237000012A03D0FFF72EFB002008BD016301688E +:102380000C3151E8002F22F0100241E80023002B0D +:10239000F5D101680A68D20602D50A684968009139 +:1023A000818DFFF7E9F8E7E770B504460068016939 +:1023B000E26821F44051114301612169A06808439A +:1023C000616908432168CA6841F20C639A43024379 +:1023D000CA6020684169A26921F4407111434161DA +:1023E0001E492068884202D1FEF7C6FD01E0FEF7D3 +:1023F000B3FD00EBC00101EB0012606864218000B6 +:10240000B2FBF0F3B3FBF1F36FF018067343B2FBCA +:10241000F0F5B2FBF0F605EB8305322303EB05156F +:10242000B5FBF1F5B6FBF1F605F0F00505EB061589 +:10243000B2FBF0F6B2FBF0F0B0FBF1F06FF0180277 +:10244000504306EB800003EB0010B0FBF1F0216875 +:1024500000F00F002844886070BD00000038014083 +:1024600038B58162044682850020134660642222CA +:1024700084F84220E56B1B4AAA62E56B1A4AEA62BD +:10248000E56B1A4A2A63E26B50630A462168E06BE7 +:10249000091DFEF7E5FA2068016840680090206990 +:1024A00048B120680C3050E8001F41F4807140E8CA +:1024B0000012002AF5D12068143050E8001F41F0C6 +:1024C000010140E80012002AF5D12068143050E8DC +:1024D000001F41F0400140E80012002AF5D1002021 +:1024E00038BD0000D92100085F2200088F210008B4 +:1024F0002DE9F843984617460D460446089E24E009 +:10250000701C22D0FEF7ECFBA0EB0800B0421AD8FA +:10251000CEB12068C168490717D5802D15D0402D50 +:1025200013D00168C94309070FD40168002540682A +:1025300000902046FFF7A2FE0820606484F8405017 +:102540000120BDE8F8830320FBE72068006835EA36 +:10255000000004D00020B842D2D00020F1E70120D2 +:10256000F9E700000148FFF709B8000094010020D6 +:102570000148FFF703B80000DC0100200148FEF726 +:10258000FDBF000024020020F0B5C0EB0011490699 +:10259000134A0C0E002102EB00170122781801EB00 +:1025A0004103C678DFF83CE0002004EB430500BFA0 +:1025B00002FA00F3334202D04FF0010C01E04FF079 +:1025C000000C2B18DBB25A2B01D20EF803C0401CB2 +:1025D000C0B20628ECD3491CC9B20529DED3F0BD30 +:1025E0001800002058000020FEE70907090E002807 +:1025F00004DB00F1E02080F80014704700F00F00C9 +:1026000000F1E02080F8141D704730380A2801D20C +:1026100001207047002070478AB0FEF76FFBFFF77C +:102620000BFDFFF717FBFFF7FFFAFFF7CBFBFFF7F9 +:1026300049FBFFF779FBFFF7A9FBFFF7DFFB5B48DF +:10264000FEF700FF40225A495A48FFF7B5F9242205 +:1026500059A16846FDF74FFF6846FDF72DFF82B28E +:10266000642369465D48FFF7B7F9FEF739FB5C4C18 +:10267000A060FEF735FB03274FF0010A04F11809AB +:102680004FF00008C4F80C00FEF72AFB0546FEF7E1 +:1026900095F80646E088864202D0FFF7D1FBE68037 +:1026A000207830B1012861D0022867D0032870D18A +:1026B0006AE0607828B3E068281A642869D3A378B0 +:1026C00000204E461918B1FBF7F207FB121106EB7A +:1026D000011292F801C0BCF1000F3ED092788AB38B +:1026E000A17006EB011003210078FFF7D7FBA0785B +:1026F00006EB00100078E07084F800A02561E5602A +:1027000047E0A068281AB0F57A7F21D3A27800208C +:102710004E461118B1FBF7F307FB131106EB01133B +:102720001B7B032B0FD2A17006EB01100121007857 +:10273000FFF7B4FBA07806EB00100078E07084F897 +:1027400000A019E009E0401CC0B20328E1D320E05A +:1027500084F801A084F802801BE0401CC0B203286A +:10276000B0D384F8018084F8028012E02069281A2E +:1027700002280ED30220207025610AE02069281A61 +:10278000322806D3FFF77AF984F800800520FEF797 +:102790009FF96069281AB0F5FA7F02D3FFF7C8FBEA +:1027A00065610120FEF794F96EE700000401002046 +:1027B000C2000020940100205253343835204D755A +:1027C0006C74692D536C617665204D61737465720C +:1027D00020537461727465640D0A000024020020A5 +:1027E00000000020010202030405060708090A0B85 +:1027F0000C0D0E0F10100000000000000000010280 +:102800000304060708090000000001020304303138 +:102810003233343536373839414243444546403007 +:1028200058003031323334353637383961626364B9 +:1028300065664030780004000008000000000000D9 +:1028400000020001000010006828000800000020BD +:102850005800000028010008C02800085800002087 +:10286000B80800004401000800000000000000005B +:102870000000000000000000000000000000000058 +:102880000100000000000000000000000000000047 +:102890000200000000000000000000000000000036 +:1028A0000300000000000000000000000000000025 +:1028B00001000000100000000000000000127A007B :04000005080000ED02 :00000001FF diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.htm b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.htm index 70ac89e..3a3d92f 100644 --- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.htm +++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.htm @@ -3,16 +3,16 @@ Static Call Graph - [PressureSensorBoardMaster\PressureSensorBoardMaster.axf]

Static Call Graph for image PressureSensorBoardMaster\PressureSensorBoardMaster.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Wed Nov 12 16:40:21 2025 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Sun Nov 16 23:27:23 2025

-

Maximum Stack Usage = 568 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 440 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-__rt_entry_main ⇒ main ⇒ Process_Response ⇒ Send_Output_Frame ⇒ __2snprintf ⇒ _printf_char_common ⇒ __printf +__rt_entry_main ⇒ main ⇒ Send_Output_Frame ⇒ __2snprintf ⇒ _printf_char_common ⇒ __printf

Functions with no stack information

@@ -22,9 +22,9 @@ Mutually Recursive functions

  • BusFault_Handler   ⇒   BusFault_Handler
  • HardFault_Handler   ⇒   HardFault_Handler
  • MemManage_Handler   ⇒   MemManage_Handler
    -
  • UART_EndRxTransfer   ⇒   UART_EndRxTransfer
    +
  • UART_EndRxTransfer   ⇒   UART_EndRxTransfer
  • UsageFault_Handler   ⇒   UsageFault_Handler
    -
  • UART_EndTxTransfer   ⇒   UART_EndTxTransfer
    +
  • UART_EndTxTransfer   ⇒   UART_EndTxTransfer

    @@ -97,8 +97,8 @@ Function Pointers Global Symbols

    __main (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main)) -

    [Calls]