diff --git a/Core/Inc/cmd_parser.h b/Core/Inc/cmd_parser.h new file mode 100644 index 0000000..cea9908 --- /dev/null +++ b/Core/Inc/cmd_parser.h @@ -0,0 +1,109 @@ +/** + ****************************************************************************** + * @file cmd_parser.h + * @brief ASCII指令解析模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现ASCII文本指令的解析和处理 + * 指令格式: $CMD,param1,param2*CS\r\n + * 支持异或校验,FF为调试特权后门 + * 包含完善的安全防护机制 + ****************************************************************************** + */ + +#ifndef __CMD_PARSER_H +#define __CMD_PARSER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define CMD_MAX_LEN 8 +#define PARAM_MAX_LEN 32 +#define PARSE_TIMEOUT_MS 1000 + +typedef enum { + CMD_CODE_UNKNOWN = 0, + CMD_CODE_RL = 1, + CMD_CODE_DI = 2, + CMD_CODE_ECHO = 3, + CMD_CODE_FWD = 4 +} cmd_code_t; + +typedef struct { + char cmd[CMD_MAX_LEN]; + char param1[PARAM_MAX_LEN]; + char param2[PARAM_MAX_LEN]; + uint8_t received_cs; + uint8_t calculated_cs; + bool valid; + bool skip_checksum; +} cmd_frame_t; + +/** + * @brief 初始化指令解析模块 + * @note 重置解析状态机,清空缓冲区 + * @param 无 + * @retval 无 + */ +void CmdParser_Init(void); + +/** + * @brief 指令解析任务处理函数 + * @note 在主循环中调用,处理已接收的完整指令帧 + * @param 无 + * @retval 无 + */ +void CmdParser_Task(void); + +/** + * @brief 喂入单字节数据到解析器 + * @note 通常在UART接收中断中调用 + * @param byte: 接收到的字节数据 + * @param current_tick: 当前系统tick(用于超时检测) + * @retval 无 + */ +void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick); + +/** + * @brief 检查是否有完整的指令帧 + * @note 用于查询解析状态 + * @param frame: 输出参数,存储解析结果 + * @retval true: 有完整帧, false: 无 + */ +bool CmdParser_HasCompleteFrame(cmd_frame_t *frame); + +/** + * @brief 确认指令已处理 + * @note 处理完指令后调用,重置解析器 + * @param 无 + * @retval 无 + */ +void CmdParser_Acknowledge(void); + +/** + * @brief 获取解析错误计数 + * @note 用于调试和诊断 + * @param 无 + * @retval 错误计数 + */ +uint32_t CmdParser_GetErrorCount(void); + +/** + * @brief 获取接收到的有效指令计数 + * @note 用于调试和诊断 + * @param 无 + * @retval 有效指令计数 + */ +uint32_t CmdParser_GetValidCount(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/io_monitor.h b/Core/Inc/io_monitor.h new file mode 100644 index 0000000..be376fd --- /dev/null +++ b/Core/Inc/io_monitor.h @@ -0,0 +1,82 @@ +/** + ****************************************************************************** + * @file io_monitor.h + * @brief IO状态监控模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块实现四路数字输入(DI1-DI4)的状态监控 + * 采用定时扫描+软件去抖方式检测IO状态变化 + * 状态变化时通过UART2_Print上报 + ****************************************************************************** + */ + +#ifndef __IO_MONITOR_H +#define __IO_MONITOR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define IO_CHANNEL_COUNT 4 +#define IO_SCAN_PERIOD_MS 10 +#define IO_DEBOUNCE_COUNT 3 + +/** + * @brief 初始化IO监控模块 + * @note 初始化各通道状态,读取初始IO电平 + * @param 无 + * @retval 无 + */ +void IO_Monitor_Init(void); + +/** + * @brief IO监控任务处理函数 + * @note 在主循环中调用,每10ms扫描一次IO状态 + * 检测到状态变化时自动上报 + * @param 无 + * @retval 无 + */ +void IO_Monitor_Task(void); + +/** + * @brief 获取指定通道的IO状态 + * @note 返回经过去抖处理后的稳定状态 + * @param channel: 通道号(0-3对应DI1-DI4) + * @retval 0: LOW, 1: HIGH + */ +uint8_t IO_Monitor_GetState(uint8_t channel); + +/** + * @brief 获取所有IO通道状态 + * @note 返回4位状态值,每位对应一个通道 + * @param 无 + * @retval 状态值 (bit0=DI1, bit1=DI2, bit2=DI3, bit3=DI4) + */ +uint8_t IO_Monitor_GetAllStates(void); + +/** + * @brief 启用/禁用IO状态变化上报 + * @note 禁用后状态变化不会触发上报,但状态仍会更新 + * @param enable: true=启用, false=禁用 + * @retval 无 + */ +void IO_Monitor_EnableReport(bool enable); + +/** + * @brief 获取IO状态变化次数统计 + * @note 用于调试和诊断 + * @param channel: 通道号(0-3) + * @retval 该通道的状态变化次数 + */ +uint32_t IO_Monitor_GetChangeCount(uint8_t channel); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/protocol.h b/Core/Inc/protocol.h new file mode 100644 index 0000000..aa47bde --- /dev/null +++ b/Core/Inc/protocol.h @@ -0,0 +1,117 @@ +/** + * @file protocol.h + * @brief 简化的ASCII文本指令协议 + * + * 协议格式: $SN,CMD,param1,param2*CS\r\n + * - SN: 序列号(0-255),用于防丢包和重复 + * - CMD: 指令名称 + * - CS: CRC8校验(从$到*之间所有字符的CRC8值) + * + * 抗干扰/防丢失机制: + * 1. CRC8校验 - 比XOR更强的检错能力 + * 2. 序列号 - 接收方可检测丢包和重复 + * 3. 应答机制 - 重要指令需要确认 + */ + +#ifndef __PROTOCOL_H +#define __PROTOCOL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* 协议配置 */ +#define PROTOCOL_MAX_CMD_LEN 8 +#define PROTOCOL_MAX_PARAM_LEN 32 +#define PROTOCOL_MAX_PARAMS 4 +#define PROTOCOL_FRAME_TIMEOUT 1000 /* 帧超时/ms */ + +typedef struct { + uint8_t sn; /* 序列号 */ + char cmd[PROTOCOL_MAX_CMD_LEN]; /* 指令名 */ + char params[PROTOCOL_MAX_PARAMS][PROTOCOL_MAX_PARAM_LEN]; + uint8_t param_count; /* 参数数量 */ + uint8_t checksum; /* CRC8校验和 */ + bool valid; /* 解析是否成功 */ +} protocol_frame_t; + +typedef enum { + PROTOCOL_OK = 0, + PROTOCOL_ERROR_INVALID_FRAME, + PROTOCOL_ERROR_CHECKSUM_FAIL, + PROTOCOL_ERROR_TIMEOUT, + PROTOCOL_ERROR_UNKNOWN_CMD, + PROTOCOL_ERROR_PARAM_COUNT, + PROTOCOL_ERROR_BUFFER_FULL +} protocol_error_t; + +typedef enum { + PROTOCOL_CMD_RL, /* 继电器控制: RL,id,ON/OFF */ + PROTOCOL_CMD_DI, /* 查询IO: DI,id */ + PROTOCOL_CMD_DIA, /* 查询所有IO: DIA */ + PROTOCOL_CMD_FWD, /* 数据转发: FWD,port,data */ + PROTOCOL_CMD_ECHO, /* 心跳: ECHO */ + PROTOCOL_CMD_ACK, /* 应答: ACK,sn,result */ + PROTOCOL_CMD_STATUS, /* 状态查询: STATUS */ + PROTOCOL_CMD_UNKNOWN +} protocol_cmd_t; + +typedef struct { + protocol_cmd_t cmd; + uint8_t sn; + bool need_ack; /* 是否需要应答 */ + uint32_t send_time; /* 发送时间 */ + uint8_t retry_count; /* 重试次数 */ +} protocol_pending_t; + +#define PROTOCOL_MAX_PENDING 4 + +typedef struct { + protocol_pending_t pending[PROTOCOL_MAX_PENDING]; + uint8_t pending_count; + uint8_t next_sn; + uint8_t last_rx_sn; +} protocol_context_t; + +/* 协议初始化 */ +void protocol_init(void); + +/* 解析收到的指令 */ +protocol_error_t protocol_parse(const char *data, uint16_t length, protocol_frame_t *frame); + +/* 构造发送帧 */ +protocol_error_t protocol_build(char *buffer, uint16_t buffer_size, uint16_t *out_length, + protocol_cmd_t cmd, uint8_t sn, + const char *params[], uint8_t param_count); + +/* 构造应答帧 */ +protocol_error_t protocol_build_ack(char *buffer, uint16_t buffer_size, uint16_t *out_length, + uint8_t sn, bool success, const char *msg); + +/* 发送命令并等待应答 */ +protocol_error_t protocol_send_with_ack(protocol_cmd_t cmd, const char *params[], uint8_t param_count, + uint32_t timeout_ms, uint8_t max_retries); + +/* 协议任务处理(处理超时和重试) */ +void protocol_task(void); + +/* CRC8计算 */ +uint8_t protocol_crc8(const uint8_t *data, uint16_t length); + +/* 指令名转枚举 */ +protocol_cmd_t protocol_cmd_from_string(const char *cmd_str); + +/* 枚举转指令名 */ +const char* protocol_cmd_to_string(protocol_cmd_t cmd); + +/* 获取上一个错误 */ +protocol_error_t protocol_get_last_error(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __PROTOCOL_H */ diff --git a/Core/Inc/relay_control.h b/Core/Inc/relay_control.h new file mode 100644 index 0000000..11cfa1c --- /dev/null +++ b/Core/Inc/relay_control.h @@ -0,0 +1,72 @@ +/** + ****************************************************************************** + * @file relay_control.h + * @brief 继电器控制模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块提供继电器的安全控制接口 + * 当前硬件配置:PA15连接继电器控制端 + ****************************************************************************** + */ + +#ifndef __RELAY_CONTROL_H +#define __RELAY_CONTROL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define RELAY_COUNT 1 +#define RELAY_MIN_INTERVAL 100 + +/** + * @brief 初始化继电器控制模块 + * @note 将继电器初始状态设为关闭 + * @param 无 + * @retval 无 + */ +void Relay_Init(void); + +/** + * @brief 设置继电器状态 + * @note 带最小间隔保护,防止频繁切换损坏继电器 + * @param relay_id: 继电器编号(1-4),当前硬件只有1 + * @param state: true=打开, false=关闭 + * @retval 无 + */ +void Relay_SetState(uint8_t relay_id, bool state); + +/** + * @brief 获取继电器当前状态 + * @note 读取GPIO输出状态 + * @param relay_id: 继电器编号(1-4) + * @retval true=打开, false=关闭 + */ +bool Relay_GetState(uint8_t relay_id); + +/** + * @brief 翻转继电器状态 + * @note 带最小间隔保护 + * @param relay_id: 继电器编号(1-4) + * @retval 无 + */ +void Relay_Toggle(uint8_t relay_id); + +/** + * @brief 获取继电器切换次数 + * @note 用于调试和诊断 + * @param 无 + * @retval 切换次数 + */ +uint32_t Relay_GetToggleCount(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Inc/uart2_print.h b/Core/Inc/uart2_print.h new file mode 100644 index 0000000..01d2178 --- /dev/null +++ b/Core/Inc/uart2_print.h @@ -0,0 +1,99 @@ +/** + ****************************************************************************** + * @file uart2_print.h + * @brief UART2调试打印模块头文件 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本模块提供基于环形缓冲区的非阻塞调试信息输出功能 + * 支持printf风格的格式化输出 + * 支持中断安全调用 + ****************************************************************************** + */ + +#ifndef __UART2_PRINT_H +#define __UART2_PRINT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define UART2_TX_BUFFER_SIZE 256 + +/** + * @brief 初始化UART2打印模块 + * @note 清空发送缓冲区,重置状态标志 + * @param 无 + * @retval 无 + */ +void UART2_Print_Init(void); + +/** + * @brief 发送原始数据到UART2 + * @note 数据写入环形缓冲区,非阻塞返回 + * @param data: 待发送的数据指针 + * @param len: 数据长度 + * @retval 无 + */ +void UART2_Print_Send(const uint8_t *data, uint16_t len); + +/** + * @brief 发送字符串到UART2 + * @note 自动计算字符串长度 + * @param str: 待发送的字符串指针 + * @retval 无 + */ +void UART2_Print_String(const char *str); + +/** + * @brief 格式化打印到UART2 + * @note 支持printf风格的格式化输出 + * @param fmt: 格式化字符串 + * @param ...: 可变参数 + * @retval 无 + */ +void UART2_Print_Printf(const char *fmt, ...); + +/** + * @brief UART2打印任务处理函数 + * @note 在主循环中调用,处理发送缓冲区中的数据 + * 每次调用发送一个字节(中断方式) + * @param 无 + * @retval 无 + */ +void UART2_Print_Task(void); + +/** + * @brief 检查UART2是否正在发送 + * @note 用于查询当前发送状态 + * @param 无 + * @retval true: 正在发送, false: 空闲 + */ +bool UART2_Print_IsBusy(void); + +/** + * @brief 获取发送缓冲区剩余空间 + * @note 用于检测缓冲区是否即将溢出 + * @param 无 + * @retval 剩余空间字节数 + */ +uint16_t UART2_Print_Available(void); + +/** + * @brief UART2发送完成中断回调 + * @note 由HAL库调用,不应由用户直接调用 + * @param huart: UART句柄指针 + * @retval 无 + */ +void UART2_Print_TxCpltCallback(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Core/Src/cmd_parser.c b/Core/Src/cmd_parser.c new file mode 100644 index 0000000..e0e2cc8 --- /dev/null +++ b/Core/Src/cmd_parser.c @@ -0,0 +1,378 @@ +/** + ****************************************************************************** + * @file cmd_parser.c + * @brief ASCII指令解析模块实现 + * @author Application Layer + * @version 1.1 + ****************************************************************************** + * @attention + * 本模块实现ASCII文本指令的解析和处理 + * 关键特性: + * 1. 状态机解析,健壮可靠 + * 2. 完善的安全防护(缓冲区边界检查、超时重置、字符过滤) + * 3. 异或校验,FF特权后门 + * 4. 支持RL、DI、ECHO指令 + * + * 修订历史: + * v1.1 - 修复审查报告高危-6、中危-7/8 + ****************************************************************************** + */ + +#include "cmd_parser.h" +#include "uart2_print.h" +#include "io_monitor.h" +#include "relay_control.h" +#include +#include +#include // snprintf +#include // atoi + +#define DEBUG_CMD_PARSER 1 + +#if DEBUG_CMD_PARSER +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[CMD] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif + +typedef enum { + PARSE_IDLE, + PARSE_CMD, + PARSE_PARAM1, + PARSE_PARAM2, + PARSE_CHECKSUM, + PARSE_COMPLETE +} parse_state_t; + +typedef struct { + parse_state_t state; + cmd_frame_t frame; + uint8_t field_index; + uint8_t checksum_acc; + uint8_t cs_buffer[2]; + uint8_t cs_index; + uint32_t last_rx_tick; + uint32_t error_count; + uint32_t valid_count; +} parser_context_t; + +static parser_context_t ctx; + +static void reset_parser(void) +{ + ctx.state = PARSE_IDLE; + ctx.field_index = 0; + ctx.checksum_acc = 0; + ctx.cs_index = 0; + memset(&ctx.frame, 0, sizeof(ctx.frame)); +} + +static bool is_valid_cmd_char(char c) +{ + return isupper((unsigned char)c) || isdigit((unsigned char)c); +} + +static bool is_valid_param_char(char c) +{ + return isprint((unsigned char)c) && c != '*' && c != '\r' && c != '\n'; +} + +static uint8_t hex_char_to_val(char c) +{ + if (c >= '0' && c <= '9') return c - '0'; + if (c >= 'A' && c <= 'F') return c - 'A' + 10; + if (c >= 'a' && c <= 'f') return c - 'a' + 10; + return 0; +} + +static uint8_t hex_to_byte(char high, char low) +{ + return (hex_char_to_val(high) << 4) | hex_char_to_val(low); +} + +static uint8_t calc_checksum(const char *data, uint8_t len) +{ + uint8_t cs = 0; + for (uint8_t i = 0; i < len; i++) { + cs ^= (uint8_t)data[i]; + } + return cs; +} + +static void send_response_ok(const char *content) +{ + char msg[64]; + uint8_t cs; + + int len = snprintf(msg, sizeof(msg), "$OK,%s*", content); + cs = calc_checksum(msg + 1, len - 1); + snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); + + UART2_Print_String(msg); +} + +static void send_response_err(const char *err_code) +{ + char msg[32]; + uint8_t cs; + + int len = snprintf(msg, sizeof(msg), "$ERR,%s*", err_code); + cs = calc_checksum(msg + 1, len - 1); + snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); + + UART2_Print_String(msg); +} + +static bool is_str_empty(const char *str) +{ + return (str == NULL || str[0] == '\0'); +} + +static bool is_str_numeric(const char *str) +{ + if (is_str_empty(str)) { + return false; + } + while (*str) { + if (!isdigit((unsigned char)*str)) { + return false; + } + str++; + } + return true; +} + +static void process_cmd_frame(const cmd_frame_t *frame) +{ + DEBUG_LOG("CMD=%s P1=%s P2=%s CS=%02X/%02X %s", + frame->cmd, frame->param1, frame->param2, + frame->received_cs, frame->calculated_cs, + frame->skip_checksum ? "(skip)" : ""); + + if (strcmp(frame->cmd, "RL") == 0) { + if (!is_str_numeric(frame->param1) || !is_str_numeric(frame->param2)) { + send_response_err("PARAM"); + DEBUG_LOG("Invalid RL params: not numeric"); + return; + } + + int relay_id = atoi(frame->param1); + int state = atoi(frame->param2); + + if (relay_id >= 1 && relay_id <= 4 && (state == 0 || state == 1)) { + Relay_SetState(relay_id, state ? true : false); + + char resp[32]; + snprintf(resp, sizeof(resp), "RL,%d,%d", relay_id, state); + send_response_ok(resp); + + DEBUG_LOG("Relay %d -> %s", relay_id, state ? "ON" : "OFF"); + } else { + send_response_err("PARAM"); + DEBUG_LOG("Invalid RL params: id=%d state=%d", relay_id, state); + } + } + else if (strcmp(frame->cmd, "DI") == 0) { + if (is_str_empty(frame->param1) || strcmp(frame->param1, "0") == 0) { + uint8_t states = IO_Monitor_GetAllStates(); + char resp[32]; + snprintf(resp, sizeof(resp), "DI,%d%d%d%d", + (states >> 0) & 1, (states >> 1) & 1, + (states >> 2) & 1, (states >> 3) & 1); + send_response_ok(resp); + DEBUG_LOG("DI all states: 0x%02X", states); + } + else if (is_str_numeric(frame->param1)) { + int channel = atoi(frame->param1); + if (channel >= 1 && channel <= 4) { + uint8_t state = IO_Monitor_GetState(channel - 1); + char resp[32]; + snprintf(resp, sizeof(resp), "DI,%d,%d", channel, state); + send_response_ok(resp); + DEBUG_LOG("DI%d = %d", channel, state); + } else { + send_response_err("PARAM"); + DEBUG_LOG("Invalid DI channel: %d", channel); + } + } + else { + send_response_err("PARAM"); + DEBUG_LOG("Invalid DI param: not numeric"); + } + } + else if (strcmp(frame->cmd, "ECHO") == 0) { + send_response_ok("ECHO"); + DEBUG_LOG("ECHO response sent"); + } + else { + send_response_err("CMD"); + DEBUG_LOG("Unknown command: %s", frame->cmd); + } +} + +void CmdParser_Init(void) +{ + memset(&ctx, 0, sizeof(ctx)); + ctx.state = PARSE_IDLE; + + DEBUG_LOG("Init OK"); +} + +void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) +{ + if (ctx.state != PARSE_IDLE && ctx.state != PARSE_COMPLETE) { + if (current_tick - ctx.last_rx_tick >= PARSE_TIMEOUT_MS) { + ctx.error_count++; + DEBUG_LOG("Timeout, reset parser"); + reset_parser(); + if (byte == '$') { + ctx.state = PARSE_CMD; + } + return; + } + } + ctx.last_rx_tick = current_tick; + + switch (ctx.state) { + case PARSE_IDLE: + if (byte == '$') { + reset_parser(); + ctx.state = PARSE_CMD; + } + break; + + case PARSE_CMD: + if (byte == ',') { + ctx.frame.cmd[ctx.field_index] = '\0'; + ctx.state = PARSE_PARAM1; + ctx.field_index = 0; + } else if (byte == '*') { + ctx.frame.cmd[ctx.field_index] = '\0'; + ctx.state = PARSE_CHECKSUM; + ctx.field_index = 0; + ctx.cs_index = 0; + } else if (is_valid_cmd_char(byte)) { + if (ctx.field_index < CMD_MAX_LEN - 1) { + ctx.frame.cmd[ctx.field_index++] = byte; + ctx.checksum_acc ^= byte; + } else { + ctx.error_count++; + reset_parser(); + } + } else { + ctx.error_count++; + reset_parser(); + } + break; + + case PARSE_PARAM1: + if (byte == ',') { + ctx.frame.param1[ctx.field_index] = '\0'; + ctx.state = PARSE_PARAM2; + ctx.field_index = 0; + } else if (byte == '*') { + ctx.frame.param1[ctx.field_index] = '\0'; + ctx.state = PARSE_CHECKSUM; + ctx.field_index = 0; + ctx.cs_index = 0; + } else if (is_valid_param_char(byte)) { + if (ctx.field_index < PARAM_MAX_LEN - 1) { + ctx.frame.param1[ctx.field_index++] = byte; + ctx.checksum_acc ^= byte; + } else { + ctx.error_count++; + reset_parser(); + } + } else { + ctx.error_count++; + reset_parser(); + } + break; + + case PARSE_PARAM2: + if (byte == '*') { + ctx.frame.param2[ctx.field_index] = '\0'; + ctx.state = PARSE_CHECKSUM; + ctx.field_index = 0; + ctx.cs_index = 0; + } else if (is_valid_param_char(byte)) { + if (ctx.field_index < PARAM_MAX_LEN - 1) { + ctx.frame.param2[ctx.field_index++] = byte; + ctx.checksum_acc ^= byte; + } else { + ctx.error_count++; + reset_parser(); + } + } else { + ctx.error_count++; + reset_parser(); + } + break; + + case PARSE_CHECKSUM: + if (byte == '\n') { + ctx.frame.received_cs = hex_to_byte(ctx.cs_buffer[0], ctx.cs_buffer[1]); + ctx.frame.calculated_cs = ctx.checksum_acc; + ctx.frame.skip_checksum = (ctx.frame.received_cs == 0xFF); + + if (ctx.frame.skip_checksum || + ctx.frame.received_cs == ctx.frame.calculated_cs) { + ctx.frame.valid = true; + ctx.state = PARSE_COMPLETE; + ctx.valid_count++; + } else { + ctx.error_count++; + DEBUG_LOG("Checksum error: recv=%02X calc=%02X", + ctx.frame.received_cs, ctx.frame.calculated_cs); + send_response_err("CS"); + reset_parser(); + } + } else if (byte != '\r') { + if (ctx.cs_index < 2) { + ctx.cs_buffer[ctx.cs_index++] = byte; + } + } + break; + + case PARSE_COMPLETE: + reset_parser(); + if (byte == '$') { + ctx.state = PARSE_CMD; + } + break; + } +} + +void CmdParser_Task(void) +{ + if (ctx.state == PARSE_COMPLETE && ctx.frame.valid) { + process_cmd_frame(&ctx.frame); + reset_parser(); + } +} + +bool CmdParser_HasCompleteFrame(cmd_frame_t *frame) +{ + if (ctx.state == PARSE_COMPLETE && ctx.frame.valid) { + if (frame) { + memcpy(frame, &ctx.frame, sizeof(cmd_frame_t)); + } + return true; + } + return false; +} + +void CmdParser_Acknowledge(void) +{ + reset_parser(); +} + +uint32_t CmdParser_GetErrorCount(void) +{ + return ctx.error_count; +} + +uint32_t CmdParser_GetValidCount(void) +{ + return ctx.valid_count; +} diff --git a/Core/Src/io_monitor.c b/Core/Src/io_monitor.c new file mode 100644 index 0000000..4dd3388 --- /dev/null +++ b/Core/Src/io_monitor.c @@ -0,0 +1,158 @@ +/** + ****************************************************************************** + * @file io_monitor.c + * @brief IO状态监控模块实现 + * @author Application Layer + * @version 1.1 + ****************************************************************************** + * @attention + * 本模块实现四路数字输入的状态监控 + * 关键特性: + * 1. 10ms定时扫描,平衡响应速度和CPU占用 + * 2. 软件去抖,连续3次相同状态才确认变化 + * 3. 状态变化时自动上报ASCII格式消息 + * + * 修订历史: + * v1.1 - 修复审查报告中危-5:去抖计数器初始化优化 + ****************************************************************************** + */ + +#include "io_monitor.h" +#include "uart2_print.h" +#include "main.h" +#include + +#define DEBUG_IO_MONITOR 1 + +#if DEBUG_IO_MONITOR +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[IO] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif + +typedef struct { + GPIO_TypeDef *port; + uint16_t pin; + uint8_t current_state; + uint8_t debounce_counter; + uint8_t last_raw_state; + uint32_t change_count; +} io_channel_t; + +static io_channel_t di_channels[IO_CHANNEL_COUNT] = { + {GPIOB, GPIO_PIN_4, 0, 0, 0, 0}, + {GPIOB, GPIO_PIN_5, 0, 0, 0, 0}, + {GPIOB, GPIO_PIN_6, 0, 0, 0, 0}, + {GPIOB, GPIO_PIN_7, 0, 0, 0, 0} +}; + +static uint32_t last_scan_tick = 0; +static bool report_enabled = true; + +static uint8_t calc_checksum(const char *data, uint8_t len) +{ + uint8_t cs = 0; + for (uint8_t i = 0; i < len; i++) { + cs ^= (uint8_t)data[i]; + } + return cs; +} + +static void send_di_event(uint8_t channel, uint8_t state) +{ + char msg[32]; + uint8_t cs; + + int len = snprintf(msg, sizeof(msg), "$DI_EVENT,%d,%d*", channel + 1, state); + + cs = calc_checksum(msg + 1, len - 1); + + snprintf(msg + len, sizeof(msg) - len, "%02X\r\n", cs); + + UART2_Print_String(msg); + + DEBUG_LOG("CH%d -> %s", channel + 1, state ? "HIGH" : "LOW"); +} + +void IO_Monitor_Init(void) +{ + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + io_channel_t *ch = &di_channels[i]; + + ch->current_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; + ch->last_raw_state = ch->current_state; + ch->debounce_counter = 1; + ch->change_count = 0; + } + + last_scan_tick = 0; + report_enabled = true; + + DEBUG_LOG("Init OK, initial states: 0x%02X", IO_Monitor_GetAllStates()); +} + +void IO_Monitor_Task(void) +{ + uint32_t current_tick = HAL_GetTick(); + + if (current_tick - last_scan_tick < IO_SCAN_PERIOD_MS) { + return; + } + last_scan_tick = current_tick; + + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + io_channel_t *ch = &di_channels[i]; + + uint8_t raw_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; + + if (raw_state != ch->last_raw_state) { + ch->debounce_counter = 0; + ch->last_raw_state = raw_state; + } else { + if (ch->debounce_counter < IO_DEBOUNCE_COUNT) { + ch->debounce_counter++; + } else if (ch->current_state != raw_state) { + ch->current_state = raw_state; + ch->change_count++; + + if (report_enabled) { + send_di_event(i, raw_state); + } + } + } + } +} + +uint8_t IO_Monitor_GetState(uint8_t channel) +{ + if (channel >= IO_CHANNEL_COUNT) { + return 0; + } + return di_channels[channel].current_state; +} + +uint8_t IO_Monitor_GetAllStates(void) +{ + uint8_t states = 0; + + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + if (di_channels[i].current_state) { + states |= (1 << i); + } + } + return states; +} + +void IO_Monitor_EnableReport(bool enable) +{ + report_enabled = enable; + DEBUG_LOG("Report %s", enable ? "enabled" : "disabled"); +} + +uint32_t IO_Monitor_GetChangeCount(uint8_t channel) +{ + if (channel >= IO_CHANNEL_COUNT) { + return 0; + } + return di_channels[channel].change_count; +} diff --git a/Core/Src/main.c b/Core/Src/main.c index 51c8f6d..4ca7d10 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -28,6 +28,12 @@ #include "rf433_config.h" #include "rf433_hal.h" +/* 应用层模块头文件 */ +#include "uart2_print.h" +#include "io_monitor.h" +#include "cmd_parser.h" +#include "relay_control.h" + #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) #include "rf433_tx_app.h" #endif @@ -55,7 +61,7 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ - +static uint8_t uart2_rx_byte = 0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -100,11 +106,20 @@ int main(void) MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ - /* 初始化RF433模块 - 使用默认配置 */ - rf433_init(NULL); + /* 初始化应用层模块 */ + UART2_Print_Init(); + IO_Monitor_Init(); + CmdParser_Init(); + Relay_Init(); + + /* 启动UART2接收中断 */ + HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + + /* 初始化RF433模块 - 使用默认配置 */ + rf433_init(NULL); - /* 启动UART接收 - 使用rf433_hal中的临时变量 */ - HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); + /* 启动UART1接收 - 使用rf433_hal中的临时变量 */ + HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); /* 根据配置模式初始化TX/RX应用层 */ #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) @@ -119,7 +134,13 @@ int main(void) rf433_rx_app_start(); #endif - /* USER CODE END 2 */ + /* 打印启动信息 */ + printf("\r\n========================================\r\n"); + printf("E32-433TBH-SC Application Started\r\n"); + printf("System Clock: %d MHz\r\n", SystemCoreClock / 1000000); + printf("========================================\r\n"); + +/* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ @@ -129,6 +150,11 @@ int main(void) /* USER CODE BEGIN 3 */ + /* 应用层任务处理 */ + UART2_Print_Task(); + IO_Monitor_Task(); + CmdParser_Task(); + #if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) /* TX任务 */ rf433_tx_app_task(); @@ -139,8 +165,6 @@ int main(void) rf433_rx_app_task(); #endif - /* 短延时,避免CPU占用过高 */ - HAL_Delay(1); } /* USER CODE END 3 */ } @@ -186,6 +210,43 @@ void SystemClock_Config(void) /* USER CODE BEGIN 4 */ +/** + * @brief UART接收完成中断回调函数 + * @note 处理UART1(RF433)和UART2(调试口)的接收数据 + * @param huart: UART句柄指针 + * @retval 无 + */ +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART1) + { + /* 调用RF433模块的UART接收回调 */ + rf433_hal_uart_rxcplt_callback(); + } + else if (huart->Instance == USART2) + { + /* 喂入指令解析器 */ + CmdParser_FeedByte(uart2_rx_byte, HAL_GetTick()); + /* 重新启动接收 */ + HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + } +} + +/** + * @brief UART发送完成中断回调函数 + * @note 处理UART2发送完成,触发下一次发送 + * @param huart: UART句柄指针 + * @retval 无 + */ +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART2) + { + /* 调用UART2打印模块的发送完成回调 */ + UART2_Print_TxCpltCallback(); + } +} + /* USER CODE END 4 */ /** diff --git a/Core/Src/relay_control.c b/Core/Src/relay_control.c new file mode 100644 index 0000000..2dcb20f --- /dev/null +++ b/Core/Src/relay_control.c @@ -0,0 +1,102 @@ +/** + ****************************************************************************** + * @file relay_control.c + * @brief 继电器控制模块实现 + * @author Application Layer + * @version 1.1 + ****************************************************************************** + * @attention + * 本模块实现继电器的安全控制 + * 关键特性: + * 1. 最小切换间隔保护,防止频繁切换损坏继电器 + * 2. 状态记录,支持诊断 + * 3. 调试日志输出 + * + * 修订历史: + * v1.1 - 修复审查报告中危-9/10:对齐RELAY_COUNT与参数校验逻辑 + ****************************************************************************** + */ + +#include "relay_control.h" +#include "uart2_print.h" +#include "main.h" + +#define DEBUG_RELAY 1 + +#if DEBUG_RELAY +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[RELAY] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif + +#define MAX_RELAY_ID 4 + +static bool current_states[MAX_RELAY_ID] = {false, false, false, false}; +static uint32_t last_toggle_tick = 0; +static uint32_t toggle_count = 0; + +void Relay_Init(void) +{ + HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, GPIO_PIN_RESET); + + for (int i = 0; i < MAX_RELAY_ID; i++) { + current_states[i] = false; + } + last_toggle_tick = 0; + toggle_count = 0; + + DEBUG_LOG("Init OK, state=OFF"); +} + +void Relay_SetState(uint8_t relay_id, bool state) +{ + if (relay_id < 1 || relay_id > MAX_RELAY_ID) { + DEBUG_LOG("Invalid relay ID: %d", relay_id); + return; + } + + uint32_t current_tick = HAL_GetTick(); + if (current_tick - last_toggle_tick < RELAY_MIN_INTERVAL) { + DEBUG_LOG("Toggle too fast, ignored"); + return; + } + + uint8_t idx = relay_id - 1; + + if (current_states[idx] == state) { + DEBUG_LOG("State unchanged: %s", state ? "ON" : "OFF"); + return; + } + + if (relay_id == 1) { + HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, + state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } + + current_states[idx] = state; + last_toggle_tick = current_tick; + toggle_count++; + + DEBUG_LOG("Relay %d -> %s (count=%lu)", relay_id, state ? "ON" : "OFF", toggle_count); +} + +bool Relay_GetState(uint8_t relay_id) +{ + if (relay_id < 1 || relay_id > MAX_RELAY_ID) { + return false; + } + return current_states[relay_id - 1]; +} + +void Relay_Toggle(uint8_t relay_id) +{ + if (relay_id < 1 || relay_id > MAX_RELAY_ID) { + return; + } + Relay_SetState(relay_id, !current_states[relay_id - 1]); +} + +uint32_t Relay_GetToggleCount(void) +{ + return toggle_count; +} diff --git a/Core/Src/rf433_tx_app.c b/Core/Src/rf433_tx_app.c index 93b9cda..7c11361 100644 --- a/Core/Src/rf433_tx_app.c +++ b/Core/Src/rf433_tx_app.c @@ -14,7 +14,13 @@ #include "main.h" #include #include - +#include "uart2_print.h" +#define DEBUG_CMD_PARSER 1 +#if DEBUG_CMD_PARSER +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[CMD] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif /* ============================================================================ * 私有变量 * ============================================================================ */ diff --git a/Core/Src/uart2_print.c b/Core/Src/uart2_print.c new file mode 100644 index 0000000..08b8a7d --- /dev/null +++ b/Core/Src/uart2_print.c @@ -0,0 +1,224 @@ +/** + ****************************************************************************** + * @file uart2_print.c + * @brief UART2调试打印模块实现 + * @author Application Layer + * @version 1.1 + ****************************************************************************** + * @attention + * 本模块实现基于环形缓冲区的非阻塞调试信息输出 + * 关键特性: + * 1. 环形缓冲区避免数据丢失 + * 2. 中断安全,支持ISR中调用 + * 3. 非阻塞发送,不影响实时性 + * + * 修订历史: + * v1.1 - 修复审查报告高危-1/2/3,中危-4 + ****************************************************************************** + */ + +#include "uart2_print.h" +#include "usart.h" +#include +#include + +#define DEBUG_PRINT_ENABLED 1 + +#if DEBUG_PRINT_ENABLED +#define DEBUG_LOG(fmt, ...) UART2_Print_Printf("[UART2] " fmt "\r\n", ##__VA_ARGS__) +#else +#define DEBUG_LOG(fmt, ...) +#endif + +typedef struct { + uint8_t buffer[UART2_TX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile uint16_t count; + volatile bool is_sending; + volatile uint16_t overflow_count; +} ring_buffer_t; + +static ring_buffer_t tx_ring = {0}; + +void UART2_Print_Init(void) +{ + tx_ring.head = 0; + tx_ring.tail = 0; + tx_ring.count = 0; + tx_ring.is_sending = false; + tx_ring.overflow_count = 0; + + DEBUG_LOG("Init OK, buffer size: %d", UART2_TX_BUFFER_SIZE); +} + +void UART2_Print_Send(const uint8_t *data, uint16_t len) +{ + if (len == 0 || data == NULL) { + return; + } + + uint16_t written = 0; + bool needs_kickoff = false; + + __disable_irq(); + for (uint16_t i = 0; i < len; i++) { + if (tx_ring.count >= UART2_TX_BUFFER_SIZE) { + tx_ring.overflow_count++; + break; + } + + tx_ring.buffer[tx_ring.head] = data[i]; + tx_ring.head = (tx_ring.head + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.count++; + written++; + } + + if (written > 0 && !tx_ring.is_sending) { + tx_ring.is_sending = true; + needs_kickoff = true; + } + __enable_irq(); + + if (needs_kickoff) { + uint8_t byte; + __disable_irq(); + byte = tx_ring.buffer[tx_ring.tail]; + __enable_irq(); + HAL_UART_Transmit_IT(&huart2, &byte, 1); + } +} + +void UART2_Print_String(const char *str) +{ + if (str == NULL) { + return; + } + UART2_Print_Send((const uint8_t *)str, strlen(str)); +} + +void UART2_Print_Printf(const char *fmt, ...) +{ + if (fmt == NULL) { + return; + } + + char buffer[128]; + va_list args; + + va_start(args, fmt); + int len = vsnprintf(buffer, sizeof(buffer), fmt, args); + va_end(args); + + if (len >= 0) { + if (len >= (int)sizeof(buffer)) { + len = sizeof(buffer) - 1; + } + UART2_Print_Send((const uint8_t *)buffer, len); + } +} + +void UART2_Print_Task(void) +{ + uint8_t byte; + uint16_t current_tail; + + __disable_irq(); + if (tx_ring.is_sending || tx_ring.count == 0) { + __enable_irq(); + return; + } + + current_tail = tx_ring.tail; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.count--; + tx_ring.is_sending = true; + byte = tx_ring.buffer[current_tail]; + __enable_irq(); + + HAL_UART_Transmit_IT(&huart2, &byte, 1); +} + +void UART2_Print_TxCpltCallback(void) +{ + uint8_t byte; + uint16_t current_tail; + bool has_more = false; + + __disable_irq(); + tx_ring.is_sending = false; + + if (tx_ring.count > 0) { + current_tail = tx_ring.tail; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.count--; + tx_ring.is_sending = true; + byte = tx_ring.buffer[current_tail]; + has_more = true; + } + __enable_irq(); + + if (has_more) { + HAL_UART_Transmit_IT(&huart2, &byte, 1); + } +} + +bool UART2_Print_IsBusy(void) +{ + bool busy; + __disable_irq(); + busy = tx_ring.is_sending || (tx_ring.count > 0); + __enable_irq(); + return busy; +} + +uint16_t UART2_Print_Available(void) +{ + uint16_t available; + __disable_irq(); + available = UART2_TX_BUFFER_SIZE - tx_ring.count; + __enable_irq(); + return available; +} + +uint16_t UART2_Print_GetOverflowCount(void) +{ + return tx_ring.overflow_count; +} + +/** + * @brief printf重定向函数 (Keil MDK) + * @note 重定向标准库printf到UART2 + * @param ch: 待发送字符 + * @param f: 文件指针(未使用) + * @retval 发送的字符 + */ +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int fputc(int ch, FILE *f) +{ + (void)f; + UART2_Print_Send((uint8_t *)&ch, 1); + return ch; +} +#endif + +/** + * @brief printf重定向函数 (GCC) + * @note 重定向标准库printf到UART2 + * @param ch: 待发送字符 + * @retval 发送的字符 + */ +#if defined(__GNUC__) +int __io_putchar(int ch) +{ + UART2_Print_Send((uint8_t *)&ch, 1); + return ch; +} + +int _write(int file, char *ptr, int len) +{ + (void)file; + UART2_Print_Send((uint8_t *)ptr, len); + return len; +} +#endif diff --git a/Core/Src/usart.c b/Core/Src/usart.c index 1b8677f..c622172 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -279,30 +279,28 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) } /* USER CODE BEGIN 1 */ -void uart1_reconfig( uint32_t rate ) +/** + * @brief UART1波特率重配置函数 + * @note 用于RF433模块波特率动态调整 + * @param rate: 目标波特率 + * @retval 无 + */ +void uart1_reconfig(uint32_t rate) { - /* 原串口1的初始化 */ - huart1.Instance = USART1; - huart1.Init.BaudRate = rate; - huart1.Init.WordLength = UART_WORDLENGTH_8B; - huart1.Init.StopBits = UART_STOPBITS_1; - huart1.Init.Parity = UART_PARITY_NONE; - huart1.Init.Mode = UART_MODE_TX_RX; - huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart1.Init.OverSampling = UART_OVERSAMPLING_16; - if (HAL_UART_Init(&huart1) != HAL_OK) - { - Error_Handler(); - } + huart1.Instance = USART1; + huart1.Init.BaudRate = rate; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } } -void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) -{ - if (huart->Instance == USART1) - { - /* 调用RF433模块的UART接收回调 */ - rf433_hal_uart_rxcplt_callback(); - } -} +/* UART回调函数已移至main.c统一管理 */ /* USER CODE END 1 */ diff --git a/Driver_RF433/Inc/rf433_config.h b/Driver_RF433/Inc/rf433_config.h index a5cd459..ebd84a0 100644 --- a/Driver_RF433/Inc/rf433_config.h +++ b/Driver_RF433/Inc/rf433_config.h @@ -28,7 +28,7 @@ extern "C" { #define RF433_MODE_BOTH 3 #ifndef RF433_MODE -#define RF433_MODE RF433_MODE_RX +#define RF433_MODE RF433_MODE_TX #endif /* ============================================================================ diff --git a/Driver_RF433/Src/rf433.c b/Driver_RF433/Src/rf433.c index 7b1fee7..3fda59c 100644 --- a/Driver_RF433/Src/rf433.c +++ b/Driver_RF433/Src/rf433.c @@ -9,6 +9,7 @@ #include "rf433.h" #include "rf433_hal.h" #include +#include // printf #include "stm32f1xx_hal.h" /* ============================================================================ @@ -362,7 +363,7 @@ rf433_error_t rf433_transmit(uint8_t *buffer, uint16_t length) { return RF433_ERROR_TIMEOUT; } - + printf("Sent: %s", (char*)buffer); // DEBUG_LOG未定义,使用printf替代 return RF433_OK; } diff --git a/MDK-ARM/project.uvguix.xtell b/MDK-ARM/project.uvguix.xtell index 91db123..a1e3d2f 100644 --- a/MDK-ARM/project.uvguix.xtell +++ b/MDK-ARM/project.uvguix.xtell @@ -25,7 +25,7 @@ 204 Performance Analyzer - 720 175 175 100 + 1170 @@ -110,8 +110,8 @@ 0 - 1191 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A00000001000000010000003A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000FFDC7800FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000BECEA100FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000F0A0A100FFFFFFFF3B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E73000000009CC1B600FFFFFFFF5B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF3A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000D9ADC200FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000B3020000 + 1379 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C0000000B000000010000003A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F636F6E6669672E68000000000E72663433335F636F6E6669672E6800000000FFDC7800FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F72785F6170702E63000000000E72663433335F72785F6170702E6300000000BECEA100FFFFFFFF42433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C72663433335F74785F6170702E63000000000E72663433335F74785F6170702E6300000000F0A0A100FFFFFFFF3B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF48433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E73000000009CC1B600FFFFFFFF5B433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C2E63000000000F73746D3332663178785F68616C2E6300000000F7B88600FFFFFFFF3A433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C6770696F2E6300000000066770696F2E6300000000D9ADC200FFFFFFFF60433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000A5C2D700FFFFFFFF47433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C496E635C72663433335F68616C2E68000000000B72663433335F68616C2E6800000000B3A6BE00FFFFFFFF41433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C436F72655C5372635C75617274325F7072696E742E63000000000D75617274325F7072696E742E6300000000EAD6A300FFFFFFFF43433A5C776F726B66696C655C4533322D3433335C736F6674776172655C4533322D3433335442482D53435C4472697665725F52463433335C5372635C72663433332E63000000000772663433332E6300000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000B3020000 @@ -1360,7 +1360,7 @@ 50003 50003 - 0 + 1 0 0 0 @@ -1370,11 +1370,11 @@ 0 16 - A3040000660000008D05000010020000 + F7000000660000008D05000081000000 16 - 22000000390000001201000004010000 + 0A0000000A0000006E0000006E000000 @@ -1806,7 +1806,7 @@ File 2608 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B6574960000000000000001002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B657400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B6574960000000000000001002150726F746F636F6C5F4275696C643556506F7765725374617475735061636B657400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 974 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000770726F6A656374960000000000000001000770726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3603,10 +3603,10 @@ 0 100 - 1 + 11 ../Core/Src/main.c - 1 + 29 122 149 1 @@ -3615,9 +3615,9 @@ ..\Driver_RF433\Inc\rf433_config.h - 82 - 1 - 89 + 23 + 16 + 39 1 0 @@ -3633,9 +3633,9 @@ ..\Core\Src\rf433_tx_app.c - 0 - 177 - 208 + 45 + 171 + 182 1 0 @@ -3694,6 +3694,24 @@ 0 + + ..\Core\Src\uart2_print.c + 0 + 1 + 1 + 1 + + 0 + + + ..\Driver_RF433\Src\rf433.c + 5 + 345 + 363 + 1 + + 0 + diff --git a/MDK-ARM/project.uvoptx b/MDK-ARM/project.uvoptx index 04fa5cf..906f41b 100644 --- a/MDK-ARM/project.uvoptx +++ b/MDK-ARM/project.uvoptx @@ -159,16 +159,16 @@ 0 188 1 -
134227242
+
0
0 0 0 0 0 - 1 + 0 ..\Core\Src\rf433_tx_app.c - \\project\../Core/Src/rf433_tx_app.c\188 + @@ -357,6 +357,54 @@ 0 0 + + 2 + 11 + 1 + 0 + 0 + 0 + ..\Core\Src\cmd_parser.c + cmd_parser.c + 0 + 0 + + + 2 + 12 + 1 + 0 + 0 + 0 + ..\Core\Src\io_monitor.c + io_monitor.c + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + ..\Core\Src\relay_control.c + relay_control.c + 0 + 0 + + + 2 + 14 + 1 + 0 + 0 + 0 + ..\Core\Src\uart2_print.c + uart2_print.c + 0 + 0 + @@ -367,7 +415,7 @@ 0 3 - 11 + 15 1 0 0 @@ -379,7 +427,7 @@ 3 - 12 + 16 1 0 0 @@ -391,7 +439,7 @@ 3 - 13 + 17 1 0 0 @@ -403,7 +451,7 @@ 3 - 14 + 18 1 0 0 @@ -415,7 +463,7 @@ 3 - 15 + 19 1 0 0 @@ -427,7 +475,7 @@ 3 - 16 + 20 1 0 0 @@ -439,7 +487,7 @@ 3 - 17 + 21 1 0 0 @@ -451,7 +499,7 @@ 3 - 18 + 22 1 0 0 @@ -463,7 +511,7 @@ 3 - 19 + 23 1 0 0 @@ -475,7 +523,7 @@ 3 - 20 + 24 1 0 0 @@ -487,7 +535,7 @@ 3 - 21 + 25 1 0 0 @@ -499,7 +547,7 @@ 3 - 22 + 26 1 0 0 @@ -511,7 +559,7 @@ 3 - 23 + 27 1 0 0 @@ -523,7 +571,7 @@ 3 - 24 + 28 1 0 0 @@ -535,7 +583,7 @@ 3 - 25 + 29 1 0 0 @@ -555,7 +603,7 @@ 0 4 - 26 + 30 1 0 0 @@ -575,7 +623,7 @@ 0 5 - 27 + 31 1 0 0 @@ -587,7 +635,7 @@ 5 - 28 + 32 1 0 0 @@ -599,7 +647,7 @@ 5 - 29 + 33 5 0 0 @@ -611,7 +659,7 @@ 5 - 30 + 34 5 0 0 @@ -623,7 +671,7 @@ 5 - 31 + 35 5 0 0 diff --git a/MDK-ARM/project.uvprojx b/MDK-ARM/project.uvprojx index ada83f1..966f3c7 100644 --- a/MDK-ARM/project.uvprojx +++ b/MDK-ARM/project.uvprojx @@ -490,6 +490,26 @@ 1 ../Core/Src/stm32f1xx_hal_msp.c + + cmd_parser.c + 1 + ..\Core\Src\cmd_parser.c + + + io_monitor.c + 1 + ..\Core\Src\io_monitor.c + + + relay_control.c + 1 + ..\Core\Src\relay_control.c + + + uart2_print.c + 1 + ..\Core\Src\uart2_print.c + diff --git a/MDK-ARM/project/cmd_parser.crf b/MDK-ARM/project/cmd_parser.crf new file mode 100644 index 0000000..e4e91bb Binary files /dev/null and b/MDK-ARM/project/cmd_parser.crf differ diff --git a/MDK-ARM/project/cmd_parser.d b/MDK-ARM/project/cmd_parser.d new file mode 100644 index 0000000..c72d580 --- /dev/null +++ b/MDK-ARM/project/cmd_parser.d @@ -0,0 +1,12 @@ +project\cmd_parser.o: ..\Core\Src\cmd_parser.c +project\cmd_parser.o: ../Core/Inc/cmd_parser.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\cmd_parser.o: ../Core/Inc/uart2_print.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\cmd_parser.o: ../Core/Inc/io_monitor.h +project\cmd_parser.o: ../Core/Inc/relay_control.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\ctype.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\cmd_parser.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h diff --git a/MDK-ARM/project/cmd_parser.o b/MDK-ARM/project/cmd_parser.o new file mode 100644 index 0000000..b891226 Binary files /dev/null and b/MDK-ARM/project/cmd_parser.o differ diff --git a/MDK-ARM/project/gpio.o b/MDK-ARM/project/gpio.o index 1c862ce..87163d4 100644 Binary files a/MDK-ARM/project/gpio.o and b/MDK-ARM/project/gpio.o differ diff --git a/MDK-ARM/project/io_monitor.crf b/MDK-ARM/project/io_monitor.crf new file mode 100644 index 0000000..6d97bee Binary files /dev/null and b/MDK-ARM/project/io_monitor.crf differ diff --git a/MDK-ARM/project/io_monitor.d b/MDK-ARM/project/io_monitor.d new file mode 100644 index 0000000..6265c28 --- /dev/null +++ b/MDK-ARM/project/io_monitor.d @@ -0,0 +1,35 @@ +project\io_monitor.o: ..\Core\Src\io_monitor.c +project\io_monitor.o: ../Core/Inc/io_monitor.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\io_monitor.o: ../Core/Inc/uart2_print.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\io_monitor.o: ../Core/Inc/main.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\io_monitor.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\io_monitor.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\io_monitor.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\io_monitor.o: ../Drivers/CMSIS/Include/core_cm3.h +project\io_monitor.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\io_monitor.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\io_monitor.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\io_monitor.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\io_monitor.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\io_monitor.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/io_monitor.o b/MDK-ARM/project/io_monitor.o new file mode 100644 index 0000000..303e5bf Binary files /dev/null and b/MDK-ARM/project/io_monitor.o differ diff --git a/MDK-ARM/project/main.crf b/MDK-ARM/project/main.crf index fd499cc..3b6db2f 100644 Binary files a/MDK-ARM/project/main.crf and b/MDK-ARM/project/main.crf differ diff --git a/MDK-ARM/project/main.d b/MDK-ARM/project/main.d index cd66804..01856e0 100644 --- a/MDK-ARM/project/main.d +++ b/MDK-ARM/project/main.d @@ -35,4 +35,9 @@ project\main.o: ../Core/Inc/gpio.h project\main.o: ../Driver_RF433/Inc/rf433.h project\main.o: ../Driver_RF433/Inc/rf433_config.h project\main.o: ../Driver_RF433/Inc/rf433_hal.h -project\main.o: ../Core/Inc/rf433_rx_app.h +project\main.o: ../Core/Inc/uart2_print.h +project\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\main.o: ../Core/Inc/io_monitor.h +project\main.o: ../Core/Inc/cmd_parser.h +project\main.o: ../Core/Inc/relay_control.h +project\main.o: ../Core/Inc/rf433_tx_app.h diff --git a/MDK-ARM/project/main.o b/MDK-ARM/project/main.o index 21ba39a..8a4653e 100644 Binary files a/MDK-ARM/project/main.o and b/MDK-ARM/project/main.o differ diff --git a/MDK-ARM/project/project.axf b/MDK-ARM/project/project.axf index 7629457..d596b33 100644 Binary files a/MDK-ARM/project/project.axf and b/MDK-ARM/project/project.axf differ diff --git a/MDK-ARM/project/project.build_log.htm b/MDK-ARM/project/project.build_log.htm index bae255b..296b5b3 100644 --- a/MDK-ARM/project/project.build_log.htm +++ b/MDK-ARM/project/project.build_log.htm @@ -22,53 +22,57 @@ Dialog DLL: TCM.DLL V1.56.6.0

Project:

C:\workfile\E32-433\software\E32-433TBH-SC\MDK-ARM\project.uvprojx -Project File Date: 03/25/2026 +Project File Date: 03/26/2026

Output:

*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'project' -compiling rf433_tx_app.c... assembling startup_stm32f103xb.s... -compiling spi.c... -compiling systick.c... -compiling main.c... -compiling stm32f1xx_it.c... compiling rf433_rx_app.c... -..\Core\Src\rf433_rx_app.c(23): warning: #188-D: enumerated type mixed with another type - static rf433_rx_app_t g_rx_app = {0}; -..\Core\Src\rf433_rx_app.c: 1 warning, 0 errors -compiling usart.c... +compiling main.c... +compiling spi.c... compiling gpio.c... +compiling cmd_parser.c... +compiling systick.c... +compiling stm32f1xx_it.c... +compiling usart.c... +compiling rf433_tx_app.c... +..\Core\Src\rf433_tx_app.c(28): warning: #188-D: enumerated type mixed with another type + static rf433_tx_app_t g_tx_app = {0}; +..\Core\Src\rf433_tx_app.c: 1 warning, 0 errors compiling stm32f1xx_hal_gpio_ex.c... -compiling stm32f1xx_hal.c... -compiling stm32f1xx_hal_spi.c... -compiling stm32f1xx_hal_rcc.c... +compiling relay_control.c... compiling stm32f1xx_hal_msp.c... -compiling stm32f1xx_hal_rcc_ex.c... -compiling stm32f1xx_hal_gpio.c... -compiling stm32f1xx_hal_flash.c... -compiling stm32f1xx_hal_tim.c... +compiling io_monitor.c... +compiling stm32f1xx_hal.c... +compiling uart2_print.c... +compiling stm32f1xx_hal_spi.c... compiling stm32f1xx_hal_pwr.c... compiling stm32f1xx_hal_cortex.c... +compiling stm32f1xx_hal_gpio.c... +compiling stm32f1xx_hal_rcc.c... +compiling stm32f1xx_hal_flash.c... +compiling stm32f1xx_hal_rcc_ex.c... compiling stm32f1xx_hal_dma.c... -compiling stm32f1xx_hal_exti.c... +compiling stm32f1xx_hal_tim.c... compiling stm32f1xx_hal_flash_ex.c... -compiling stm32f1xx_hal_tim_ex.c... -compiling system_stm32f1xx.c... compiling rf433.c... -..\Driver_RF433\Src\rf433.c(208): warning: #188-D: enumerated type mixed with another type +..\Driver_RF433\Src\rf433.c(209): warning: #188-D: enumerated type mixed with another type ret = rf433_set_config(&rf433_current_config); -..\Driver_RF433\Src\rf433.c(212): warning: #188-D: enumerated type mixed with another type +..\Driver_RF433\Src\rf433.c(213): warning: #188-D: enumerated type mixed with another type return ret; -..\Driver_RF433\Src\rf433.c(98): warning: #177-D: function "rf433_send_request_command" was declared but never referenced +..\Driver_RF433\Src\rf433.c(99): warning: #177-D: function "rf433_send_request_command" was declared but never referenced static void rf433_send_request_command(rf433_request_cmd_t cmd) -..\Driver_RF433\Src\rf433.c(131): warning: #177-D: function "rf433_response_command_check" was declared but never referenced +..\Driver_RF433\Src\rf433.c(132): warning: #177-D: function "rf433_response_command_check" was declared but never referenced static bool rf433_response_command_check(rf433_request_cmd_t cmd, uint8_t *buffer, uint8_t length) ..\Driver_RF433\Src\rf433.c: 4 warnings, 0 errors -compiling rf433_hal.c... +compiling stm32f1xx_hal_exti.c... +compiling system_stm32f1xx.c... +compiling stm32f1xx_hal_tim_ex.c... compiling stm32f1xx_hal_uart.c... +compiling rf433_hal.c... linking... -Program Size: Code=10204 RO-data=408 RW-data=64 ZI-data=3416 +Program Size: Code=16622 RO-data=478 RW-data=152 ZI-data=3768 FromELF: creating hex file... "project\project.axf" - 0 Error(s), 5 Warning(s). @@ -94,7 +98,7 @@ Package Vendor: Keil * Component: ARM::CMSIS:CORE@6.1.1 Include file: CMSIS/Core/Include/tz_context.h -Build Time Elapsed: 00:00:12 +Build Time Elapsed: 00:00:20 diff --git a/MDK-ARM/project/project.hex b/MDK-ARM/project/project.hex index a2b055c..faf6a4d 100644 --- a/MDK-ARM/project/project.hex +++ b/MDK-ARM/project/project.hex @@ -1,8 +1,8 @@ :020000040800F2 -:10000000980D002005010008191D0008151B0008A7 -:10001000151D0008DD060008BD21000800000000D5 -:10002000000000000000000000000000491D000862 -:10003000E1060008000000001D1D00084B1D00081F +:10000000500F002005010008892300083D2000084A +:100010008523000803080008F52B000800000000F5 +:10002000000000000000000000000000492500085A +:10003000890B0008000000008D2300084B250008F4 :100040001F0100081F0100081F0100081F01000810 :100050001F0100081F0100081F0100081F01000800 :100060001F0100081F0100081F0100081F010008F0 @@ -12,660 +12,1071 @@ :1000A0001F0100081F0100081F0100081F010008B0 :1000B0001F0100081F0100081F0100081F010008A0 :1000C0001F0100081F0100081F0100081F01000890 -:1000D0001F0100088D2100089D210008AD210008A6 +:1000D0001F010008C52B0008D52B0008E52B0008E0 :1000E0001F0100081F0100081F010008DFF810D0E1 -:1000F00000F030F90048004741220008AFF30080CB -:10010000980D00200648804706480047FEE7FEE7B6 +:1000F00000F09AFA00480047CD360008AFF30080C0 +:10010000500F00200648804706480047FEE7FEE7FC :10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 -:10012000BD1D0008ED000008D2B201E000F8012B6F -:10013000491EFBD270470022F6E710B513460A4667 -:1001400004461946FFF7F0FF204610BD0FB400B576 -:100150008DB010A909900B9000914FF0FF300A90DC -:1001600000200C9005480690054807906A4609A8AB -:100170000F9900F0C1F80DB05DF814FB15030008ED -:10018000330300082DE9FF5F1D464FF0FF3BD5E923 -:10019000014691465F464FF00008A9697F1C01980F -:1001A0008847296A824688470028F6D1BAF1FF3F7E -:1001B0000CD024F4C064002E19DD600614D5BAF109 -:1001C0002B0F09D0BAF12D0F0ED103E0584604B021 -:1001D000BDE8F09F44F48064A9697F1C01988847BA -:1001E000761E8246002E02DDBAF1300F03D0B9F13F -:1001F000000F26D032E0A969761E44F400747F1CFB -:10020000019888478246002E05DDBAF1780F06D0A6 -:10021000BAF1580F03D0B9F1000F10D01EE0B9F1B8 -:10022000000F02D0B9F1100F18D1A969761E24F47D -:1002300000747F1C019888478246102002E0082045 -:1002400000E00A20814609E008FB0908A969761E3A -:1002500044F400747F1C019888478246002E05DD17 -:100260004946504600F034F80028EDDAE969019873 -:100270008847A00502D46FF00100A8E7E00725D168 -:10028000600613D5600502D5C8F1000000E04046C5 -:1002900029680A1D2A600968220501D5087015E041 -:1002A000220701D5088011E008600FE02868011DD1 -:1002B00029600068210502D580F8008006E021074A -:1002C00002D5A0F8008001E0C0F8008038467EE743 -:1002D0003A2800D2303820F02002412A01D3A2F17E -:1002E0003700884201D34FF0FF3070470268114455 -:1002F0001378016018467047D16004495161044980 -:10030000116200211161114600F03CB8ED020008B5 -:1003100079030008426842B1016811F8013B23B13A -:10032000521EC0E90012184670470121C160881EA4 -:10033000704742685AB1C368016843B983688B4209 -:1003400005D0491E521CC0E90012002070474FF032 -:10035000FF307047064C074D06E0E06840F00103AF -:1003600094E8070098471034AC42F6D3FFF7C2FE7A -:100370005429000874290008C0B24FF4F05100F06D -:1003800099B900002DE9F34F8BB04FF0000801F14F -:100390000C000C464FF0010B46460DF1080A019087 -:1003A0006269012101989047051E2DD0252D2CD082 -:1003B000216A8847C0B16269012101989047216A8A -:1003C00088470028F7D1411E62690198904700E0F4 -:1003D000761CA1690B988847216A88470028F7D1C5 -:1003E000E1690B988847DBE7A1690B9888470746C6 -:1003F000A84201D1761CD3E7E1690B9888477F1C9E -:1004000002D1B8F1000F6FD047E1002762693D4685 -:100410003946019890472A2804D162690121019840 -:1004200090470125DFF88892626901210198904781 -:10043000A0F130010A290AD24F45E5DC07EB87011C -:1004400000EB4107303FDFD445F01005ECE7E9064B -:1004500001D46FF000476C280AD04C2814D06828CB -:1004600015D06A280DD074281CD07A281AD01DE027 -:1004700062690121019890476C2802D045F004057B -:1004800014E045F002050DE045F020050AE0626940 -:10049000012101989047682802D045F0080505E041 -:1004A00045F400656269012101989047C4E901574C -:1004B00065283DD019DC58287AD00CDC452837D087 -:1004C00004DC252826D0412831D131E046282FD020 -:1004D00047282CD12CE05B2877D0612828D06328CE -:1004E0007CD0642823D15AE0D1E06F2848D008DCC2 -:1004F00066281DD067281BD0692821D06E2816D108 -:1005000027E0702845D0732868D0752847D0782810 -:100510000DD14DE0A1690B988847054625283FF489 -:1005200069AFE1690B9888476D1C3FF46AAFB4E08E -:1005300023466A466FF001000B99AFF300809FE0FD -:1005400045F040006060A80723464FF0000236D413 -:100550003EE0E8077FF447AF2068011D2160006896 -:10056000290501D506701BE7290701D5068017E785 -:10057000A90703D5F117C0E9006111E706600FE78D -:1005800045F040006060A80723464FF0080216D4EB -:100590001EE040F60E0125EA0100606016E045F01D -:1005A00040006060A80723464FF00A0207D40FE01E -:1005B00045F040006060A80708D5234610226FF080 -:1005C00001000B99AFF300805AE007E023461022A8 -:1005D0006FF001000B99FFF7D5FD51E04FF00009D6 -:1005E0004F464B46632802D05B2807D041E0207974 -:1005F000C00601D40120A06001273AE06269012110 -:10060000019890475E2805D14FF00109626949467B -:1006100001989047216939B900210A46534643F8A9 -:100620002120491C0829FADBB0B3216969B9C11737 -:1006300000EBD16253110AEB830122F01F02821AF0 -:1006400001200B68904003430B606269012101980F -:1006500090475D28E8D1B9F1000F09D0002051463C -:1006600051F82020D24341F82020401C0828F7DB15 -:1006700002AB224600976FF001000B99AFF30080A8 -:1006800000280CDA401C08D1BBF1000F05D04FF058 -:10069000FF300DB0BDE8F08FFFE74046F9E7E9070E -:1006A00001D108F1010806444FF0000B78E6000084 -:1006B000CCCCCC0C7F2801D9002208E0064A02EB02 -:1006C0005002C007127800D1120902F00F02012077 -:1006D00090400840704700001329000800BFFEE763 -:1006E000704772B600BFFEE70146002291F8210074 -:1006F000022808D00420886300BF002081F8200071 -:1007000000BF012070470868006820F00E000B68E9 -:1007100018600868006820F001000B68186091F804 -:10072000403001209840CB6B5860012081F82100B7 -:1007300000BF002081F8200000BF1046E2E7000063 -:1007400070B50446002594F82100022803D0042047 -:10075000A063012548E02068006820F00E002168B1 -:1007600008602068006820F00100216808601F49C7 -:100770002068884201D1012026E01C4914312068FC -:10078000884201D110201FE0184928312068884292 -:1007900001D1801518E015493C312068884201D10B -:1007A000801411E0114950312068884202D14FF481 -:1007B000803009E00D4964312068884202D14FF44D -:1007C000801001E04FF0807008490839486001202E -:1007D00084F8210000BF002084F8200000BF606B77 -:1007E00010B12046616B8847284670BD0800024062 -:1007F00070B5044600F0AEF906462546681C10B1F7 -:1008000004480078054400BF00F0A4F9801BA8420A -:10081000FAD370BD0C0000202DE9F84703460022F2 -:1008200094466EE14FF0010808FA02F4D1F8008016 -:1008300008EA0400A0427DD1DFF8DCA2D1F80480F0 -:10084000A8EB0A09D0453AD014DCB8F1030F50D018 -:1008500009DCB8F1000F31D0B8F1010F1CD0B8F1AC -:10086000020F49D120E0B8F1110F18D0B8F1120FE2 -:1008700042D11EE0B9F5881F25D006DCB9F5803FCE -:1008800020D0B9F5801F37D11AE0B9F5001F18D074 -:10089000B9F5041F30D117E0D1F80CC02DE0D1F824 -:1008A0000C8008F1040C28E0D1F80C8008F1080C49 -:1008B00023E0D1F80C8008F10C0C1EE000BF00BF53 -:1008C00000BF00BF00BF00BFD1F80880B8F1000F23 -:1008D00002D14FF0040C0BE0D1F80880B8F1010F01 -:1008E00003D14FF0080C1C6102E04FF0080C5C6172 -:1008F00003E04FF0000C00E000BF00BFFF2801D86C -:10090000984601E003F104084646FF2802D84FEA62 -:10091000820803E0A2F108084FEA88084746D6F8A3 -:1009200000804FF00F0909FA07F928EA09080CFAC4 -:1009300007F900E088E048EA0908C6F80080D1F825 -:10094000048008F08058B8F1805F7DD100BFDFF8E7 -:10095000CC81D8F8188048F00108DFF8C091C9F8B8 -:100960001880C846D8F8188008F00108CDF8008033 -:1009700000BF00BF4FEAB9384FEA920958F8295032 -:100980004FEA82784FEA18794FF00F0808FA09F811 -:1009900025EA0805DFF88881434502D14FF00008B9 -:1009A00016E0DFF88081434502D14FF001080FE0E7 -:1009B000DFF87481434502D14FF0020808E0DFF808 -:1009C0006C81434502D14FF0030801E04FF0040869 -:1009D0004FEA82794FEA197908FA09F848EA0505D9 -:1009E000DFF84C814FEA920948F82950D1F8048089 -:1009F00008F48018B8F5801F0AD1DFF83881D8F8DC -:100A0000008048EA0008DFF82C91C9F8008009E06E -:100A1000DFF82081D8F8008028EA0008DFF8149178 -:100A2000C9F80080D1F8048008F40018B8F5001F58 -:100A300010D1DFF8008108F10408D8F8008048EAF6 -:100A40000008DFF8F09000E05AE009F10409C9F865 -:100A500000800DE0DFF8DC8008F10408D8F80080A1 -:100A600028EA0008DFF8CC9009F10409C9F80080F1 -:100A7000D1F8048008F40038B8F5003F0ED1DFF853 -:100A8000B480A8F10408D8F8008048EA0008DFF82C -:100A9000A490A9F10409C9F800800DE0DFF8948062 -:100AA000A8F10408D8F8008028EA0008DFF884904C -:100AB000A9F10409C9F80080D1F8048008F480384D -:100AC000B8F5803F0ED1DFF86C80A8F10808D8F89F -:100AD000008048EA0008DFF85C90A9F10809C9F82D -:100AE00000800DE0DFF84C80A8F10808D8F80080FD -:100AF00028EA0008DFF83C90A9F10809C9F800804D -:100B0000521CD1F8008028FA02F8B8F1000F7FF4E7 -:100B100089AEBDE8F8870000000011100010024007 -:100B200000080140000C0140001001400014014089 -:100B30000800014008040140024693680B400BB1D5 -:100B4000012000E0002070470AB1016101E00B04C0 -:100B500003617047014800687047000004000020EE -:100B60000348006803490978084401490860704750 -:100B7000040000200C00002010B50848006840F078 -:100B8000100006490860032000F0A8F80F2000F0CC -:100B900007F800F02BF8002010BD000000200240F4 -:100BA00070B504460E4800784FF47A71B1FBF0F04E -:100BB0000C490968B1FBF0F5284600F09DFC08B12E -:100BC000012070BD102C07D200222146501E00F0DB -:100BD00047F80548046001E00120F2E70020F0E753 -:100BE0000C000020100000200800002008B500BF05 -:100BF0001148806940F001000F498861084680690A -:100C000000F00100009000BF00BF00BF0846C069AF -:100C100040F08050C8610846C06900F080500090E4 -:100C200000BF00BF00BF0549486820F0E06040F009 -:100C30000070486000BF08BD001002400000014085 -:100C400001460846002809DB00F01F0301229A40F4 -:100C500043099B0003F1E023C3F8002100BF704764 -:100C60002DE9F05F80460D461646002701F0A8FAF0 -:100C7000074639462A46334601F00700C0F1070A05 -:100C8000BAF1040F02D94FF0040A01E0C0F1070ADB -:100C9000D14600F1040ABAF1070F02D24FF0000A60 -:100CA00001E0A0F1030AD4464FF0010A0AFA09FA5A -:100CB000AAF1010A0AEA020A0AFA0CFA4FF0010B39 -:100CC0000BFA0CFBABF1010B0BEA030B4AEA0B042A -:100CD0002146404601F07CFABDE8F09F00BF00F0DD -:100CE0000702064B19684FF6FF031940044B0B43EC -:100CF00043EA0221014B196000BF70470CED00E090 -:100D00000000FA0570B504460D460CB9012070BD0F -:100D10005A48006800F00700A8420ED25748006801 -:100D200020F007002843554908600846006800F095 -:100D30000700A84201D00120E9E7207800F0020076 -:100D400002281DD1207800F00400042805D14C4869 -:100D5000406840F4E0604A494860207800F00800AC -:100D6000082805D14648406840F46050444948602E -:100D70004348406820F0F000A168084340494860BB -:100D8000207800F0010078B36068012806D13C4863 -:100D9000006800F4003090B90120B8E760680228CC -:100DA00006D13748006800F0007040B90120AEE776 -:100DB0003348006800F0020008B90120A7E7304876 -:100DC000406820F00300616808432D494860FFF740 -:100DD000C1FE064609E0FFF7BDFE801B41F28831E7 -:100DE000884202D9032092E707E02548406800F0D6 -:100DF0000C006168B0EB810FEDD12048006800F075 -:100E00000700A8420ED91D48006820F007002843BB -:100E10001A4908600846006800F00700A84201D09F -:100E2000012074E7207800F00400042807D114485A -:100E3000406820F4E060E168084311494860207888 -:100E400000F00800082808D10D48406820F46050E0 -:100E5000216940EAC1000A49486000F03FF80849AA -:100E60004968C1F30311074A515CC840064908604C -:100E700006480068FFF794FE002048E70020024083 -:100E800000100240DA2800081000002008000020AE -:100E900001480068704700001000002000B5FFF70F -:100EA000F7FF04494968C1F30221034A515CC84075 -:100EB00000BD000000100240EA28000800B5FFF75E -:100EC000E7FF04494968C1F3C221034A515CC840A5 -:100ED00000BD000000100240EA28000870B50021A3 -:100EE0000022002400230020134D696801F00C0546 -:100EF000F5B1042D02D0082D19D101E00F4819E0F9 -:100F00000F4DC1F38346AB5D01F4803555B10A4DF9 -:100F10006D68C5F340450B4E725D084D5D43B5FBF2 -:100F2000F2F402E0084D03FB05F4204602E000BFA6 -:100F3000024800BF00BF70BD0010024000127A00DE -:100F4000C8280008D828000800093D00F8B5044664 -:100F50000CB90120F8BD207800F00100002878D0FD -:100F6000F848406800F00C0004280CD0F5484068B0 -:100F700000F00C00082811D1F248406800F48030DD -:100F8000B0F5803F0AD1EF48006800F40030002837 -:100F90005FD0606800285CD10120DBE700BF60689B -:100FA000B0F5803F06D1E748006840F48030E5495D -:100FB000086028E0606858B9E248006820F4803092 -:100FC000E04908600846006820F4802008601AE0C4 -:100FD0006068B0F5A02F0BD1DA48006840F480209B -:100FE000D84908600846006840F4803008600AE08C -:100FF000D448006820F48030D24908600846006870 -:1010000020F48020086000BF606888B1FFF7A2FD6F -:10101000054606E0FFF79EFD401B642801D903202A -:1010200098E7C848006800F400300028F2D010E0CB -:10103000FFF790FD054606E0FFF78CFD401B642896 -:1010400001D9032086E7BF48006800F4003000287B -:10105000F2D1207800F00200022857D1B948406848 -:1010600000F00C0050B1B748406800F00C000828B0 -:1010700018D1B448406800F4803098B9B14800688D -:1010800000F0020020B12069012801D0012061E7B1 -:10109000AC48006820F0F800616940EAC100A94945 -:1010A000086033E02069E8B10120A7490860FFF734 -:1010B00051FD054606E0FFF74DFD401B022801D912 -:1010C000032047E79F48006800F002000028F2D0A4 -:1010D0009C48006820F0F800616940EAC100994925 -:1010E000086013E0002098490860FFF733FD0546CB -:1010F00006E0FFF72FFD401B022801D9032029E756 -:101100009048006800F002000028F2D1207800F03A -:10111000080008282DD1A069B8B101208B490860CA -:10112000FFF718FD054606E0FFF714FD401B0228F7 -:1011300001D903200EE78348406A00F0020000282E -:10114000F2D0012000F0ECFD13E000207F490860A0 -:10115000FFF700FD054606E0FFF7FCFC401B0228F8 -:1011600001D90320F6E67748406A00F00200002823 -:10117000F2D1207800F00400042873D100277148D0 -:10118000C06900F0805070B900BF6E48C06940F07F -:1011900080506C49C8610846C06900F080500090DA -:1011A00000BF00BF01276A48006800F48070B0B932 -:1011B0006748006840F4807065490860FFF7CAFC22 -:1011C000054606E0FFF7C6FC401B642801D9032052 -:1011D000C0E65F48006800F480700028F2D000BFCD -:1011E000E068012806D15748006A40F001005549DF -:1011F000086227E0E06858B95248006A20F0010010 -:10120000504908620846006A20F00400086219E0AC -:10121000E06805280BD14B48006A40F004004949BA -:1012200008620846006A40F0010008620AE045488A -:10123000006A20F00100434908620846006A20F075 -:101240000400086200BFE068A0B1FFF783FC054618 -:1012500009E0FFF77FFC401B41F28831884202D948 -:10126000032077E622E03748006A00F002000028F9 -:10127000EFD012E0FFF76EFC054608E0FFF76AFCCE -:10128000401B41F28831884201D9032062E62D4893 -:10129000006A00F002000028F0D1012F05D1294892 -:1012A000C06920F080502749C86100BFE069C8B319 -:1012B0002448406800F00C00082860D0E06902284B -:1012C00048D1002020490866FFF744FC054606E0A7 -:1012D000FFF740FC401B022801D903203AE61948D9 -:1012E000006800F000700028F2D1206AB0F5803F5D -:1012F00007D11448406820F40030A1680843114920 -:101300004860D4E9080108430E49496821F4741182 -:1013100008430C49486001200B490866FFF71AFC96 -:10132000054607E03DE0FFF715FC401B022801D908 -:1013300003200FE60348006800F000700028F2D098 -:101340002FE00000001002400000424280044242B0 -:1013500000700040002014490866FFF7FBFB0546BB -:1013600006E0FFF7F7FB401B022801D90320F1E557 -:101370000E48006800F000700028F2D111E0E0692A -:10138000012800D1E6E50948466806F48031206A64 -:10139000814204D106F47011606A814201D00120BB -:1013A000D8E50020D6E500000000424200100240CF -:1013B00010B504460CB9012010BD606A38B96068E8 -:1013C000B0F5827F00D105E00021E16102E000215B -:1013D000216161610021A16294F8510028B90020C7 -:1013E00084F85000204600F043F8022084F85100B1 -:1013F0002068006820F0400021680860A08800F4A0 -:101400008270218901F404410843A18901F400613B -:101410000843217C01F002010843217D01F0010114 -:101420000843218B01F400710843217F01F038014A -:1014300008432021095D01F080010843218D01F45A -:1014400000510843216808600421A06901EA1040A6 -:10145000216848602068C06920F400602168C86184 -:1014600000206065012084F851000020A4E70000FE -:1014700010B586B0044600200290039004900590B9 -:101480001A49206888422FD100BF1948C06940F42A -:1014900080401749C8610846C06900F48040019047 -:1014A00000BF00BF00BF0846806940F008008861A7 -:1014B0000846806900F00800019000BF00BF4FF4AB -:1014C00020400290022003900320059002A90948C1 -:1014D000FFF7A2F94FF4804002900020039004909F -:1014E00002A90448FFF798F906B010BD0038004083 -:1014F00000100240000C014070B504462546681EED -:10150000B0F1807F01D301200FE0681E4FF0E02191 -:1015100048610F214FF0FF3000F05AFE00204FF0DD -:10152000E021886107200861002070BD7047704786 -:101530002DE9F84F0446206805682068C6682068D1 -:1015400047694FF00009CA4605F00F09B9F1000FCD -:101550000AD105F0200038B106F0200020B1204665 -:1015600000F07DFCBDE8F88FB9F1000F7BD007F0EB -:10157000010018B906F49070002874D005F001003D -:1015800030B106F4807018B1606C40F00100606406 -:1015900005F0040030B107F0010018B1606C40F0B4 -:1015A0000200606405F0020030B107F0010018B1DC -:1015B000606C40F00400606405F0080048B106F07B -:1015C000200010B907F0010018B1606C40F008006D -:1015D0006064606C002845D005F0200028B106F05A -:1015E000200010B1204600F03AFC20684069C0F3AA -:1015F000801A606C00F0080010B9BAF1000F2CD00E -:10160000204600F0E6FB2068406900F0400000B38F -:1016100000BF00BF2168143151E8001F21F04000D5 -:101620002168143141E80002002AF3D100BFE06BC9 -:1016300050B17748E16B4863E06BFFF781F888B100 -:10164000E06B416B88470DE02046FFF770FF09E033 -:1016500009E02046FFF76BFF04E02046FFF767FF35 -:10166000002060647EE7206B012877D105F0100030 -:10167000002873D006F010000028FAD000BF002028 -:10168000009020680068009020684068009000BFCB -:1016900000BF2068406900F0400000285FD0E06B88 -:1016A000006840681FFA80F8B8F1000F55D0A08D8F -:1016B000404552DDA4F82E80E06B8069202843D09D -:1016C00000BF00BF21680C3151E8001F21F4807079 -:1016D00021680C3141E80002002AF3D100BF00BFAD -:1016E00000BF2168143151E8001F21F0010021687A -:1016F000143141E80002002AF3D100BF00BF00BF4F -:101700002168143151E8001F21F040002168143194 -:1017100041E80002002AF3D100BF202084F84200F3 -:101720000020206300BF00BF21680C3151E8001F7A -:1017300021F0100021680C3141E80002002AF3D1A9 -:1017400000BFE06BFEF7D0FF02206063A08DE28D4A -:10175000801A81B22046FFF7E9FE03E742E0A08D40 -:10176000E18D401A1FFA80F8E08DD0B3B8F1000F78 -:1017700037D000BF00BF21680C3151E8001F21F4B1 -:10178000907021680C3141E80002002AF3D100BFBB -:1017900000BF00BF2168143151E8001F21F0010093 -:1017A0002168143141E80002002AF3D100BF202053 -:1017B00084F842000020206300BF00BF21680C3184 -:1017C00051E8001F21F0100021680C3141E80002AF -:1017D000002AF3D100BF0220606341462046FFF794 -:1017E000A5FEBFE605F0800030B106F0800018B11C -:1017F000204600F051FCB5E605F0400030B106F09F -:10180000400018B1204600F01AFBABE600BFA9E685 -:10181000BF1D000810B504460CB9012010BDA06919 -:1018200000B100E000BF94F8410028B9002084F81E -:101830004000204600F02AF8242084F84100206867 -:10184000C06820F400502168C860204600F086FB84 -:101850002068006920F49040216808612068406990 -:1018600020F02A00216848612068C06840F40050D8 -:101870002168C86000206064202084F8410084F85A -:1018800042000020606300BFC8E7000010B586B0CA -:101890000446002002900390049005905949206866 -:1018A000884237D100BF5848806940F4804056498B -:1018B00088610846806900F48040019000BF00BF45 -:1018C00000BF0846806940F00400886108468069CE -:1018D00000F00400019000BF00BF481502900220F4 -:1018E00003900320059002A94848FEF795FF4FF4A6 -:1018F0008060029000200390049002A94348FEF704 -:101900008BFF002211462520FFF7AAF92520FFF7BB -:1019100097F975E03E492068884236D100BF3A48C1 -:10192000C06940F400303849C8610846C06900F415 -:101930000030019000BF00BF00BF0846806940F042 -:10194000040088610846806900F00400019000BF2F -:1019500000BF04200290022003900320059002A9FA -:101960002A48FEF759FF08200290002003900490B7 -:1019700002A92648FEF750FF002201212620FFF78A -:101980006FF92620FFF75CF93AE022492068884287 -:1019900036D100BF1C48C06940F480201A49C86194 -:1019A0000846C06900F48020019000BF00BF00BF5E -:1019B0000846806940F0080088610846806900F0A8 -:1019C0000800019000BF00BF08150290022003909C -:1019D0000320059002A91048FEF71EFF4FF4006097 -:1019E000029000200390049002A90B48FEF714FF18 -:1019F000002202212720FFF733F92720FFF720F9E3 -:101A000006B010BD0038014000100240000801403F -:101A10000044004000480040000C014070B50446FE -:101A20000D46164694F8420020280BD105B10EB998 -:101A3000012070BD0020206332462946204600F078 -:101A40000BFBF6E70220F4E710B5044603492068D3 -:101A5000884201D100F05CFD10BD0000003801405B -:101A60002DE9F84F04460E46174699464FF0000AF6 -:101A700094F8410020284AD106B117B90120BDE8E9 -:101A8000F88F00206064212084F84100FFF762F89D -:101A90008246A784E784A068B0F5805F04D12069FE -:101AA00010B90025B04602E035464FF000081BE0B3 -:101AB0005346002280212046CDF8009000F01CFB08 -:101AC00008B10320DBE745B9B8F80000C0F308000F -:101AD0002168486008F1020803E02878216848601E -:101AE0006D1CE08C401EE084E08C0028E0D1534661 -:101AF000002240212046CDF8009000F0FDFA08B108 -:101B00000320BCE7202084F841000020B7E7022032 -:101B1000B5E7704700BFFEE700B585B00020019033 -:101B200002900390049000BF3C48806940F0100090 -:101B30003A4988610846806900F01000009000BFB3 -:101B400000BF00BF0846806940F020008861084659 -:101B5000806900F02000009000BF00BF00BF084671 -:101B6000806940F0040088610846806900F0040044 -:101B7000009000BF00BF00BF0846806940F0080029 -:101B800088610846806900F00800009000BF00BF2F -:101B9000012280212248FEF7D7FF0122052121489A -:101BA000FEF7D2FF002241F208211E48FEF7CCFFCB -:101BB00000224FF401411A48FEF7C6FF48F2801098 -:101BC000019001200290002003900220049001A9BE -:101BD0001348FEF721FE41F20D20019001200290F2 -:101BE000002003900220049001A90E48FEF714FE85 -:101BF00002200190002002900120039001A90948D1 -:101C0000FEF70AFEF020019000200290039001A947 -:101C10000448FEF701FE05B000BD000000100240C0 -:101C200000080140000C014010B50E480E49086044 -:101C30004FF48270486000210B488160C1600161EF -:101C400041614FF4007181610021C1610162416213 -:101C500081620A21C162FFF7ABFB08B1FEF741FDCB -:101C600010BD0000003800406800002010B50B488F -:101C70000B4908604FF41650486000210848816005 -:101C8000C16001610C21416100218161C161FFF7E7 -:101C9000C1FD08B1FEF725FD10BD00000038014070 -:101CA000C000002010B50B480B4908604FF4E1302C -:101CB0004860002108488160C16001610C214161D8 -:101CC00000218161C161FFF7A5FD08B1FEF709FDA3 -:101CD00010BD0000004400400801002010B50B4872 -:101CE0000B4908604FF41650486000210848816095 -:101CF000C16001610C21416100218161C161FFF777 -:101D000089FD08B1FEF7EDFC10BD00000048004061 -:101D10005001002000BFFEE700BFFEE77047000053 -:101D200008B508490968C9084FF47A72B1FBF2F1A5 -:101D30004143009100BF00BF00994A1E0092002954 -:101D4000F9D108BD10000020704710B500F082FDE9 -:101D5000FEF706FF10BD00B58FB0282105A8FEF7DD -:101D6000EAF914216846FEF7E6F90120059000041F -:101D70000690002007900120099002200C90C103DA -:101D80000D914FF4E0110E9105A8FFF7DFF808B1AF -:101D9000FEF7A7FC0F200090022001900020029087 -:101DA0004FF4806003900020049002216846FEF703 -:101DB000A9FF08B1FEF795FC0FB000BD704770B5E4 -:101DC00005466C6A0020E085E0842046FFF7AFFB03 -:101DD00070BD00BF00BF02680C3252E8002F22F431 -:101DE000907102680C3242E80013002BF3D100BF5F -:101DF00000BF00BF0268143252E8002F22F0010138 -:101E00000268143242E80013002BF3D100BF016BCB -:101E100001290ED100BF00BF02680C3252E8002F2A -:101E200022F0100102680C3242E80013002BF3D1BB -:101E300000BF202180F8421000210163704710B5D7 -:101E400004462068C06820F040002168C860202057 -:101E500084F841002046FFF75CFE002010BDF8B575 -:101E6000044694F84200222875D1A068B0F5805F3E -:101E70000CD1206950B90025A66A20684068C0F3DB -:101E800008003080A06A801CA06215E0A56A0026C8 -:101E9000A068B0F5805F03D0A06828B9206918B9A0 -:101EA00020684068287004E02068406800F07F00E7 -:101EB0002870A06A401CA062E08D401E80B2E085C0 -:101EC000002846D12068C06820F020002168C86042 -:101ED0002068C06820F480702168C860206840696C -:101EE00020F0010021684861202084F84200002091 -:101EF0006063206B012826D10020206300BF00BF53 -:101F000021680C3151E8001F21F0100021680C31CC -:101F100041E80002002AF3D100BF2068006800F009 -:101F2000100010280AD100BF00200090206800682F -:101F3000009020684068009000BF00BFA18D20463F -:101F4000FFF7F4FA02E02046FFF77EFD0020F8BD1F -:101F500001E00020FBE70220F9E7000070B504462D -:101F60002168096921F44051E26811432268116136 -:101F70002269A1681143626941EA02052168C968C2 -:101F800041F20C62914329432268D160216849697A -:101F900021F44071A2691143226851612D4A2168E0 -:101FA000914202D1FEF78AFF01E0FEF777FF00EBD6 -:101FB000C00101EB001162689200B1FBF2F100EB8D -:101FC000C00202EB001263689B00B2FBF3F26423D1 -:101FD000B2FBF3F202EBC20303EB0212A1EB8201AC -:101FE000322202EB01116422B1FBF2F101F0F001A7 -:101FF00000EBC00202EB001263689B00B2FBF3F23D -:102000006423B2FBF3F201EB021200EBC00101EB1F -:10201000001163689B00B1FBF3F100EBC00303EB1D -:1020200000136668B600B3FBF6F36426B3FBF6F361 -:1020300003EBC30606EB0313A1EB8301322303EB8F -:1020400001116423B1FBF3F101F00F011144226887 -:10205000916070BD0038014010B5034699629A85C1 -:10206000DA8500205864222083F84200186928B1DC -:102070001868C06840F480701C68E06018684069A7 -:1020800040F001001C6860611868C06840F02000E2 -:102090001C68E060002010BD014691F84100212835 -:1020A00028D18868B0F5805F0BD1086948B90A6A01 -:1020B0001088C0F308000B685860086A801C08622A -:1020C00005E00B6A581C086218780B685860C88CC9 -:1020D000401E80B2C88458B90868C06820F08000EB -:1020E0000B68D8600868C06840F040000B68D86092 -:1020F000002070470220FCE72DE9F04104460D4620 -:1021000017469846069E34E0701C88B32EB1FEF741 -:1021100021FDA0EB0800B0422BD900BF00BF216811 -:102120000C3151E8001F21F4D07021680C3141E8D6 -:102130000002002AF3D100BF00BF00BF21681431A4 -:1021400051E8001F21F001002168143141E800022C -:10215000002AF3D100BF202084F8410084F8420017 -:1021600000BF002084F8400000BF0320BDE8F081DC -:10217000FFE7206800682840A84201D1012000E064 -:102180000020B842C0D00020F0E7000010B502489F -:10219000FFF7CEF910BD0000C000002010B50248C6 -:1021A000FFF7C6F910BD00000801002010B5024875 -:1021B000FFF7BEF910BD00005001002000BFFEE790 -:1021C00002480068C0F30220704700000CED00E0F8 -:1021D00010B5002804DB0A07130E054A135406E065 -:1021E0000A07140E034A00F00F031B1FD45410BD3E -:1021F00000E400E018ED00E002E008C8121F08C18A -:10220000002AFAD170477047002001E001C1121F77 -:10221000002AFBD17047000010B5002208210248B7 -:10222000FEF792FC10BD0000000C014010B5012229 -:1022300008210248FEF788FC10BD0000000C014098 -:10224000FEF79AFCFFF787FDFFF766FCFFF70EFD30 -:10225000FFF7EAFCFFF726FDFFF740FD002000F046 -:1022600089F9012207490848FFF7D8FB002000F050 -:10227000B1F900F0FFF904E000F00CFA0120FEF7DC -:10228000B7FAF9E734000020C0000020002003491D -:10229000086003490860034908607047280000206F -:1022A0002C00002030000020014611B96FF0020020 -:1022B00070470248006808800020F9E730000020DD -:1022C00030B503460C460BB104B112B96FF00200F1 -:1022D00030BD1448006818B900201080401EF7E790 -:1022E00000201080002115E00F48104D2D68405D42 -:1022F00058540E480068401CC0F309000B4D28607C -:1023000008480068401E074D28601088401C108057 -:10231000481C81B2A14203DA024800680028E3D1D8 -:102320000020D5E730000020980500202C00002078 -:1023300030B502460B4602B113B96FF0020030BD52 -:1023400000211AE00F480068B0F5806F02D34FF00B -:10235000FF30F4E7505C0C4C0C4D2D6860550B4879 -:102360000068401CC0F30900084C20600548006864 -:10237000401C044C2060481C81B29942E2DB0020E2 -:10238000DDE7000030000020980500202800002034 -:102390000748006850B106480068401E04490860BC -:1023A0000846006810B90120024908707047000013 -:1023B000380000203C00002010B502210D48FEF737 -:1023C000BBFBA0B9FEF7C6FB044607E0FEF7C2FB65 -:1023D000001B642802D36FF0010010BD02210548E4 -:1023E000FEF7AAFB0028F1D00220FEF701FA002038 -:1023F000F3E70000000C01400548007810B94FF0E9 -:10240000FF30704700200249087000BFF9E7000064 -:102410002400002010B5FFF739FF10BD10B50446A9 -:102420002046FFF741FF10BD70B504460D46164625 -:10243000324629462046FFF743FF70BD0848007822 -:1024400010B14FF0FF307047002006490860064980 -:102450000860064908600120014908700020F2E781 -:1024600024000020280000202C0000203000002044 -:1024700070B50546FFF7A0FF04460CB1204670BDBD -:1024800035B1012D0FD0022D18D0032D2CD120E015 -:10249000002280211C48FEF757FB002201211B4827 -:1024A000FEF752FB23E0012280211748FEF74CFB88 -:1024B000002201211548FEF747FB18E00022802189 -:1024C0001148FEF741FB012211461048FEF73CFB84 -:1024D0000DE0012280210C48FEF736FB0122114657 -:1024E0000A48FEF731FB02E06FF00200C7E700BFC9 -:1024F0000520FEF77DF9FFF75FFF04460CB120468B -:10250000BDE70020BBE7000000080140000C0140CF -:1025100008B5094800684068C0B2009001216846CB -:10252000FFF706FF0A200549086001220449024816 -:10253000FFF774FA08BD0000C0000020380000203A -:102540003400002070B504460D4604B115B96FF093 -:10255000020070BD4FF6FF732A4621460448FFF77C -:102560007FFA064616B16FF00100F2E70020F0E7AF -:10257000C000002070B505461348007810B14FF038 -:10258000FF3070BDFFF75AFF044614B14FF0FF3023 -:10259000F7E735B90D480E490A68026009790171FB -:1025A00004E00A482968016029790171074800F0B0 -:1025B000F1F804461CB1FFF71FFF2046E1E70120B8 -:1025C000014908700020DCE71400002015000020FD -:1025D000F228000870B5054615B94FF0FF3070BD00 -:1025E00028210F48FDF7A7FD00200D49087081F84C -:1025F0002500084629680162297980F824102030D6 -:1026000000F0C8F804460CB12046E8E7002000F0CE -:10261000EDF804460CB12046E1E70020DFE70000BA -:10262000400000202DE9F04104460D4616461F46A5 -:1026300014B10DB106B11FB94FF0FF30BDE8F08104 -:102640000A2D02DA4FF0FF30F8E72078542802D143 -:102650006078582802D04FF0FF30EFE73B46324613 -:1026600002A1E01CFDF772FD0020E7E725642E259E -:10267000642E000010B500F05DF804460CB1204651 -:1026800010BD01200249087081F825000020F7E7FD -:102690004000002010B594B0254890F8250008B9F6 -:1026A00014B010BD2248007820B1012806D00228BD -:1026B00036D134E001201E49087035E00020039037 -:1026C00003A904A800F0D4F840B3002002900190C0 -:1026D000039881B201AB02AA04A8FFF7A3FF044646 -:1026E000DCB913484068401C114948600298886171 -:1026F000019848610846C0690199884202D20C4994 -:102700000198C86100F088F8012000F07BF83220C1 -:10271000FEF76EF8002000F075F800BF04E003E05B -:1027200002200349087000BF00BF00BFB8E70000E7 -:102730004000002010B50C48007810B96FF005007B -:1027400010BD0A48007810B16FF00100F8E7FFF7FC -:1027500061FE044614B14FF0FF30F1E70120034958 -:1027600008700020ECE70000140000201A00002090 -:1027700010B50446C0200649087008462168C0F814 -:102780000110217941710621FFF7DCFE10BD000028 -:102790009801002070B5054615B96FF0030070BDB3 -:1027A000FFF70AFE044614B16FF00200F7E70320BA -:1027B000FFF75EFE044614B16FF00200EFE7284613 -:1027C000FFF7D6FF6420FEF713F80020FFF750FE56 -:1027D000044614B16FF00200E1E703482968016084 -:1027E000297901710020DAE71500002070B5044650 -:1027F0002046FFF73DFE054615B16FF0020070BDA3 -:102800000020FCE710B5044614B1FFF70FFD01E00E -:10281000FFF702FD10BD00000D48C069B8B10C48BB -:10282000C0690B494968411A0948C160C06958B17B -:102830000748C068642148430549C969B0FBF1F005 -:10284000C1B20348017402E00021014801747047DD -:102850004000002010B500F033F80448006820B1B3 -:1028600002480068401E0149086010BD00000020B9 -:10287000F8B506460D4606B10DB90020F8BD0F4863 -:10288000007808B90020F9E76846FFF7C7FD04465D -:102890000CB10020F2E7BDF8000008B90020EDE718 -:1028A0002A46FF213046FFF7BFFD04460CB1002049 -:1028B000E4E70020014908700120DFE73C00002028 -:1028C00000B5FFF765FD00BD020304050607080912 -:1028D0000A0B0C0D0E0F101001020000000000008A -:1028E00000000102030406070809000000000102BD -:1028F000030400001A1704C1C1C141542B444556BA -:10290000545950453D3F0041542B4657434F444591 -:102910003D3F00DDDDDDDDDCBBBBDDDDDDDDDDDD47 -:10292000DDDDDD988888888888888877777777776D -:1029300088888885555556666666666666666666E4 -:1029400068888883333332222222222222222222C2 -:1029500028888D0074290008000000204000000035 -:10296000F8210008B429000840000020580D00009C -:102970000822000800000000000000001000000015 -:10298000010000000024F40000000000000000002E -:102990000000000000000000000000000000000037 -:1029A0000000000000000000000000000000000027 -:0429B0000000000023 +:10012000BD250008ED000008202A04DB203A21FA52 +:1001300002F00021704721FA02F3D040C2F1200200 +:10014000914008431946704700487047A84200088C +:10015000D2B201E000F8012B491EFBD27047002209 +:10016000F6E710B513460A4604461946FFF7F0FFB6 +:10017000204610BD421C10F8011B0029FBD1801A3B +:10018000704710B5002200E0521C835C8C5CA342D7 +:1001900001D1002BF8D1D8B2E1B2401A10BD70B530 +:1001A000064602F089FD046805460A220021304611 +:1001B00000F049F82C6070BD30B50B4601460020B8 +:1001C0002022012409E021FA02F59D4205D303FA19 +:1001D00002F5491B04FA02F52844151EA2F101029A +:1001E000F1DC30BD2DE9F05F0546002092469B46CC +:1001F00088460646814640241BE02846414647463D +:100200002246FFF791FF53465A46C01A914110D338 +:1002100011461846224600F019FA2D1A67EB01081C +:100220004F4622460120002100F010FA17EB00098A +:100230004E41201EA4F10104DFDC484631462A4627 +:100240004346BDE8F09F2DE9F04791460F468046B2 +:100250000446002614F8015B2DB1FFF775FF006816 +:10026000405DC007F6D12B2D02D02D2D18D0641E75 +:100270004A463946204600F00AFA27B13968A142B9 +:1002800001D1C7F8008071054FF002040BD5404240 +:10029000002803DD02F010FD0460A007BDE8F08730 +:1002A00046F48066E4E70028F8DA02F005FD046011 +:1002B0006FF00040F2E72DE9FE4F804681EA03002F +:1002C000C00F0C46009021F0004123F00045B8EB30 +:1002D0000200A94105D24046214690461C460B46E5 +:1002E000024623F00040104347D0270DC7F30A0011 +:1002F000C3F30A510290401A019040286BDAC3F30D +:10030000130040F4801B0098924620B10023D2EBEA +:10031000030A63EB0B0B01985946C0F140025046AB +:1003200000F094F906460D4650465946019A00F0F1 +:100330009CF910EB08006141002487EA115284EA1D +:10034000E7731A4340D0009A62B3019A012A4FEA38 +:10035000075215DC001B61EB02014FF0004202EA7C +:100360000752CDE90042001C41F5801132462B4670 +:1003700000F0EBF903B0BDE8F08F40462146F9E705 +:10038000001B61EB0201001C41F5801300185B416A +:100390002018A2F5001747EB030140EAD570B61903 +:1003A0006D4111E06D084FEA360645EAC0754FEA27 +:1003B0000752001B61EB0201001C41F58011490846 +:1003C0004FEA30000019514132462B4603B0BDE8D8 +:1003D000F04F00F0ABB90098012240000023D0EBB1 +:1003E000020263EBE073009821464FEAE074B8EB39 +:1003F000000061EB0401E9E783F000435BE781F073 +:10040000004158E72DE9FE4F81EA030404F000445F +:1004100021F0004100944FF0000B23F0004350EA1C +:1004200001045ED052EA03045BD0C3F30A54C1F363 +:100430000A552C44A4F2F3340194A0FB0254C1F3F6 +:10044000130141F48011C3F3130343F4801301FB40 +:10045000024400FB034E840A970A44EA815447EAA7 +:100460008357A4FB076802958D0A05FB07854FEAB1 +:10047000932C04FB0C542705029D4FEA065847EACB +:100480001637B5EB08056EEB070C870E920E47EAA0 +:10049000811742EA8312A7FB0201B6EB0B0164EB62 +:1004A00000042B0D43EA0C335E1844EB1C50DA4673 +:1004B0005146E7FB0201C5F313044FEA0B3343EA4D +:1004C00014534FEA0432019C43EA0603A4F10C04DE +:1004D0000294009CCDE900B400F037F903B0BDE808 +:1004E000F08F00200146F9E72DE9F04D81EA030481 +:1004F00004F0004B21F0004514464FF0000A23F0B1 +:10050000004150EA050220D054EA01021DD0C5F393 +:100510000A570246C5F31303C1F31300C1F30A5689 +:1005200040F4801543F48013A7EB0608101BD64651 +:1005300008F2FD3873EB050002D308F1010801E071 +:1005400092185B41B8F1000F03DA00200146BDE8C4 +:10055000F08D00204FF48011064684460EE0171BF4 +:1005600073EB050705D3121B63EB050306434CEA47 +:10057000010C49084FEA300092185B4150EA01072C +:10058000EDD152EA030012D082EA040083EA0501A9 +:10059000084305D0101BAB4106D20122002306E020 +:1005A00000224FF0004302E06FF0010253101AEBFB +:1005B00006004CEB085110EB0A0041EB0B01BDE8C3 +:1005C000F04D00F0B3B8C1F30A52C1F3130140F289 +:1005D000FF3341F480119A4202DA0020014670474D +:1005E00040F233439A42A2F2334202DC5242FFF716 +:1005F0009BBD00F02BB8000030B5041E71F1000463 +:1006000004DB4FF00044404264EB0101141E73F11F +:10061000000405DB1C464FF00043524263EB040329 +:10062000994208BF904230BD064C074D06E0E06895 +:1006300040F0010394E8070098471034AC42F6D329 +:10064000FFF758FDAC420008CC420008202A04DB2A +:10065000203A00FA02F1002070479140C2F12003D5 +:1006600020FA03F3194390407047202A06DBCB178A +:10067000203A41FA02F043EAE07306E041FA02F35D +:10068000D040C2F1200291400843194670472DE93D +:10069000F05F82460078002715468B460AF1010478 +:1006A000B946302801D09DB113E014F8010B0127A1 +:1006B000782803D0582801D045B10AE00DB1102D9B +:1006C00007D10027102514F8010B02E0082500E0EF +:1006D0000A250026B0460EE005FB080005FB06F1E2 +:1006E000012701EB10461FFA80F8B6F5803F00D3D2 +:1006F000B94614F8010B294600F075F80028EBDA2A +:10070000BBF1000F05D00FB1641E00E05446CBF8DA +:100710000040B9F1000F06D002F0CEFA02210160CC +:10072000C81EBDE8F09F48EA0640FAE710B5141E5F +:1007300073F1000408DA401C41F1000192185B419A +:100740001A4301D120F0010010BD2DE9F04D924671 +:100750009B4611B1B1FA81F202E0B0FA80F2203288 +:100760009046FFF773FF04460F4640EA0A0041EA4D +:100770000B0153465A46084313D0114653EA010071 +:1007800019D0C8F140025046FFF7CEFC05460E4690 +:10079000504659464246FFF759FF084305D001200D +:1007A00004E020463946BDE8F08D0020054346EAC6 +:1007B000E0762C4337430A986305E40AA0EB08006F +:1007C0000022FD0A44EA47540A3002D500200146BF +:1007D000E9E7010510196941DDE90845001969419A +:1007E000BDE8F04DA2E73A2800D2303820F02002D0 +:1007F000412A01D3A2F13700884201D34FF0FF30E4 +:10080000704700BFFEE7000070B504460D46B548CE +:100810000078C8B1B3480078052815D0B148406DBC +:10082000281AB0F57A7F0FD3AE48806D401CAD49D1 +:100830008865ADA001F0ECFE03F094F9242C02D100 +:100840000120A849087070BDA648456500780628B3 +:100850000BD2DFE800F0030B57A4E2F9242C04D1FB +:1008600003F080F901209F49087037E12C2C0CD14E +:1008700000219C4890F84D20401C81540220994949 +:100880000870002081F84D003BE02A2C0ED1002199 +:10089000944890F84D20401C8154042091490870E0 +:1008A000002081F84D0081F851002AE0204602F036 +:1008B000E6FEF8B18B4890F84D00072812DA894817 +:1008C00090F84D1090F84D00401C864A82F84D007B +:1008D000501C4454401E90F84E006040114681F870 +:1008E0004E000EE07F48806D401C7E49886503F015 +:1008F00039F906E07B48806D401C7A49886503F031 +:1009000031F9EBE02C2C0CD10021764890F84D20E9 +:1009100009308154032073490870002081F84D008C +:100920003CE02A2C0ED100216E4890F84D20093071 +:10093000815404206B490870002081F84D0081F833 +:1009400051002BE0204602F0ADFE00B3654890F860 +:100950004D001F2813DA634890F84D1090F84D00B1 +:10096000401C604A82F84D0002F1090044540938E5 +:1009700090F84E006040114681F84E000EE0594854 +:10098000806D401C5749886503F0ECF806E0554837 +:10099000806D401C5349886503F0E4F89EE02A2CE2 +:1009A0000ED100214F4890F84D2029308154042069 +:1009B0004C490870002081F84D0081F851002BE06F +:1009C000204602F06FFE00B3464890F84D001F2805 +:1009D00013DA444890F84D1090F84D00401C414AFD +:1009E00082F84D0002F129004454293890F84E0055 +:1009F0006040114681F84E000EE03A48806D401C80 +:100A00003849886503F0AEF806E03648806D401C32 +:100A10003449886503F0A6F860E00A2C42D1314AD7 +:100A200092F8501092F84F0002F0FBFD2D4981F82A +:100A30004900084690F84E1080F84A1090F8490096 +:100A4000FF2802D1012101E040E00021254880F883 +:100A50004C1090F84C0030B9224890F8491090F8AA +:100A60004A0081420BD101211E4880F84B1005201D +:100A70001C4908700846C06D401CC86525E019482F +:100A8000806D401C17498865084690F84A2090F808 +:100A900049101DA001F0BCFD26A003F011FB03F0DE +:100AA00061F812E00D2C10D00E4890F85100022889 +:100AB0000BDA0C4890F8511090F85100401C094A8C +:100AC00082F8510002F14F00445407E003F04AF865 +:100AD000242C02D101200349087000BF00BF00BFD1 +:100AE000B1E60000E40100205B434D445D20546901 +:100AF0006D656F75742C20726573657420706172FA +:100B00007365720D0A0000005B434D445D2043682D +:100B100065636B73756D206572726F723A207265D2 +:100B200063763D253032582063616C633D25303259 +:100B3000580D0A004353000010B560210448FFF728 +:100B40000EFB00200249087002A001F061FD10BDFB +:100B5000E40100205B434D445D20496E6974204FE1 +:100B60004B0D0A0010B507480078052809D1054843 +:100B700090F84B0028B10348401C02F047FE02F0F9 +:100B8000F1FF10BDE4010020704772B600BFFEE720 +:100B90000146002291F82100022808D00420886331 +:100BA00000BF002081F8200000BF012070470868C6 +:100BB000006820F00E000B6818600868006820F0DC +:100BC00001000B68186091F8403001209840CB6B11 +:100BD0005860012081F8210000BF002081F820002A +:100BE00000BF1046E2E7000070B50446002594F807 +:100BF0002100022803D00420A063012548E02068DA +:100C0000006820F00E00216808602068006820F06D +:100C10000100216808601F492068884201D1012035 +:100C200026E01C4914312068884201D110201FE0C1 +:100C3000184928312068884201D1801518E01549EB +:100C40003C312068884201D1801411E011495031B3 +:100C50002068884202D14FF4803009E00D496431A8 +:100C60002068884202D14FF4801001E04FF080707C +:100C7000084908394860012084F8210000BF00209D +:100C800084F8200000BF606B10B12046616B88477C +:100C9000284670BD0800024070B5044600F0AEF969 +:100CA00006462546681C10B104480078054400BF7C +:100CB00000F0A4F9801BA842FAD370BD64000020A4 +:100CC0002DE9F8470346002294466EE14FF00108F3 +:100CD00008FA02F4D1F8008008EA0400A0427DD1AD +:100CE000DFF8DCA2D1F80480A8EB0A09D0453AD09D +:100CF00014DCB8F1030F50D009DCB8F1000F31D08B +:100D0000B8F1010F1CD0B8F1020F49D120E0B8F1C1 +:100D1000110F18D0B8F1120F42D11EE0B9F5881F9B +:100D200025D006DCB9F5803F20D0B9F5801F37D13A +:100D30001AE0B9F5001F18D0B9F5041F30D117E03B +:100D4000D1F80CC02DE0D1F80C8008F1040C28E09B +:100D5000D1F80C8008F1080C23E0D1F80C8008F1E0 +:100D60000C0C1EE000BF00BF00BF00BF00BF00BFF3 +:100D7000D1F80880B8F1000F02D14FF0040C0BE05D +:100D8000D1F80880B8F1010F03D14FF0080C1C61B5 +:100D900002E04FF0080C5C6103E04FF0000C00E053 +:100DA00000BF00BFFF2801D8984601E003F1040806 +:100DB0004646FF2802D84FEA820803E0A2F108085D +:100DC0004FEA88084746D6F800804FF00F0909FA25 +:100DD00007F928EA09080CFA07F900E088E048EA70 +:100DE0000908C6F80080D1F8048008F08058B8F1EE +:100DF000805F7DD100BFDFF8CC81D8F8188048F043 +:100E00000108DFF8C091C9F81880C846D8F81880E2 +:100E100008F00108CDF8008000BF00BF4FEAB938E4 +:100E20004FEA920958F829504FEA82784FEA187928 +:100E30004FF00F0808FA09F825EA0805DFF888815D +:100E4000434502D14FF0000816E0DFF880814345AA +:100E500002D14FF001080FE0DFF87481434502D161 +:100E60004FF0020808E0DFF86C81434502D14FF0F3 +:100E7000030801E04FF004084FEA82794FEA19793C +:100E800008FA09F848EA0505DFF84C814FEA9209AB +:100E900048F82950D1F8048008F48018B8F5801F6C +:100EA0000AD1DFF83881D8F8008048EA0008DFF876 +:100EB0002C91C9F8008009E0DFF82081D8F8008083 +:100EC00028EA0008DFF81491C9F80080D1F80480FE +:100ED00008F40018B8F5001F10D1DFF8008108F100 +:100EE0000408D8F8008048EA0008DFF8F09000E035 +:100EF0005AE009F10409C9F800800DE0DFF8DC8050 +:100F000008F10408D8F8008028EA0008DFF8CC903F +:100F100009F10409C9F80080D1F8048008F4003808 +:100F2000B8F5003F0ED1DFF8B480A8F10408D8F876 +:100F3000008048EA0008DFF8A490A9F10409C9F884 +:100F400000800DE0DFF89480A8F10408D8F8008054 +:100F500028EA0008DFF88490A9F10409C9F80080A4 +:100F6000D1F8048008F48038B8F5803F0ED1DFF85E +:100F70006C80A8F10808D8F8008048EA0008DFF87B +:100F80005C90A9F10809C9F800800DE0DFF84C80F9 +:100F9000A8F10808D8F8008028EA0008DFF83C909B +:100FA000A9F10809C9F80080521CD1F8008028FA7C +:100FB00002F8B8F1000F7FF489AEBDE8F8870000B1 +:100FC000000011100010024000080140000C014018 +:100FD00000100140001401400800014008040140D5 +:100FE000024693680B400BB1012000E000207047DF +:100FF0000AB1016101E00B04036170470148006818 +:10100000704700005C00002003480068034909782D +:1010100008440149086070475C000020640000201B +:1010200010B50848006840F0100006490860032029 +:1010300000F0A8F80F2000F007F800F02BF80020CF +:1010400010BD00000020024070B504460E48007834 +:101050004FF47A71B1FBF0F00C490968B1FBF0F57F +:10106000284600F09DFC08B1012070BD102C07D26D +:1010700000222146501E00F047F80548046001E0B8 +:101080000120F2E70020F0E7640000206800002063 +:101090006000002008B500BF1148806940F00100E1 +:1010A0000F4988610846806900F00100009000BF88 +:1010B00000BF00BF0846C06940F08050C8610846C4 +:1010C000C06900F08050009000BF00BF00BF05491C +:1010D000486820F0E06040F00070486000BF08BD44 +:1010E000001002400000014001460846002809DBCC +:1010F00000F01F0301229A4043099B0003F1E02303 +:10110000C3F8002100BF70472DE9F05F80460D460F +:101110001646002701F0B4FD074639462A463346F5 +:1011200001F00700C0F1070ABAF1040F02D94FF02D +:10113000040A01E0C0F1070AD14600F1040ABAF13D +:10114000070F02D24FF0000A01E0A0F1030AD446D3 +:101150004FF0010A0AFA09FAAAF1010A0AEA020A98 +:101160000AFA0CFA4FF0010B0BFA0CFBABF1010B76 +:101170000BEA030B4AEA0B042146404601F088FDC6 +:10118000BDE8F09F00BF00F00702064B19684FF65C +:10119000FF031940044B0B4343EA0221014B196042 +:1011A00000BF70470CED00E00000FA0570B5044682 +:1011B0000D460CB9012070BD5A48006800F00700C8 +:1011C000A8420ED25748006820F00700284355492E +:1011D00008600846006800F00700A84201D001201E +:1011E000E9E7207800F0020002281DD1207800F005 +:1011F0000400042805D14C48406840F4E0604A49A6 +:101200004860207800F00800082805D1464840686A +:1012100040F46050444948604348406820F0F00082 +:10122000A168084340494860207800F0010078B385 +:101230006068012806D13C48006800F4003090B98D +:101240000120B8E76068022806D13748006800F03E +:10125000007040B90120AEE73348006800F002009A +:1012600008B90120A7E73048406820F00300616812 +:1012700008432D494860FFF7C1FE064609E0FFF725 +:10128000BDFE801B41F28831884202D9032092E7DB +:1012900007E02548406800F00C006168B0EB810F62 +:1012A000EDD12048006800F00700A8420ED91D4883 +:1012B000006820F0070028431A49086008460068C3 +:1012C00000F00700A84201D0012074E7207800F068 +:1012D0000400042807D11448406820F4E060E16865 +:1012E000084311494860207800F00800082808D118 +:1012F0000D48406820F46050216940EAC1000A4965 +:10130000486000F03FF808494968C1F30311074AF3 +:10131000515CC8400649086006480068FFF794FE23 +:10132000002048E70020024000100240EC41000885 +:10133000680000206000002001480068704700003D +:101340006800002000B5FFF7F7FF04494968C1F3C2 +:101350000221034A515CC84000BD00000010024059 +:10136000FC41000800B5FFF7E7FF04494968C1F3F5 +:10137000C221034A515CC84000BD00000010024079 +:10138000FC41000870B50021002200240023002049 +:10139000134D696801F00C05F5B1042D02D0082D3C +:1013A00019D101E00F4819E00F4DC1F38346AB5D41 +:1013B00001F4803555B10A4D6D68C5F340450B4EBB +:1013C000725D084D5D43B5FBF2F402E0084D03FB8E +:1013D00005F4204602E000BF024800BF00BF70BD18 +:1013E0000010024000127A00DA410008EA410008C9 +:1013F00000093D00F8B504460CB90120F8BD20787D +:1014000000F00100002878D0F848406800F00C0097 +:1014100004280CD0F548406800F00C00082811D1D1 +:10142000F248406800F48030B0F5803F0AD1EF48C0 +:10143000006800F4003000285FD0606800285CD1AC +:101440000120DBE700BF6068B0F5803F06D1E748C8 +:10145000006840F48030E549086028E0606858B9C9 +:10146000E248006820F48030E049086008460068DF +:1014700020F4802008601AE06068B0F5A02F0BD13E +:10148000DA48006840F48020D849086008460068BF +:1014900040F4803008600AE0D448006820F48030CE +:1014A000D24908600846006820F48020086000BF28 +:1014B000606888B1FFF7A2FD054606E0FFF79EFDD4 +:1014C000401B642801D9032098E7C848006800F44D +:1014D00000300028F2D010E0FFF790FD054606E04E +:1014E000FFF78CFD401B642801D9032086E7BF4825 +:1014F000006800F400300028F2D1207800F00200EB +:10150000022857D1B948406800F00C0050B1B748E4 +:10151000406800F00C00082818D1B448406800F476 +:10152000803098B9B148006800F0020020B120690D +:10153000012801D0012061E7AC48006820F0F800E4 +:10154000616940EAC100A949086033E02069E8B157 +:101550000120A7490860FFF751FD054606E0FFF7A7 +:101560004DFD401B022801D9032047E79F48006832 +:1015700000F002000028F2D09C48006820F0F8003B +:10158000616940EAC1009949086013E00020984968 +:101590000860FFF733FD054606E0FFF72FFD401B0F +:1015A000022801D9032029E79048006800F00200D2 +:1015B0000028F2D1207800F0080008282DD1A06979 +:1015C000B8B101208B490860FFF718FD054606E019 +:1015D000FFF714FD401B022801D903200EE78348C2 +:1015E000406A00F002000028F2D0012000F0D0FE96 +:1015F00013E000207F490860FFF700FD054606E084 +:10160000FFF7FCFC401B022801D90320F6E67748CF +:10161000406A00F002000028F2D1207800F00400B7 +:10162000042873D100277148C06900F0805070B958 +:1016300000BF6E48C06940F080506C49C8610846E0 +:10164000C06900F08050009000BF00BF01276A48C9 +:10165000006800F48070B0B96748006840F480709A +:1016600065490860FFF7CAFC054606E0FFF7C6FCBF +:10167000401B642801D90320C0E65F48006800F4DD +:1016800080700028F2D000BFE068012806D15748DA +:10169000006A40F001005549086227E0E06858B947 +:1016A0005248006A20F00100504908620846006A6A +:1016B00020F00400086219E0E06805280BD14B48CF +:1016C000006A40F00400494908620846006A40F098 +:1016D000010008620AE04548006A20F00100434921 +:1016E00008620846006A20F00400086200BFE06853 +:1016F000A0B1FFF783FC054609E0FFF77FFC401B24 +:1017000041F28831884202D9032077E622E0374847 +:10171000006A00F002000028EFD012E0FFF76EFC34 +:10172000054608E0FFF76AFC401B41F28831884219 +:1017300001D9032062E62D48006A00F0020000286B +:10174000F0D1012F05D12948C06920F080502749E8 +:10175000C86100BFE069C8B32448406800F00C00CD +:10176000082860D0E069022848D100202049086696 +:10177000FFF744FC054606E0FFF740FC401B02284B +:1017800001D903203AE61948006800F000700028EB +:10179000F2D1206AB0F5803F07D11448406820F4A8 +:1017A0000030A168084311494860D4E908010843A2 +:1017B0000E49496821F4741108430C49486001201E +:1017C0000B490866FFF71AFC054607E03DE0FFF706 +:1017D00015FC401B022801D903200FE603480068CE +:1017E00000F000700028F2D02FE00000001002404E +:1017F0000000424280044242007000400020144930 +:101800000866FFF7FBFB054606E0FFF7F7FB401B0A +:10181000022801D90320F1E50E48006800F00070AD +:101820000028F2D111E0E069012800D1E6E509487D +:10183000466806F48031206A814204D106F47011B2 +:10184000606A814201D00120D8E50020D6E5000081 +:10185000000042420010024010B504460CB90120BD +:1018600010BD606A38B96068B0F5827F00D105E0CC +:101870000021E16102E00021216161610021A1629A +:1018800094F8510028B9002084F85000204600F058 +:1018900043F8022084F851002068006820F04000DE +:1018A00021680860A08800F48270218901F4044155 +:1018B0000843A18901F400610843217C01F0020181 +:1018C0000843217D01F001010843218B01F40071DF +:1018D0000843217F01F0380108432021095D01F010 +:1018E00080010843218D01F40051084321680860FC +:1018F0000421A06901EA1040216848602068C0699D +:1019000020F400602168C86100206065012084F82F +:1019100051000020A4E7000010B586B00446002066 +:1019200002900390049005901A49206888422FD1B4 +:1019300000BF1948C06940F480401749C861084693 +:10194000C06900F48040019000BF00BF00BF08469E +:10195000806940F0080088610846806900F008004E +:10196000019000BF00BF4FF420400290022003907E +:101970000320059002A90948FFF7A2F94FF480401F +:10198000029000200390049002A90448FFF798F900 +:1019900006B010BD0038004000100240000C0140AD +:1019A00070B504462546681EB0F1807F01D3012042 +:1019B0000FE0681E4FF0E02148610F214FF0FF302B +:1019C00001F066F900204FF0E021886107200861EE +:1019D000002070BD704770472DE9F84F044620681D +:1019E00005682068C668206847694FF00009CA4644 +:1019F00005F00F09B9F1000F0AD105F0200038B148 +:101A000006F0200020B1204600F046FFBDE8F88F28 +:101A1000B9F1000F7BD007F0010018B906F49070FF +:101A2000002874D005F0010030B106F4807018B1C0 +:101A3000606C40F00100606405F0040030B107F014 +:101A4000010018B1606C40F00200606405F0020013 +:101A500030B107F0010018B1606C40F00400606420 +:101A600005F0080048B106F0200010B907F00100A9 +:101A700018B1606C40F008006064606C002845D0CC +:101A800005F0200028B106F0200010B1204600F03B +:101A900003FF20684069C0F3801A606C00F0080002 +:101AA00010B9BAF1000F2CD0204600F0AFFE20682C +:101AB000406900F0400000B300BF00BF216814314E +:101AC00051E8001F21F040002168143141E8000274 +:101AD000002AF3D100BFE06B50B17748E16B486357 +:101AE000E06BFFF781F888B1E06B416B88470DE050 +:101AF0002046FFF770FF09E009E02046FFF76BFF83 +:101B000004E02046FFF767FF002060647EE7206B5B +:101B1000012877D105F01000002873D006F01000DE +:101B20000028FAD000BF00200090206800680090D4 +:101B300020684068009000BF00BF2068406900F046 +:101B4000400000285FD0E06B006840681FFA80F812 +:101B5000B8F1000F55D0A08D404552DDA4F82E807D +:101B6000E06B8069202843D000BF00BF21680C31A2 +:101B700051E8001F21F4807021680C3141E8000217 +:101B8000002AF3D100BF00BF00BF2168143151E823 +:101B9000001F21F001002168143141E80002002AF1 +:101BA000F3D100BF00BF00BF2168143151E8001F0E +:101BB00021F040002168143141E80002002AF3D1ED +:101BC00000BF202084F842000020206300BF00BF37 +:101BD00021680C3151E8001F21F0100021680C3100 +:101BE00041E80002002AF3D100BFE06BFEF7D0FF0E +:101BF00002206063A08DE28D801A81B22046FFF73B +:101C0000E9FE03E742E0A08DE18D401A1FFA80F85B +:101C1000E08DD0B3B8F1000F37D000BF00BF21680E +:101C20000C3151E8001F21F4907021680C3141E81B +:101C30000002002AF3D100BF00BF00BF21681431A9 +:101C400051E8001F21F001002168143141E8000231 +:101C5000002AF3D100BF202084F842000020206336 +:101C600000BF00BF21680C3151E8001F21F01000B7 +:101C700021680C3141E80002002AF3D100BF0220A4 +:101C8000606341462046FFF7A5FEBFE605F08000F1 +:101C900030B106F0800018B1204600F019FFB5E61B +:101CA00005F0400030B106F0400018B1204600F0C9 +:101CB000E3FDABE600BFA9E6F927000810B504462E +:101CC0000CB9012010BDA06900B100E000BF94F87C +:101CD000410028B9002084F84000204600F02AF88E +:101CE000242084F841002068C06820F40050216856 +:101CF000C860204600F04EFE2068006920F4904045 +:101D0000216808612068406920F02A002168486144 +:101D10002068C06840F400502168C86000206064FA +:101D2000202084F8410084F842000020606300BF56 +:101D3000C8E7000010B586B004460020029003906A +:101D40000490059059492068884237D100BF58480F +:101D5000806940F48040564988610846806900F4F3 +:101D60008040019000BF00BF00BF0846806940F07E +:101D7000040088610846806900F00400019000BFFB +:101D800000BF48150290022003900320059002A98D +:101D90004848FEF795FF4FF48060029000200390C2 +:101DA000049002A94348FEF78BFF0022114625202C +:101DB000FFF7AAF92520FFF797F975E03E4920685B +:101DC000884236D100BF3A48C06940F400303849F3 +:101DD000C8610846C06900F40030019000BF00BF30 +:101DE00000BF0846806940F00400886108468069A9 +:101DF00000F00400019000BF00BF04200290022008 +:101E000003900320059002A92A48FEF759FF0820F5 +:101E1000029000200390049002A92648FEF750FF8C +:101E2000002201212620FFF76FF92620FFF75CF939 +:101E30003AE022492068884236D100BF1C48C06978 +:101E400040F480201A49C8610846C06900F4802027 +:101E5000019000BF00BF00BF0846806940F0080045 +:101E600088610846806900F00800019000BF00BF4B +:101E700008150290022003900320059002A9104843 +:101E8000FEF71EFF4FF400600290002003900490C4 +:101E900002A90B48FEF714FF002202212720FFF7BA +:101EA00033F92720FFF720F906B010BD00380140B4 +:101EB000001002400008014000440040004800407B +:101EC000000C014070B504460D46164694F84200D9 +:101ED00020280BD105B10EB9012070BD0020206370 +:101EE00032462946204600F0D3FDF6E70220F4E70B +:101EF00070B504460C492068884202D101F020FFE9 +:101F000010E00A49206888420CD1FFF777F80546AF +:101F1000294607480078FEF777FC01220449054866 +:101F2000FFF7D0FF70BD00000038014000440040C2 +:101F300004000020540100202DE9F84F04460E460D +:101F4000174699464FF0000A94F8410020284AD1DC +:101F500006B117B90120BDE8F88F00206064212088 +:101F600084F84100FFF74AF88246A784E784A06816 +:101F7000B0F5805F04D1206910B90025B04602E0B9 +:101F800035464FF000081BE05346002280212046D2 +:101F9000CDF8009000F0CCFD08B10320DBE745B997 +:101FA000B8F80000C0F308002168486008F1020892 +:101FB00003E02878216848606D1CE08C401EE084B6 +:101FC000E08C0028E0D15346002240212046CDF885 +:101FD000009000F0ADFD08B10320BCE7202084F89C +:101FE00041000020B7E70220B5E710B5034693F89B +:101FF0004100202813D101B10AB9012010BD196296 +:102000009A84DA8400205864212083F841001868FB +:10201000C06840F080001C68E0600020EEE702200D +:10202000ECE7000010B5044603492068884201D15E +:1020300000F0ACFB10BD00000044004000BFFEE714 +:102040000021002009E0074A02EB001292791AB140 +:10205000012282400A43D1B2401C0428F3DB084627 +:1020600070470000080000200146042901DB002021 +:102070007047024800EB01108079F9E70800002062 +:1020800070B5002512E0114800EB0514A188206806 +:10209000FEF7A6FF08B1012000E00020A071A079A2 +:1020A00020720120E0710020E0606D1C042DEADB4D +:1020B000002007490860012006490870FFF7C0FFAB +:1020C0000446214604A000F0A3FA70BD08000020D9 +:1020D000480000204C0000205B494F5D20496E699C +:1020E00074204F4B2C20696E697469616C20737485 +:1020F000617465733A203078253032580D0A00003B +:102100002DE9F041FEF77AFF07461C480068381AAF +:102110000A2801D2BDE8F08118480760002628E0AF +:10212000174800EB0614A1882068FEF759FF08B194 +:10213000012000E000200546207AA84203D00020BC +:10214000E071257214E0E079032803DAE079401C9D +:10215000E0710DE0A079A8420AD0A571E068401CAA +:10216000E0600848007818B1F0B2294601F060FF3D +:10217000761C042ED4DB00BFCCE700004800002012 +:10218000080000204C00002000B585B00020019020 +:1021900002900390049000BF3C48806940F010001A +:1021A0003A4988610846806900F01000009000BF3D +:1021B00000BF00BF0846806940F0200088610846E3 +:1021C000806900F02000009000BF00BF00BF0846FB +:1021D000806940F0040088610846806900F00400CE +:1021E000009000BF00BF00BF0846806940F00800B3 +:1021F00088610846806900F00800009000BF00BFB9 +:10220000012280212248FEF7F3FE01220521214808 +:10221000FEF7EEFE002241F208211E48FEF7E8FE1E +:1022200000224FF401411A48FEF7E2FE48F2801006 +:10223000019001200290002003900220049001A947 +:102240001348FEF73DFD41F20D2001900120029060 +:10225000002003900220049001A90E48FEF730FDF3 +:1022600002200190002002900120039001A909485A +:10227000FEF726FDF020019000200290039001A9B6 +:102280000448FEF71DFD05B000BD0000001002402F +:1022900000080140000C014010B50E480E490860CE +:1022A0004FF48270486000210B488160C160016179 +:1022B00041614FF4007181610021C161016241629D +:1022C00081620A21C162FFF7C7FA08B1FEF75DFC1F +:1022D00010BD000000380040B400002010B50B48CD +:1022E0000B4908604FF4165048600021084881608F +:1022F000C16001610C21416100218161C161FFF771 +:10230000DDFC08B1FEF741FC10BD000000380140C3 +:102310000C01002010B50B480B4908604FF4E13068 +:102320004860002108488160C16001610C21416161 +:1023300000218161C161FFF7C1FC08B1FEF725FCF6 +:1023400010BD0000004400405401002010B50B48AF +:102350000B4908604FF4165048600021084881601E +:10236000C16001610C21416100218161C161FFF700 +:10237000A5FC08B1FEF709FC10BD000000480040B4 +:102380009C01002000BFFEE700BFFEE77047000091 +:1023900008B508490968C9084FF47A72B1FBF2F12F +:1023A0004143009100BF00BF00994A1E00920029DE +:1023B000F9D108BD6800002010B500224FF400419B +:1023C0000948FEF715FE002003E00021074A1154DA +:1023D000401C0428F9DB0020054908600549086015 +:1023E00005A000F015F910BD0008014050000020C4 +:1023F00054000020580000205B52454C41595D209C +:10240000496E6974204F4B2C2073746174653D4F85 +:1024100046460D0A000000002DE9F04104460D4635 +:10242000012C01DB042C05DD21461EA000F0F0F894 +:10243000BDE8F081FEF7E2FD064622480068301A4A +:10244000642803D220A000F0E3F8F1E7601EC7B2D1 +:102450002648C05DA84208D10DB125A000E025A006 +:10246000014625A000F0D4F8E2E7012C04D12A4669 +:10247000E1032948FEF7BCFD1C48C555114806601C +:1024800026480068401C254908600DB118A000E0EE +:1024900018A0024621482146036821A000F0B8F8A0 +:1024A00000BFC5E75B52454C41595D20496E7661DE +:1024B0006C69642072656C61792049443A20256416 +:1024C0000D0A0000540000205B52454C41595D202C +:1024D000546F67676C6520746F6F20666173742C2E +:1024E0002069676E6F7265640D0A0000500000205D +:1024F0004F4E00004F4646005B52454C41595D200F +:10250000537461746520756E6368616E6765643AC3 +:102510002025730D0A00000000080140580000202B +:102520005B52454C41595D2052656C6179202564B0 +:10253000202D3E2025732028636F756E743D256C19 +:1025400075290D0A00000000704710B501F006FE65 +:10255000FEF75AFD10BD00B58FB0282105A8FDF784 +:10256000FEFD14216846FDF7FAFD012005900004E8 +:102570000690002007900120099002200C90C103D2 +:102580000D914FF4E0110E9105A8FEF733FF08B14D +:10259000FEF7FBFA0F20009002200190002002902D +:1025A0004FF4806003900020049002216846FEF7FB +:1025B000FDFD08B1FEF7E9FA0FB000BD704700005D +:1025C00010B500200849A1F80001A1F80201A1F806 +:1025D000040181F80601A1F808014FF4807103A0FD +:1025E00000F016F810BD0000440200205B55415277 +:1025F00054325D20496E6974204F4B2C2062756601 +:102600006665722073697A653A2025640D0A0000B8 +:102610000FB410B5A2B0249818B922B010BC5DF860 +:1026200014FB25A80190802102A8019B249A00F0A8 +:102630000DFB044600200190002C06DB802C00DB03 +:102640007F24A1B202A800F003F800BFE5E7000074 +:10265000F8B504460D4605B104B9F8BD00260027BB +:1026600072B6002029E02549B1F80411FF2907DDE1 +:102670002249B1F80811491C204AA2F808111EE0AD +:10268000215C1E4AB2F800211C4B99541A46B2F83C +:102690000021511CCA1701EB12621212A1EB022297 +:1026A000A3F800211946B1F80411491C1A46A2F8F2 +:1026B0000411711C8EB2411C88B2A842D3DB00BF4A +:1026C000002E08DD0D4890F8060120B901200B49C5 +:1026D00081F80601012762B66FB172B60748B0F8FB +:1026E00002010649085C009062B60122694604486E +:1026F000FFF77BFC00BF00BFAFE7000044020020F3 +:102700005401002070B5044604B970BD2046FDF7A1 +:1027100031FD85B229462046FFF79AFF00BFF4E756 +:1027200038B572B6174890F8060118B91548B0F8D0 +:10273000040108B962B638BD1248B0F8024101463A +:10274000B1F80211481CC11700EB11610912A0EB8E +:1027500001210C4AA2F802111046B0F80401401EF3 +:102760001146A1F80401012081F806010846005D28 +:10277000009062B6012269460348FFF736FC00BFAD +:10278000D9E70000440200205401002038B500259C +:1027900072B60020164981F806010846B0F8040117 +:1027A00000281CDD0846B0F80241B1F80211481CAF +:1027B000C11700EB11610912A0EB01210C4AA2F82C +:1027C00002111046B0F80401401E1146A1F80401A0 +:1027D000012081F806010846005D0090012562B6DF +:1027E00025B1012269460348FFF7FFFB38BD000011 +:1027F000440200205401002070B505466C6A002098 +:10280000E085E0842046FFF7E6F870BD00BF00BF1A +:1028100002680C3252E8002F22F4907102680C32E8 +:1028200042E80013002BF3D100BF00BF00BF0268D5 +:10283000143252E8002F22F001010268143242E8FB +:102840000013002BF3D100BF016B01290ED100BF93 +:1028500000BF02680C3252E8002F22F0100102681B +:102860000C3242E80013002BF3D100BF202180F886 +:10287000421000210163704710B504462068C0680B +:1028800020F040002168C860202084F841002046E4 +:10289000FFF7C8FB002010BDF8B5044694F84200CD +:1028A000222875D1A068B0F5805F0CD1206950B99D +:1028B0000025A66A20684068C0F308003080A06A3E +:1028C000801CA06215E0A56A0026A068B0F5805FB4 +:1028D00003D0A06828B9206918B92068406828701A +:1028E00004E02068406800F07F002870A06A401C67 +:1028F000A062E08D401E80B2E085002846D12068AD +:10290000C06820F020002168C8602068C06820F4FA +:1029100080702168C8602068406920F0010021684B +:102920004861202084F8420000206063206B012869 +:1029300026D10020206300BF00BF21680C3151E880 +:10294000001F21F0100021680C3141E80002002A2C +:10295000F3D100BF2068006800F0100010280AD1F1 +:1029600000BF002000902068006800902068406848 +:10297000009000BF00BFA18D2046FFF72BF802E0BA +:102980002046FFF7B5FA0020F8BD01E00020FBE784 +:102990000220F9E770B504462168096921F4405125 +:1029A000E2681143226811612269A16811436269DA +:1029B00041EA02052168C96841F20C62914329434A +:1029C0002268D1602168496921F44071A2691143EC +:1029D000226851612D4A2168914202D1FEF7C2FC62 +:1029E00001E0FEF7AFFC00EBC00101EB00116268F3 +:1029F0009200B1FBF2F100EBC00202EB001263683F +:102A00009B00B2FBF3F26423B2FBF3F202EBC203CE +:102A100003EB0212A1EB8201322202EB01116422CC +:102A2000B1FBF2F101F0F00100EBC00202EB001289 +:102A300063689B00B2FBF3F26423B2FBF3F201EB99 +:102A4000021200EBC00101EB001163689B00B1FBB7 +:102A5000F3F100EBC00303EB00136668B600B3FBB1 +:102A6000F6F36426B3FBF6F303EBC30606EB03139E +:102A7000A1EB8301322303EB01116423B1FBF3F1DA +:102A800001F00F0111442268916070BD00380140CF +:102A900010B5034699629A85DA8500205864222091 +:102AA00083F84200186928B11868C06840F4807043 +:102AB0001C68E0601868406940F001001C686061B3 +:102AC0001868C06840F020001C68E060002010BD5D +:102AD000014691F84100212828D18868B0F5805F2F +:102AE0000BD1086948B90A6A1088C0F308000B685E +:102AF0005860086A801C086205E00B6A581C08626E +:102B000018780B685860C88C401E80B2C88458B9C9 +:102B10000868C06820F080000B68D8600868C0684A +:102B200040F040000B68D860002070470220FCE7AE +:102B30002DE9F04104460D4617469846069E34E0BE +:102B4000701C88B32EB1FEF759FAA0EB0800B04212 +:102B50002BD900BF00BF21680C3151E8001F21F4C0 +:102B6000D07021680C3141E80002002AF3D100BF87 +:102B700000BF00BF2168143151E8001F21F001009F +:102B80002168143141E80002002AF3D100BF20205F +:102B900084F8410084F8420000BF002084F840001F +:102BA00000BF0320BDE8F081FFE7206800682840EF +:102BB000A84201D1012000E00020B842C0D000208E +:102BC000F0E7000010B50248FEF706FF10BD000058 +:102BD0000C01002010B50248FEF7FEFE10BD0000FB +:102BE0005401002010B50248FEF7F6FE10BD0000AB +:102BF0009C01002000BFFEE70FB4054B10B503A9F0 +:102C0000044A029800F02EF910BC5DF814FB000095 +:102C1000B5350008900000200FB47CB50C0009AD5C +:102C200001D0611E00E00021CDE90001064B6A469B +:102C30002946089800F016F9002C02D0009A0021CD +:102C400011707CBC5DF814FB6B3500087CB50C0082 +:102C50001D461646014601D0601E00E00020CDE969 +:102C60000010064B6A462946304600F0FBF8002C5F +:102C700002D0009A002111707CBD00006B35000865 +:102C800002480068C0F30220704700000CED00E02D +:102C900010B5002804DB0A07130E054A135406E09A +:102CA0000A07140E034A00F00F031B1FD45410BD73 +:102CB00000E400E018ED00E00048704794000020B8 +:102CC00002E008C8121F08C1002AFAD170477047F5 +:102CD000002001E001C1121F002AFBD17047000053 +:102CE0002DE9FF5F82B00021DDE90430020DDDF83F +:102CF00040B0034318D044F61050A2F2FF324243D2 +:102D00001514119801281FD0A5EB0B00401C5FEA99 +:102D1000000A4FF000064E4FDFF83891B04650469B +:102D200015D5CAF1000413E0119801244AA3012823 +:102D300001D16FEA0B010298119AC0E90031C0E994 +:102D4000024206B0BDE8F09FCBF10000DFE7044689 +:102D50000021404A491842EB0450CDE9001012E02E +:102D6000E00707D032463B4640464946FDF74AFB5E +:102D70008046894632463B4610461946FDF742FBDF +:102D800006460F466410002CEAD1DDE90401DDE9B6 +:102D90000023BAF1000F06DAFDF734FB42464B463A +:102DA000FDF730FB05E0FDF79FFB42464B46FDF784 +:102DB0009BFB04460E460022284BFDF71DFC03D862 +:102DC0004FF0FF30014607E00022254B20463146F8 +:102DD000FDF771FAFDF7F7FB102409E0002C0ADB80 +:102DE0000A220023FDF7FEF9039B30321A55641EB8 +:102DF00050EA0102F2D1641C039AC4F11103144495 +:102E0000119A012A03D0012208430DD10AE0084398 +:102E100004D000204FF0110B119072E7A3EB0B05CB +:102E20006D1E0DE05B4504DD4FF0000205F101056C +:102E300004E003DA4FF00002A5F10105002AECD00E +:102E400002981199C0E90231C0E9004579E7000014 +:102E5000000014400000F03F300000000000F0438C +:102E60000000E03F2DE9FF4F95B09A4688460646A0 +:102E70000025EEE1252877D100242746F94A0121D3 +:102E8000039400E0044316F8013F203B01FA03F0ED +:102E90001042F7D130782A2811D06FF02F03307804 +:102EA000A0F13002092A16D8039A44F0020402EB7A +:102EB000820203EB42021044761C0390EFE758F8BD +:102EC000042B0392002A03DA504244F40054039086 +:102ED00044F00204761C30782E2816D116F8010F23 +:102EE00044F004042A280DD06FF02F023078A0F1AE +:102EF0003003092B09D807EB870302EB4303C718FC +:102F0000761CF3E758F8047B761C30786C280FD0D9 +:102F100006DC4C2817D068280DD06A2814D104E0AC +:102F2000742810D07A280FD10DE044F400140AE080 +:102F300044F4801401E044F440147278824202D1D7 +:102F400004F58014761C761C307866280BD013DCD0 +:102F5000582877D009DC002875D04528F6D04628B7 +:102F6000F4D047281AD193E118E0632835D06428BB +:102F700079D0652812D18BE1702873D008DC6728DE +:102F8000F1D069286FD06E280DD06F2806D1ACE043 +:102F900073282CD0752874D0782853D052461799AE +:102FA00090476D1C54E1C4F30250022809D0032855 +:102FB0000DD0D8F8001004280DD00D6008F10408D9 +:102FC00046E1D8F80010EA17C1E90052F6E7D8F850 +:102FD00000100D80F2E70D70F0E718F8041B8DF873 +:102FE000001000208DF80100EB46012003E058F8A6 +:102FF00004BB4FF0FF3061074FF0000102D40DE039 +:1030000009F101018946B9420FDA8145F8DB1BF865 +:1030100009100029F4D108E009F101018946814233 +:10302000FADB1BF809100029F6D103985346A0EBF0 +:10303000090721463846179A00F080FA284400EB29 +:10304000090507E044E008E10DE01BF8010B5246DA +:1030500017999047B9F10109F7D2534621463846EE +:10306000179AF2E039E00A21C4F302524FF0000B44 +:103070000091022A06D058F8040BC117032A09D080 +:103080000AE023E008F1070020F00702F2E802015D +:10309000904605E000B2C117042A01D140B2C11721 +:1030A000002906DA0A460021404261EB02012D2286 +:1030B00002E0220504D52B228DF80420012203E032 +:1030C000E20701D02022F7E7914657E00A2100E00D +:1030D00010214FF0000B00910BE010214FF0000B7E +:1030E00044F004040827009103E008204FF0000B8F +:1030F0000090C4F30252022A05D058F8040B0021B4 +:10310000032A08D008E008F1070020F00702F2E8DF +:103110000201904603E080B2042A00D1C0B24FF011 +:10312000000922072AD53278702A07D0DDF800C0BE +:103130008CF0100C5CEA0B0C05D00EE040228DF8F0 +:103140000420012208E050EA010306D030238DF864 +:1031500004308DF8052002229146009B83F008037D +:1031600053EA0B030AD150EA010201D1620705D5E7 +:1031700030228DF804204FF001097F1E3278582A42 +:1031800004D039A20C920CAA02920BE03BA2F9E700 +:103190005B46009AFDF726F80C9B9B5C029A521E38 +:1031A0000292137050EA0102F2D1029804A9081A9F +:1031B00000F1200B600702D524F4803400E00127E1 +:1031C0005F4502DDA7EB0B0000E0002000EB0B01E8 +:1031D000009003984944401A0390E00306D45346F4 +:1031E0002146179A039800F0A9F90544002706E044 +:1031F00001A85246C05D179990476D1C7F1C4F4532 +:10320000F6DBE0030CD553462146179A039800F0ED +:1032100095F9054404E030205246179990476D1CFB +:103220000099481E00900029F5DC08E002980299F8 +:1032300052460078491C0291179990476D1CBBF1CA +:103240000001ABF1010BF1DC5BE100F065F9054435 +:10325000761C307800287FF40DAE19B02846BDE802 +:10326000F08F000009280100303132333435363711 +:1032700038396162636465660000000030313233C2 +:103280003435363738394142434445460000000062 +:10329000600700D4062708F1070020F00700F0E8D7 +:1032A0000223804603F0004C5FEA0C0001D097A097 +:1032B00009E0200501D596A005E0E00701D095A022 +:1032C00001E0AFF24C001390307823F00043652802 +:1032D0000CD006DC452809D046281DD047287FD1D0 +:1032E0003BE0662818D067287AD136E00021112FFC +:1032F00001DB112000E0781CCDE9000104A90CA835 +:10330000FFF7EEFCDDE90D010C9A4FF0000B07F121 +:103310000109109200914EE04FF000400097CDE976 +:10332000011004A90CA8FFF7DBFCDDE90D020C9BE2 +:103330000F994FF0000B91461093009211B9791C30 +:1033400000EB0109B7EB090003D4C0F1FF3B07F123 +:103350000109A9EB0700019042E0012F00DA0127E3 +:103360000021112F01DD112000E03846CDE90001D8 +:1033700004A90CA8FFF7B4FCDDE90D010C9A00913B +:103380004FF0000BB946109221070FD4009A4A451E +:1033900003DA914601E0A9F10109B9F1010F05DD58 +:1033A000109AA9F10101515C3029F4D0B84202DA37 +:1033B00010F1040F03DA0121CDE9011010E000281B +:1033C00003DC8344A9EB000102E0411C494500DD18 +:1033D0008946A0EB0B00401C01904FF0004002908A +:1033E000200705D40198484502DB4FF0FF300190DB +:1033F00000208DF84B0002980DF14B07B0F1004F03 +:1034000025D002200C902B200D90029800280CDA79 +:10341000404202902D200D9007E00A210298FCF70F +:10342000CBFE3031029007F8011D0C99481E0C901C +:103430000029F2DC02980028EFD1791E0D9808705F +:10344000307800F0200040F0450007F8020D11A888 +:10345000C01BC01D02901398007800B1012000EB42 +:103460000901019801EBE071029801440398401AA8 +:10347000401E0390E00306D453462146179A039852 +:1034800000F05CF805441398007818B1524617997B +:1034900090476D1CE00323D553462146179A0398A5 +:1034A00000F04CF805441BE0BBF1000F07DB00986F +:1034B000584504DD1098179910F80B0001E0179992 +:1034C00030205246904701980BF1010B401E05F148 +:1034D0000105019004D12E205246179990476D1C8A +:1034E000B9F10001A9F10109DEDC05E017F8010BD3 +:1034F0005246179990476D1C0299481E0290002968 +:10350000F4DC53462146179A03989EE62D000000EE +:103510002B000000200000002DE9F04104460025AA +:103520001E461746880404D405E039462020B047DB +:103530006D1C641EF9D52846BDE8F0812DE9F041E7 +:10354000044600251E469046C80301D5302700E0FA +:103550002027880404D505E041463846B0476D1C55 +:10356000641EF9D52846BDE8F0814A68002A06D0D5 +:103570000A68531C0B6010704868401E4860704712 +:1035800010B502460023002003E0145C6340441C95 +:10359000E0B28842F9DB184610BD10B502460023A0 +:1035A000002003E0145C6340441CE0B28842F9DB75 +:1035B000184610BD13B50C4601216846FFF748F8C0 +:1035C00000981CBD10B500224FF400710148FDF7B2 +:1035D0000FFD10BD000C014010B501225102024840 +:1035E000FDF706FD10BD0000000C0140014630292A +:1035F00005DB392903DCA1F13000C0B27047412955 +:1036000005DB462903DCA1F13700C0B2F6E76129EA +:1036100005DB662903DCA1F15700C0B2EEE700200C +:10362000ECE770B505460C462046FFF7DFFF06467F +:103630002846FFF7DBFF46EA0010C0B270BD014626 +:1036400009B1087808B9012070470020FCE710B5DF +:1036500004462046FFF7F3FF08B1002010BD09E043 +:10366000FCF772FD00682178405C202801D0002022 +:10367000F4E7641C20780028F2D10120EEE710B5B1 +:103680000446FCF761FD0068005D00F0100028B9F9 +:10369000FCF75AFD0068005D202801D1012010BD13 +:1036A0000020FCE710B50446FCF74EFD0068005D05 +:1036B00000F03E0038B12A2C05D00D2C03D00A2C86 +:1036C00001D0012010BD0020FCE70000FDF7A8FCA0 +:1036D000FEF741FFFEF758FDFEF700FEFEF7DCFDAA +:1036E000FEF718FEFEF732FEFEF76AFFFEF7C8FC93 +:1036F000FDF722FAFEF760FE012218491848FEF78E +:10370000E1FB002000F04EFB012216491648FEF7AF +:10371000D9FB002000F0E6FB4FF47A710A2000F09C +:1037200007FC12A0FFF768FA1CA0FFF765FA24480F +:1037300000682449B0FBF1F4214623A0FFF75CFAAE +:1037400027A0FFF759FA07E0FEF7EAFFFEF7D8FCDB +:10375000FDF708FA00F002FCF6E700000400002084 +:1037600054010020840000200C0100200D0A3D3D82 +:103770003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D79 +:103780003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D69 +:103790003D3D3D3D3D3D0D0A000000004533322DCD +:1037A0003433335442482D5343204170706C696365 +:1037B0006174696F6E20537461727465640D0A00E0 +:1037C0006800002040420F0053797374656D2043F8 +:1037D0006C6F636B3A202564204D487A0D0A000017 +:1037E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D09 +:1037F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF9 +:103800003D3D3D3D3D3D3D3D0D0A000070B58CB058 +:10381000044694F84B0008B169A200E06AA294F84B +:10382000490094F8481004F12803CDE90102009101 +:1038300004F10802214665A0FEF7EAFE6EA12046CB +:10384000FCF79FFC002847D104F10800FFF7FFFEBA +:1038500020B104F12800FFF7FAFE38B967A000F0A4 +:103860002FFC68A0FEF7D4FE0CB070BD04F1080078 +:10387000FCF795FC064604F12800FCF790FC054691 +:10388000012E20DB042E1EDC0DB1012D1BD10DB14C +:10389000012200E000221146F0B2FEF7BDFD3346E2 +:1038A00062A2202104A80095FFF7B6F904A800F051 +:1038B0002FFC0DB160A000E060A00246314660A080 +:1038C000FEF7A6FE07E04DA000F0FAFB2A463146BF +:1038D00061A0FEF79DFE70E06AA12046FCF751FC56 +:1038E000002857D104F10800FFF7A9FE28B966A106 +:1038F00004F10800FCF745FCD0B9FEF7A1FB054632 +:10390000C5F3C000C5F38001C5F3400205F0010313 +:10391000CDE9002102905DA2202104A8FFF77CF9E7 +:1039200004A800F0F5FB29465BA0FEF771FE44E019 +:1039300004F10800FFF78BFE28B304F10800FCF740 +:103940002EFC0546012D16DB042D14DC691EC8B2C1 +:10395000FEF78AFB06462B4657A2202104A80096B4 +:10396000FFF75AF904A800F0D3FB3246294655A0C8 +:10397000FEF74EFE06E021A000F0A2FB294656A06D +:10398000FEF746FE19E01DA000F09AFB5AA0FEF7D4 +:103990003FFE12E062A12046FCF7F3FB30B960A0C5 +:1039A00000F0B6FB60A0FEF733FE06E065A000F075 +:1039B00087FB214664A0FEF72BFE00BF54E7000002 +:1039C00028736B6970290000000000005B434D44C0 +:1039D0005D20434D443D25732050313D25732050DB +:1039E000323D25732043533D253032582F25303248 +:1039F000582025730D0A0000524C000050415241DE +:103A00004D0000005B434D445D20496E76616C695A +:103A10006420524C20706172616D733A206E6F7435 +:103A2000206E756D657269630D0A0000524C2C257D +:103A3000642C2564000000004F4E00004F464600F5 +:103A40005B434D445D2052656C6179202564202DD7 +:103A50003E2025730D0A00005B434D445D20496EF6 +:103A600076616C696420524C20706172616D733AAA +:103A70002069643D25642073746174653D25640D7F +:103A80000A000000444900003000000044492C2591 +:103A900064256425642564005B434D445D204449EE +:103AA00020616C6C207374617465733A20307825E2 +:103AB0003032580D0A00000044492C25642C25643E +:103AC000000000005B434D445D2044492564203DD7 +:103AD0002025640D0A0000005B434D445D20496EC3 +:103AE00076616C6964204449206368616E6E656C20 +:103AF0003A2025640D0A00005B434D445D20496E69 +:103B000076616C696420444920706172616D3A206D +:103B10006E6F74206E756D657269630D0A0000002A +:103B20004543484F000000005B434D445D20454342 +:103B3000484F20726573706F6E73652073656E7485 +:103B40000D0A0000434D44005B434D445D20556E1B +:103B50006B6E6F776E20636F6D6D616E643A2025BA +:103B6000730D0A0010B500200649087081F84D0059 +:103B700081F84E0081F851004C210248401CFCF7AE +:103B8000EEFA10BDE401002030B502460B4602B14A +:103B900013B96FF0020030BD00211AE00F48006831 +:103BA000B0F5806F02D34FF0FF30F4E7505C0C4C5F +:103BB0000C4D2D6860550B480068401CC0F309008F +:103BC000084C206005480068401C044C2060481CDC +:103BD00081B29942E2DB0020DDE700008000002096 +:103BE0004E070020780000200748006850B10648C2 +:103BF0000068401E044908600846006810B90120AA +:103C00000249087070470000880000208C000020E6 +:103C100010B502210D48FDF7E3F9A0B9FDF7EEF963 +:103C2000044607E0FDF7EAF9001B642802D36FF0B1 +:103C3000010010BD02210548FDF7D2F90028F1D09E +:103C40000220FDF729F80020F3E70000000C0140F6 +:103C50000548007810B94FF0FF3070470020024946 +:103C6000087000BFF9E700007400002008480078E1 +:103C700010B14FF0FF307047002006490860064938 +:103C80000860064908600120014908700020F2E739 +:103C900074000020780000207C00002080000020BC +:103CA00070B50546FFF7B4FF04460CB1204670BD61 +:103CB00035B1012D0FD0022D18D0032D2CD120E0CD +:103CC000002280211C48FDF793F9002201211B48A6 +:103CD000FDF78EF923E0012280211748FDF788F9CE +:103CE000002201211548FDF783F918E00022802108 +:103CF0001148FDF77DF9012211461048FDF778F9CA +:103D00000DE0012280210C48FDF772F901221146D5 +:103D10000A48FDF76DF902E06FF00200C7E700BF47 +:103D20000520FCF7B9FFFFF773FF04460CB12046EE +:103D3000BDE70020BBE7000000080140000C014087 +:103D400008B5094800684068C0B200900121684683 +:103D5000FFF71AFF0A2005490860012204490248BA +:103D6000FEF7B0F808BD00000C010020880000201C +:103D70008400002070B504460D4604B115B96FF0FB +:103D8000020070BD4FF6FF732A4621460448FEF735 +:103D9000D3F8064616B16FF00100F2E70020F0E715 +:103DA0000C01002070B505461348007810B14FF0A3 +:103DB000FF3070BDFFF75AFF044614B14FF0FF30DB +:103DC000F7E735B90D480E490A68026009790171B3 +:103DD00004E00A482968016029790171074800F068 +:103DE00023F804461CB1FFF733FF2046E1E701202A +:103DF000014908700020DCE76C0000206D00002005 +:103E00000442000810B50446C02006490870084660 +:103E10002168C0F80110217941710621FFF7AAFF3E +:103E200010BD00004E03002070B5054615B96FF0B7 +:103E3000030070BDFFF7ECFE044614B16FF0020002 +:103E4000F7E70320FFF72CFF044614B16FF00200E0 +:103E5000EFE72846FFF7D6FF6420FCF71DFF0020A0 +:103E6000FFF71EFF044614B16FF00200E1E70348BC +:103E700029680160297901710020DAE76D000020CE +:103E800070B504462046FFF70BFF054615B16FF0ED +:103E9000020070BD0020FCE770B504460E4604B178 +:103EA00016B96FF0030070BD0A48007810B96FF0C2 +:103EB0000500F8E731462046FFF75CFF054615B1DF +:103EC0006FF00200EFE7214603A0FEF795FE002009 +:103ED000E9E700006C00002053656E743A202573FA +:103EE0000000000070B5054615B94FF0FF3070BDF9 +:103EF0001C210E48FCF733F900200C490870487665 +:103F0000084629684161297901761430FFF78CFF52 +:103F100004460CB12046EAE70020FFF7B1FF044653 +:103F20000CB12046E3E70020E1E700009800002004 +:103F3000024602B111B94FF0FF3070470648826067 +:103F40000020054B58601846C160002018611870A9 +:103F5000012058760020F0E79800002070B588B066 +:103F60003248407E08B908B070BDFDF747F80446F6 +:103F70002E48007830B1012808D0022842D003280A +:103F80004CD14AE00120294908704BE0274840689D +:103F900026498968884206D30320244908700020F6 +:103FA00000F00EF93EE021480069201A1F49C96857 +:103FB000884226D31D484068431C1C482021826843 +:103FC000684600F0D9F80546002D16DD29466846FA +:103FD000FFF762FF06467EB914484068401C13494B +:103FE000486008460461012000F0EAF83220FCF73E +:103FF00053FE002000F0E4F800BF02200B490870D7 +:1040000000BF0FE009480069201A0849C9688842C2 +:1040100002D301200549087004E003E003200349AE +:10402000087000BF00BF00BF9DE70000980000209F +:10403000F0B589B004460D46631C12A2202101A8E8 +:104040000095FEF7E9FD0646701EC1B20DF10500B0 +:10405000FFF7A3FA0746C6F1200101AA90193B46D3 +:104060000DA2FEF7D9FD01A8FEF74CFB0DB10CA087 +:1040700000E00DA00246611C0CA0FEF7C9FA09B0D1 +:10408000F0BD00002444495F4556454E542C25643C +:104090002C25642A00000000253032580D0A00004B +:1040A00048494748000000004C4F57005B494F5DAE +:1040B0002043482564202D3E2025730D0A00000072 +:1040C00070B588B005462B460CA220216846FEF745 +:1040D000A3FD0446601EC1B20DF10100FFF750FAC6 +:1040E0000646C4F120010DEB0400334606A2FEF79C +:1040F00093FD6846FEF706FB08B070BD244552529A +:104100002C25732A00000000253032580D0A0000CB +:1041100070B590B005462B460CA240216846FEF7CC +:104120007BFD0446601EC1B20DF10100FFF728FAC5 +:104130000646C4F140010DEB0400334605A2FEF72C +:104140006BFD6846FEF7DEFA10B070BD244F4B2CB5 +:1041500025732A00253032580D0A000010B500F0F2 +:1041600038F80448006820B102480068401E014940 +:10417000086010BD000000202DE9F84305460E46FA +:10418000174698460DB1102E02DA0020BDE8F883DC +:104190003B4607A231462846CDF80080FEF73CFD9D +:1041A0000446002C01DDA0B2F0E70020EEE700009D +:1041B00054582E2530336C752E2530336C752E00F7 +:1041C00010B5044614B1FFF707FA01E0FFF7FAF95A +:1041D00010BD00B5FFF708FD00BD0203040506078A +:1041E00008090A0B0C0D0E0F101001020000000050 +:1041F0000000000001020304060708090000000097 +:104200000102030400001A1704C1C1C141542B4428 +:104210004556545950453D3F0041542B4657434F56 +:1042200044453D3F00004040404040404040404108 +:10423000414141414040404040404040404040407A +:1042400040404040404005020202020202020202D7 +:104250000202020202022020202020202020202012 +:1042600002020202020202909090909090101010B0 +:10427000101010101010101010101010101010103E +:1042800010020202020202888888888888080808CA +:10429000080808080808080808080808080808089E +:1042A000080202020240000026420008CC42000838 +:1042B0000000002098000000C02C000864430008A3 +:1042C00098000020B80E0000D02C0008000000006C +:1042D00000000000000C0140100000000000000081 +:1042E00000000000000C0140200000000000000061 +:1042F00000000000000C0140400000000000000031 +:1043000000000000000C01408000000000000000E0 +:10431000000000000000000001000000000000009C +:10432000000000000000000000000000100000007D +:10433000010000000024F400000000000000000064 +:10434000000000000000000000000000000000006D +:10435000000000000000000000000000000000005D +:044360000000000059 :04000005080000ED02 :00000001FF diff --git a/MDK-ARM/project/project.htm b/MDK-ARM/project/project.htm index a8b7a5e..106dbf2 100644 --- a/MDK-ARM/project/project.htm +++ b/MDK-ARM/project/project.htm @@ -3,11 +3,11 @@ Static Call Graph - [project\project.axf]

Static Call Graph for image project\project.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Wed Mar 25 17:03:46 2026 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu Mar 26 19:33:59 2026

-

Maximum Stack Usage = 328 bytes + Unknown(Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 296 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-main ⇒ rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT

Mutually Recursive functions @@ -63,7 +63,7 @@ Function Pointers
  • TIM2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • TIM3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • TIM4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
  • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) +
  • UART_DMAAbortOnError from stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) referenced from stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
  • USART1_IRQHandler from stm32f1xx_it.o(i.USART1_IRQHandler) referenced from startup_stm32f103xb.o(RESET)
  • USART2_IRQHandler from stm32f1xx_it.o(i.USART2_IRQHandler) referenced from startup_stm32f103xb.o(RESET)
  • USART3_IRQHandler from stm32f1xx_it.o(i.USART3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) @@ -73,10 +73,9 @@ Function Pointers
  • UsageFault_Handler from stm32f1xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f103xb.o(RESET)
  • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
  • _sbackspace from _sgetc.o(.text) referenced from __0sscanf.o(.text) -
  • _scanf_char_input from scanf_char.o(.text) referenced from scanf_char.o(.text) -
  • _sgetc from _sgetc.o(.text) referenced from __0sscanf.o(.text) -
  • isspace from isspace_c.o(.text) referenced from scanf_char.o(.text) +
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0snprintf) +
  • _snputc from printfa.o(i._snputc) referenced from printfa.o(i.__0vsnprintf) +
  • fputc from uart2_print.o(i.fputc) referenced from printfa.o(i.__0printf)
  • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

    @@ -86,27 +85,27 @@ Global Symbols

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text)
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) -

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Calls]

    • >>   __scatterload +

      _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

      [Calls]

      • >>   __scatterload
      -

      __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

      [Called By]

      • >>   __scatterload +

        __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

        [Called By]

        • >>   __scatterload
        -

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

        _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

        _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

        _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) +

        __rt_lib_shutdown_fini (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E)) -

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) +

        __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F)) -

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011)) +

        __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))

        Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
        [Address Reference Count : 1]

        • startup_stm32f103xb.o(RESET) @@ -235,393 +234,573 @@ Global Symbols

          WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
          [Address Reference Count : 1]

          • startup_stm32f103xb.o(RESET)
          -

          __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

          [Called By]

          • >>   _memset$wrapper -
          • >>   __aeabi_memclr +

            __aeabi_llsr (Thumb, 32 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) +

            [Called By]

            • >>   _double_epilogue +
            • >>   __aeabi_uldivmod +
            • >>   __aeabi_d2ulz
            -

            __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

            _ll_ushift_r (Thumb, 0 bytes, Stack size 0 bytes, llushr.o(.text), UNUSED) -

            __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) - -

            __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

            [Calls]

            • >>   __aeabi_memset +

              __rt_ctype_table (Thumb, 4 bytes, Stack size 0 bytes, ctype_o.o(.text)) +

              [Called By]

              • >>   is_valid_param_char +
              • >>   is_valid_cmd_char +
              • >>   is_str_numeric +
              • >>   strtol
              -

              __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) -

              [Called By]

              • >>   SystemClock_Config -
              • >>   rf433_rx_app_init +

                __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) +

                [Called By]

                • >>   _memset$wrapper +
                • >>   __aeabi_memclr
                -

                __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) -

                [Calls]

                • >>   __aeabi_memset +

                  __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

                  __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text)) +

                  [Calls]

                  • >>   __aeabi_memset +
                  +
                  [Called By]
                  • >>   reset_parser
                  -

                  __0sscanf (Thumb, 48 bytes, Stack size 72 bytes, __0sscanf.o(.text)) -

                  [Stack]

                  • Max Depth = 216
                  • Call Chain = __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int -
                  -
                  [Calls]
                  • >>   __vfscanf_char -
                  -
                  [Called By]
                  • >>   rf433_rx_app_parse_packet +

                    __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

                    [Called By]

                    • >>   CmdParser_Init +
                    • >>   SystemClock_Config +
                    • >>   rf433_tx_app_init
                    -

                    _scanf_int (Thumb, 332 bytes, Stack size 56 bytes, _scanf_int.o(.text)) -

                    [Stack]

                    • Max Depth = 56
                    • Call Chain = _scanf_int -
                    -
                    [Calls]
                    • >>   _chval -
                    -
                    [Called By]
                    • >>   __vfscanf +

                      __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

                      _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

                      [Calls]

                      • >>   __aeabi_memset
                      -

                      _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) -

                      [Called By]

                      • >>   _scanf_int +

                        strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) +

                        [Called By]

                        • >>   UART2_Print_String
                        -

                        __vfscanf_char (Thumb, 20 bytes, Stack size 0 bytes, scanf_char.o(.text)) -

                        [Stack]

                        • Max Depth = 144
                        • Call Chain = __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +

                          strcmp (Thumb, 28 bytes, Stack size 8 bytes, strcmp.o(.text)) +

                          [Stack]

                          • Max Depth = 8
                          • Call Chain = strcmp
                          -
                          [Calls]
                          • >>   __vfscanf -
                          -
                          [Called By]
                          • >>   __0sscanf +
                            [Called By]
                            • >>   process_cmd_frame
                            -

                            _sgetc (Thumb, 30 bytes, Stack size 0 bytes, _sgetc.o(.text)) -
                            [Address Reference Count : 1]

                            • __0sscanf.o(.text) +

                              atoi (Thumb, 26 bytes, Stack size 16 bytes, atoi.o(.text)) +

                              [Stack]

                              • Max Depth = 88
                              • Call Chain = atoi ⇒ strtol ⇒ _strtoul
                              -

                              _sbackspace (Thumb, 34 bytes, Stack size 0 bytes, _sgetc.o(.text)) -
                              [Address Reference Count : 1]

                              • __0sscanf.o(.text) +
                                [Calls]
                                • >>   strtol +
                                • >>   __aeabi_errno_addr
                                -

                                __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

                                [Calls]

                                • >>   __main_after_scatterload -
                                -
                                [Called By]
                                • >>   _main_scatterload +
                                  [Called By]
                                  • >>   process_cmd_frame
                                  -

                                  __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

                                  __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                                  isspace (Thumb, 10 bytes, Stack size 0 bytes, isspace_c.o(.text)) -

                                  [Calls]

                                  • >>   __ctype_lookup -
                                  -
                                  [Address Reference Count : 1]
                                  • scanf_char.o(.text) -
                                  -

                                  __vfscanf (Thumb, 810 bytes, Stack size 88 bytes, _scanf.o(.text)) -

                                  [Stack]

                                  • Max Depth = 144
                                  • Call Chain = __vfscanf ⇒ _scanf_int -
                                  -
                                  [Calls]
                                  • >>   _scanf_int -
                                  -
                                  [Called By]
                                  • >>   __vfscanf_char +

                                    __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                                    [Called By]

                                    • >>   _printf_core
                                    -

                                    __ctype_lookup (Thumb, 34 bytes, Stack size 0 bytes, ctype_c.o(.text)) -

                                    [Called By]

                                    • >>   isspace +

                                      __aeabi_uldivmod (Thumb, 98 bytes, Stack size 40 bytes, uldiv.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_llsr +
                                      • >>   __aeabi_llsl +
                                      +
                                      [Called By]
                                      • >>   _printf_core +
                                      • >>   _fp_digits +
                                      + +

                                      strtol (Thumb, 112 bytes, Stack size 32 bytes, strtol.o(.text)) +

                                      [Stack]

                                      • Max Depth = 72
                                      • Call Chain = strtol ⇒ _strtoul +
                                      +
                                      [Calls]
                                      • >>   __rt_ctype_table +
                                      • >>   _strtoul +
                                      • >>   __aeabi_errno_addr +
                                      +
                                      [Called By]
                                      • >>   atoi +
                                      + +

                                      __I$use$fp (Thumb, 0 bytes, Stack size 48 bytes, iusefp.o(.text), UNUSED) + +

                                      __aeabi_dadd (Thumb, 322 bytes, Stack size 48 bytes, dadd.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_lasr +
                                      • >>   __aeabi_llsl +
                                      • >>   _double_round +
                                      • >>   _double_epilogue +
                                      +
                                      [Called By]
                                      • >>   __aeabi_drsub +
                                      • >>   __aeabi_dsub +
                                      • >>   _fp_digits +
                                      + +

                                      __aeabi_dsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_dadd +
                                      + +

                                      __aeabi_drsub (Thumb, 6 bytes, Stack size 0 bytes, dadd.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_dadd +
                                      + +

                                      __aeabi_dmul (Thumb, 228 bytes, Stack size 48 bytes, dmul.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   _double_epilogue +
                                      +
                                      [Called By]
                                      • >>   _fp_digits +
                                      + +

                                      __aeabi_ddiv (Thumb, 222 bytes, Stack size 32 bytes, ddiv.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   _double_round +
                                      +
                                      [Called By]
                                      • >>   _fp_digits +
                                      + +

                                      __aeabi_d2ulz (Thumb, 48 bytes, Stack size 0 bytes, dfixul.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_llsr +
                                      • >>   __aeabi_llsl +
                                      +
                                      [Called By]
                                      • >>   _fp_digits +
                                      + +

                                      __aeabi_cdrcmple (Thumb, 48 bytes, Stack size 0 bytes, cdrcmple.o(.text), UNUSED) +

                                      [Called By]

                                      • >>   _fp_digits +
                                      + +

                                      __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) +

                                      [Calls]

                                      • >>   __main_after_scatterload +
                                      +
                                      [Called By]
                                      • >>   _main_scatterload +
                                      + +

                                      __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) + +

                                      __aeabi_llsl (Thumb, 30 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) +

                                      [Called By]

                                      • >>   _double_epilogue +
                                      • >>   __aeabi_uldivmod +
                                      • >>   __aeabi_dadd +
                                      • >>   __aeabi_d2ulz +
                                      + +

                                      _ll_shift_l (Thumb, 0 bytes, Stack size 0 bytes, llshl.o(.text), UNUSED) + +

                                      __aeabi_lasr (Thumb, 36 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) +

                                      [Called By]

                                      • >>   __aeabi_dadd +
                                      + +

                                      _ll_sshift_r (Thumb, 0 bytes, Stack size 0 bytes, llsshr.o(.text), UNUSED) + +

                                      _strtoul (Thumb, 158 bytes, Stack size 40 bytes, _strtoul.o(.text)) +

                                      [Stack]

                                      • Max Depth = 40
                                      • Call Chain = _strtoul +
                                      +
                                      [Calls]
                                      • >>   _chval +
                                      • >>   __aeabi_errno_addr +
                                      +
                                      [Called By]
                                      • >>   strtol +
                                      + +

                                      _double_round (Thumb, 30 bytes, Stack size 8 bytes, depilogue.o(.text), UNUSED) +

                                      [Called By]

                                      • >>   _double_epilogue +
                                      • >>   __aeabi_ddiv +
                                      • >>   __aeabi_dadd +
                                      + +

                                      _double_epilogue (Thumb, 156 bytes, Stack size 32 bytes, depilogue.o(.text), UNUSED) +

                                      [Calls]

                                      • >>   __aeabi_llsr +
                                      • >>   __aeabi_llsl +
                                      • >>   _double_round +
                                      +
                                      [Called By]
                                      • >>   __aeabi_dmul +
                                      • >>   __aeabi_dadd +
                                      + +

                                      _chval (Thumb, 28 bytes, Stack size 0 bytes, _chval.o(.text)) +

                                      [Called By]

                                      • >>   _strtoul

                                      BusFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))
                                      [Address Reference Count : 1]

                                      • startup_stm32f103xb.o(RESET)
                                      +

                                      CmdParser_FeedByte (Thumb, 730 bytes, Stack size 16 bytes, cmd_parser.o(i.CmdParser_FeedByte)) +

                                      [Stack]

                                      • Max Depth = 208
                                      • Call Chain = CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                      +
                                      [Calls]
                                      • >>   UART2_Print_Printf +
                                      • >>   send_response_err +
                                      • >>   reset_parser +
                                      • >>   is_valid_param_char +
                                      • >>   is_valid_cmd_char +
                                      • >>   hex_to_byte +
                                      +
                                      [Called By]
                                      • >>   HAL_UART_RxCpltCallback +
                                      + +

                                      CmdParser_Init (Thumb, 24 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Init)) +

                                      [Stack]

                                      • Max Depth = 200
                                      • Call Chain = CmdParser_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                      +
                                      [Calls]
                                      • >>   UART2_Print_Printf +
                                      • >>   __aeabi_memclr4 +
                                      +
                                      [Called By]
                                      • >>   main +
                                      + +

                                      CmdParser_Task (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.CmdParser_Task)) +

                                      [Stack]

                                      • Max Depth = 288
                                      • Call Chain = CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                      +
                                      [Calls]
                                      • >>   reset_parser +
                                      • >>   process_cmd_frame +
                                      +
                                      [Called By]
                                      • >>   main +
                                      +

                                      DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
                                      [Address Reference Count : 1]

                                      • startup_stm32f103xb.o(RESET)
                                      -

                                      Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) -

                                      [Called By]

                                      • >>   MX_USART3_UART_Init -
                                      • >>   MX_USART2_UART_Init -
                                      • >>   MX_USART1_UART_Init -
                                      • >>   MX_SPI2_Init -
                                      • >>   SystemClock_Config +

                                        Error_Handler (Thumb, 6 bytes, Stack size 0 bytes, main.o(i.Error_Handler)) +

                                        [Called By]

                                        • >>   MX_USART3_UART_Init +
                                        • >>   MX_USART2_UART_Init +
                                        • >>   MX_USART1_UART_Init +
                                        • >>   MX_SPI2_Init +
                                        • >>   SystemClock_Config
                                        -

                                        HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) -

                                        [Called By]

                                        • >>   HAL_UART_IRQHandler +

                                          HAL_DMA_Abort (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort)) +

                                          [Called By]

                                          • >>   HAL_UART_IRQHandler
                                          -

                                          HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT)) +

                                          HAL_DMA_Abort_IT (Thumb, 172 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT))

                                          [Stack]

                                          • Max Depth = 16
                                          • Call Chain = HAL_DMA_Abort_IT
                                          -
                                          [Called By]
                                          • >>   HAL_UART_IRQHandler +
                                            [Called By]
                                            • >>   HAL_UART_IRQHandler
                                            -

                                            HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay)) +

                                            HAL_Delay (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_Delay))

                                            [Stack]

                                            • Max Depth = 16
                                            • Call Chain = HAL_Delay
                                            -
                                            [Calls]
                                            • >>   HAL_GetTick +
                                              [Calls]
                                              • >>   HAL_GetTick
                                              -
                                              [Called By]
                                              • >>   main -
                                              • >>   rf433_set_config -
                                              • >>   rf433_rx_app_task -
                                              • >>   rf433_hal_set_work_mode -
                                              • >>   rf433_hal_aux_wait +
                                                [Called By]
                                                • >>   rf433_set_config +
                                                • >>   rf433_tx_app_task +
                                                • >>   rf433_hal_set_work_mode +
                                                • >>   rf433_hal_aux_wait
                                                -

                                                HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init)) +

                                                HAL_GPIO_Init (Thumb, 766 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init))

                                                [Stack]

                                                • Max Depth = 36
                                                • Call Chain = HAL_GPIO_Init
                                                -
                                                [Called By]
                                                • >>   HAL_UART_MspInit -
                                                • >>   HAL_SPI_MspInit -
                                                • >>   MX_GPIO_Init +
                                                  [Called By]
                                                  • >>   HAL_UART_MspInit +
                                                  • >>   HAL_SPI_MspInit +
                                                  • >>   MX_GPIO_Init
                                                  -

                                                  HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) -

                                                  [Called By]

                                                  • >>   rf433_hal_aux_wait +

                                                    HAL_GPIO_ReadPin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) +

                                                    [Called By]

                                                    • >>   IO_Monitor_Task +
                                                    • >>   IO_Monitor_Init +
                                                    • >>   rf433_hal_aux_wait
                                                    -

                                                    HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) -

                                                    [Called By]

                                                    • >>   MX_GPIO_Init -
                                                    • >>   gpio_led_rx_on -
                                                    • >>   gpio_led_rx_off -
                                                    • >>   rf433_hal_set_work_mode +

                                                      HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) +

                                                      [Called By]

                                                      • >>   Relay_SetState +
                                                      • >>   Relay_Init +
                                                      • >>   MX_GPIO_Init +
                                                      • >>   gpio_led_tx_on +
                                                      • >>   gpio_led_tx_off +
                                                      • >>   rf433_hal_set_work_mode
                                                      -

                                                      HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) -

                                                      [Called By]

                                                      • >>   HAL_RCC_OscConfig -
                                                      • >>   HAL_RCC_ClockConfig -
                                                      • >>   HAL_Delay -
                                                      • >>   HAL_UART_Transmit -
                                                      • >>   UART_WaitOnFlagUntilTimeout -
                                                      • >>   rf433_hal_aux_wait +

                                                        HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_GetTick)) +

                                                        [Called By]

                                                        • >>   Relay_SetState +
                                                        • >>   IO_Monitor_Task +
                                                        • >>   HAL_RCC_OscConfig +
                                                        • >>   HAL_RCC_ClockConfig +
                                                        • >>   HAL_UART_RxCpltCallback +
                                                        • >>   HAL_Delay +
                                                        • >>   rf433_tx_app_task +
                                                        • >>   rf433_hal_aux_wait +
                                                        • >>   HAL_UART_Transmit +
                                                        • >>   UART_WaitOnFlagUntilTimeout
                                                        -

                                                        HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick)) +

                                                        HAL_IncTick (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal.o(i.HAL_IncTick))

                                                        [Called By]

                                                        • >>   SysTick_Handler
                                                        -

                                                        HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init)) +

                                                        HAL_Init (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal.o(i.HAL_Init))

                                                        [Stack]

                                                        • Max Depth = 72
                                                        • Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                        -
                                                        [Calls]
                                                        • >>   HAL_MspInit -
                                                        • >>   HAL_InitTick -
                                                        • >>   HAL_NVIC_SetPriorityGrouping +
                                                          [Calls]
                                                          • >>   HAL_MspInit +
                                                          • >>   HAL_InitTick +
                                                          • >>   HAL_NVIC_SetPriorityGrouping

                                                          [Called By]
                                                          • >>   main
                                                          -

                                                          HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick)) +

                                                          HAL_InitTick (Thumb, 64 bytes, Stack size 16 bytes, stm32f1xx_hal.o(i.HAL_InitTick))

                                                          [Stack]

                                                          • Max Depth = 64
                                                          • Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                          -
                                                          [Calls]
                                                          • >>   HAL_NVIC_SetPriority -
                                                          • >>   HAL_SYSTICK_Config +
                                                            [Calls]
                                                            • >>   HAL_NVIC_SetPriority +
                                                            • >>   HAL_SYSTICK_Config
                                                            -
                                                            [Called By]
                                                            • >>   HAL_RCC_ClockConfig -
                                                            • >>   HAL_Init +
                                                              [Called By]
                                                              • >>   HAL_RCC_ClockConfig +
                                                              • >>   HAL_Init
                                                              -

                                                              HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit)) +

                                                              HAL_MspInit (Thumb, 76 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(i.HAL_MspInit))

                                                              [Stack]

                                                              • Max Depth = 8
                                                              • Call Chain = HAL_MspInit
                                                              -
                                                              [Called By]
                                                              • >>   HAL_Init +
                                                                [Called By]
                                                                • >>   HAL_Init
                                                                -

                                                                HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) -

                                                                [Called By]

                                                                • >>   HAL_UART_MspInit +

                                                                  HAL_NVIC_EnableIRQ (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ)) +

                                                                  [Called By]

                                                                  • >>   HAL_UART_MspInit
                                                                  -

                                                                  HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority)) +

                                                                  HAL_NVIC_SetPriority (Thumb, 124 bytes, Stack size 40 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority))

                                                                  [Stack]

                                                                  • Max Depth = 48
                                                                  • Call Chain = HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                  -
                                                                  [Calls]
                                                                  • >>   __NVIC_SetPriority -
                                                                  • >>   __NVIC_GetPriorityGrouping +
                                                                    [Calls]
                                                                    • >>   __NVIC_SetPriority +
                                                                    • >>   __NVIC_GetPriorityGrouping
                                                                    -
                                                                    [Called By]
                                                                    • >>   HAL_UART_MspInit -
                                                                    • >>   HAL_InitTick +
                                                                      [Called By]
                                                                      • >>   HAL_UART_MspInit +
                                                                      • >>   HAL_InitTick
                                                                      -

                                                                      HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) -

                                                                      [Called By]

                                                                      • >>   HAL_Init +

                                                                        HAL_NVIC_SetPriorityGrouping (Thumb, 32 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping)) +

                                                                        [Called By]

                                                                        • >>   HAL_Init
                                                                        -

                                                                        HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig)) +

                                                                        HAL_RCC_ClockConfig (Thumb, 376 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig))

                                                                        [Stack]

                                                                        • Max Depth = 80
                                                                        • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                        -
                                                                        [Calls]
                                                                        • >>   HAL_RCC_GetSysClockFreq -
                                                                        • >>   HAL_InitTick -
                                                                        • >>   HAL_GetTick +
                                                                          [Calls]
                                                                          • >>   HAL_GetTick +
                                                                          • >>   HAL_InitTick +
                                                                          • >>   HAL_RCC_GetSysClockFreq
                                                                          -
                                                                          [Called By]
                                                                          • >>   SystemClock_Config +
                                                                            [Called By]
                                                                            • >>   SystemClock_Config
                                                                            -

                                                                            HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) -

                                                                            [Called By]

                                                                            • >>   HAL_RCC_GetPCLK2Freq -
                                                                            • >>   HAL_RCC_GetPCLK1Freq +

                                                                              HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) +

                                                                              [Called By]

                                                                              • >>   HAL_RCC_GetPCLK2Freq +
                                                                              • >>   HAL_RCC_GetPCLK1Freq
                                                                              -

                                                                              HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) +

                                                                              HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))

                                                                              [Stack]

                                                                              • Max Depth = 4
                                                                              • Call Chain = HAL_RCC_GetPCLK1Freq
                                                                              -
                                                                              [Calls]
                                                                              • >>   HAL_RCC_GetHCLKFreq +
                                                                                [Calls]
                                                                                • >>   HAL_RCC_GetHCLKFreq
                                                                                -
                                                                                [Called By]
                                                                                • >>   UART_SetConfig +
                                                                                  [Called By]
                                                                                  • >>   UART_SetConfig
                                                                                  -

                                                                                  HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq)) +

                                                                                  HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq))

                                                                                  [Stack]

                                                                                  • Max Depth = 4
                                                                                  • Call Chain = HAL_RCC_GetPCLK2Freq
                                                                                  -
                                                                                  [Calls]
                                                                                  • >>   HAL_RCC_GetHCLKFreq +
                                                                                    [Calls]
                                                                                    • >>   HAL_RCC_GetHCLKFreq
                                                                                    -
                                                                                    [Called By]
                                                                                    • >>   UART_SetConfig +
                                                                                      [Called By]
                                                                                      • >>   UART_SetConfig
                                                                                      -

                                                                                      HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq)) +

                                                                                      HAL_RCC_GetSysClockFreq (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))

                                                                                      [Stack]

                                                                                      • Max Depth = 16
                                                                                      • Call Chain = HAL_RCC_GetSysClockFreq
                                                                                      -
                                                                                      [Called By]
                                                                                      • >>   HAL_RCC_ClockConfig +
                                                                                        [Called By]
                                                                                        • >>   HAL_RCC_ClockConfig
                                                                                        -

                                                                                        HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig)) +

                                                                                        HAL_RCC_OscConfig (Thumb, 1114 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig))

                                                                                        [Stack]

                                                                                        • Max Depth = 32
                                                                                        • Call Chain = HAL_RCC_OscConfig ⇒ RCC_Delay
                                                                                        -
                                                                                        [Calls]
                                                                                        • >>   RCC_Delay -
                                                                                        • >>   HAL_GetTick +
                                                                                          [Calls]
                                                                                          • >>   HAL_GetTick +
                                                                                          • >>   RCC_Delay
                                                                                          -
                                                                                          [Called By]
                                                                                          • >>   SystemClock_Config +
                                                                                            [Called By]
                                                                                            • >>   SystemClock_Config
                                                                                            -

                                                                                            HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init)) +

                                                                                            HAL_SPI_Init (Thumb, 190 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(i.HAL_SPI_Init))

                                                                                            [Stack]

                                                                                            • Max Depth = 76
                                                                                            • Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                            -
                                                                                            [Calls]
                                                                                            • >>   HAL_SPI_MspInit +
                                                                                              [Calls]
                                                                                              • >>   HAL_SPI_MspInit
                                                                                              -
                                                                                              [Called By]
                                                                                              • >>   MX_SPI2_Init +
                                                                                                [Called By]
                                                                                                • >>   MX_SPI2_Init
                                                                                                -

                                                                                                HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit)) +

                                                                                                HAL_SPI_MspInit (Thumb, 124 bytes, Stack size 32 bytes, spi.o(i.HAL_SPI_MspInit))

                                                                                                [Stack]

                                                                                                • Max Depth = 68
                                                                                                • Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                -
                                                                                                [Calls]
                                                                                                • >>   HAL_GPIO_Init +
                                                                                                  [Calls]
                                                                                                  • >>   HAL_GPIO_Init
                                                                                                  -
                                                                                                  [Called By]
                                                                                                  • >>   HAL_SPI_Init +
                                                                                                    [Called By]
                                                                                                    • >>   HAL_SPI_Init
                                                                                                    -

                                                                                                    HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config)) +

                                                                                                    HAL_SYSTICK_Config (Thumb, 52 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config))

                                                                                                    [Stack]

                                                                                                    • Max Depth = 24
                                                                                                    • Call Chain = HAL_SYSTICK_Config ⇒ __NVIC_SetPriority
                                                                                                    -
                                                                                                    [Calls]
                                                                                                    • >>   __NVIC_SetPriority +
                                                                                                      [Calls]
                                                                                                      • >>   __NVIC_SetPriority
                                                                                                      -
                                                                                                      [Called By]
                                                                                                      • >>   HAL_InitTick +
                                                                                                        [Called By]
                                                                                                        • >>   HAL_InitTick
                                                                                                        -

                                                                                                        HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) -

                                                                                                        [Called By]

                                                                                                        • >>   HAL_UART_IRQHandler -
                                                                                                        • >>   UART_Receive_IT +

                                                                                                          HAL_UARTEx_RxEventCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback)) +

                                                                                                          [Called By]

                                                                                                          • >>   HAL_UART_IRQHandler +
                                                                                                          • >>   UART_Receive_IT
                                                                                                          -

                                                                                                          HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback)) -

                                                                                                          [Called By]

                                                                                                          • >>   HAL_UART_IRQHandler -
                                                                                                          • >>   UART_DMAAbortOnError +

                                                                                                            HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback)) +

                                                                                                            [Called By]

                                                                                                            • >>   HAL_UART_IRQHandler +
                                                                                                            • >>   UART_DMAAbortOnError
                                                                                                            -

                                                                                                            HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) -

                                                                                                            [Stack]

                                                                                                            • Max Depth = 104
                                                                                                            • Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                              HAL_UART_IRQHandler (Thumb, 736 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)) +

                                                                                                              [Stack]

                                                                                                              • Max Depth = 288
                                                                                                              • Call Chain = HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                              -
                                                                                                              [Calls]
                                                                                                              • >>   HAL_DMA_Abort_IT -
                                                                                                              • >>   HAL_DMA_Abort -
                                                                                                              • >>   HAL_UART_ErrorCallback -
                                                                                                              • >>   HAL_UARTEx_RxEventCallback -
                                                                                                              • >>   UART_Transmit_IT -
                                                                                                              • >>   UART_Receive_IT -
                                                                                                              • >>   UART_EndTransmit_IT -
                                                                                                              • >>   UART_EndRxTransfer +
                                                                                                                [Calls]
                                                                                                                • >>   HAL_DMA_Abort_IT +
                                                                                                                • >>   HAL_DMA_Abort +
                                                                                                                • >>   HAL_UART_ErrorCallback +
                                                                                                                • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                • >>   UART_Transmit_IT +
                                                                                                                • >>   UART_Receive_IT +
                                                                                                                • >>   UART_EndTransmit_IT +
                                                                                                                • >>   UART_EndRxTransfer

                                                                                                                [Called By]
                                                                                                                • >>   USART3_IRQHandler
                                                                                                                • >>   USART2_IRQHandler
                                                                                                                • >>   USART1_IRQHandler
                                                                                                                -

                                                                                                                HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init)) +

                                                                                                                HAL_UART_Init (Thumb, 118 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Init))

                                                                                                                [Stack]

                                                                                                                • Max Depth = 88
                                                                                                                • Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                -
                                                                                                                [Calls]
                                                                                                                • >>   HAL_UART_MspInit -
                                                                                                                • >>   UART_SetConfig +
                                                                                                                  [Calls]
                                                                                                                  • >>   HAL_UART_MspInit +
                                                                                                                  • >>   UART_SetConfig
                                                                                                                  -
                                                                                                                  [Called By]
                                                                                                                  • >>   MX_USART3_UART_Init -
                                                                                                                  • >>   MX_USART2_UART_Init -
                                                                                                                  • >>   MX_USART1_UART_Init +
                                                                                                                    [Called By]
                                                                                                                    • >>   MX_USART3_UART_Init +
                                                                                                                    • >>   MX_USART2_UART_Init +
                                                                                                                    • >>   MX_USART1_UART_Init
                                                                                                                    -

                                                                                                                    HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit)) +

                                                                                                                    HAL_UART_MspInit (Thumb, 376 bytes, Stack size 32 bytes, usart.o(i.HAL_UART_MspInit))

                                                                                                                    [Stack]

                                                                                                                    • Max Depth = 80
                                                                                                                    • Call Chain = HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                    -
                                                                                                                    [Calls]
                                                                                                                    • >>   HAL_NVIC_SetPriority -
                                                                                                                    • >>   HAL_NVIC_EnableIRQ -
                                                                                                                    • >>   HAL_GPIO_Init +
                                                                                                                      [Calls]
                                                                                                                      • >>   HAL_NVIC_SetPriority +
                                                                                                                      • >>   HAL_NVIC_EnableIRQ +
                                                                                                                      • >>   HAL_GPIO_Init
                                                                                                                      -
                                                                                                                      [Called By]
                                                                                                                      • >>   HAL_UART_Init +
                                                                                                                        [Called By]
                                                                                                                        • >>   HAL_UART_Init
                                                                                                                        -

                                                                                                                        HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT)) +

                                                                                                                        HAL_UART_Receive_IT (Thumb, 44 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT))

                                                                                                                        [Stack]

                                                                                                                        • Max Depth = 24
                                                                                                                        • Call Chain = HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                        -
                                                                                                                        [Calls]
                                                                                                                        • >>   UART_Start_Receive_IT +
                                                                                                                          [Calls]
                                                                                                                          • >>   UART_Start_Receive_IT
                                                                                                                          -
                                                                                                                          [Called By]
                                                                                                                          • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                            [Called By]
                                                                                                                            • >>   rf433_hal_uart_rxcplt_callback
                                                                                                                            • >>   main +
                                                                                                                            • >>   HAL_UART_RxCpltCallback
                                                                                                                            -

                                                                                                                            HAL_UART_RxCpltCallback (Thumb, 18 bytes, Stack size 8 bytes, usart.o(i.HAL_UART_RxCpltCallback)) -

                                                                                                                            [Stack]

                                                                                                                            • Max Depth = 40
                                                                                                                            • Call Chain = HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                                              HAL_UART_RxCpltCallback (Thumb, 54 bytes, Stack size 16 bytes, main.o(i.HAL_UART_RxCpltCallback)) +

                                                                                                                              [Stack]

                                                                                                                              • Max Depth = 224
                                                                                                                              • Call Chain = HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                              -
                                                                                                                              [Calls]
                                                                                                                              • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                [Calls]
                                                                                                                                • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                • >>   HAL_UART_Receive_IT +
                                                                                                                                • >>   CmdParser_FeedByte +
                                                                                                                                • >>   HAL_GetTick
                                                                                                                                -
                                                                                                                                [Called By]
                                                                                                                                • >>   UART_Receive_IT +
                                                                                                                                  [Called By]
                                                                                                                                  • >>   UART_Receive_IT
                                                                                                                                  -

                                                                                                                                  HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit)) +

                                                                                                                                  HAL_UART_Transmit (Thumb, 178 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit))

                                                                                                                                  [Stack]

                                                                                                                                  • Max Depth = 64
                                                                                                                                  • Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                  -
                                                                                                                                  [Calls]
                                                                                                                                  • >>   HAL_GetTick -
                                                                                                                                  • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                                    [Calls]
                                                                                                                                    • >>   HAL_GetTick +
                                                                                                                                    • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                    -
                                                                                                                                    [Called By]
                                                                                                                                    • >>   rf433_hal_uart_tx +
                                                                                                                                      [Called By]
                                                                                                                                      • >>   rf433_hal_uart_tx
                                                                                                                                      -

                                                                                                                                      HAL_UART_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback)) -

                                                                                                                                      [Called By]

                                                                                                                                      • >>   UART_EndTransmit_IT +

                                                                                                                                        HAL_UART_Transmit_IT (Thumb, 56 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT)) +

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 8
                                                                                                                                        • Call Chain = HAL_UART_Transmit_IT +
                                                                                                                                        +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   UART2_Print_TxCpltCallback +
                                                                                                                                        • >>   UART2_Print_Task +
                                                                                                                                        • >>   UART2_Print_Send +
                                                                                                                                        + +

                                                                                                                                        HAL_UART_TxCpltCallback (Thumb, 18 bytes, Stack size 8 bytes, main.o(i.HAL_UART_TxCpltCallback)) +

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 32
                                                                                                                                        • Call Chain = HAL_UART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +
                                                                                                                                        +
                                                                                                                                        [Calls]
                                                                                                                                        • >>   UART2_Print_TxCpltCallback +
                                                                                                                                        +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   UART_EndTransmit_IT

                                                                                                                                        HardFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.HardFault_Handler))
                                                                                                                                        [Address Reference Count : 1]

                                                                                                                                        • startup_stm32f103xb.o(RESET)
                                                                                                                                        -

                                                                                                                                        MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init)) +

                                                                                                                                        IO_Monitor_GetAllStates (Thumb, 34 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetAllStates)) +

                                                                                                                                        [Called By]

                                                                                                                                        • >>   process_cmd_frame +
                                                                                                                                        • >>   IO_Monitor_Init +
                                                                                                                                        + +

                                                                                                                                        IO_Monitor_GetState (Thumb, 20 bytes, Stack size 0 bytes, io_monitor.o(i.IO_Monitor_GetState)) +

                                                                                                                                        [Called By]

                                                                                                                                        • >>   process_cmd_frame +
                                                                                                                                        + +

                                                                                                                                        IO_Monitor_Init (Thumb, 76 bytes, Stack size 16 bytes, io_monitor.o(i.IO_Monitor_Init)) +

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 208
                                                                                                                                        • Call Chain = IO_Monitor_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                        +
                                                                                                                                        [Calls]
                                                                                                                                        • >>   UART2_Print_Printf +
                                                                                                                                        • >>   IO_Monitor_GetAllStates +
                                                                                                                                        • >>   HAL_GPIO_ReadPin +
                                                                                                                                        +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   main +
                                                                                                                                        + +

                                                                                                                                        IO_Monitor_Task (Thumb, 122 bytes, Stack size 24 bytes, io_monitor.o(i.IO_Monitor_Task)) +

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 272
                                                                                                                                        • Call Chain = IO_Monitor_Task ⇒ send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                        +
                                                                                                                                        [Calls]
                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                        • >>   HAL_GPIO_ReadPin +
                                                                                                                                        • >>   send_di_event +
                                                                                                                                        +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   main +
                                                                                                                                        + +

                                                                                                                                        MX_GPIO_Init (Thumb, 258 bytes, Stack size 24 bytes, gpio.o(i.MX_GPIO_Init))

                                                                                                                                        [Stack]

                                                                                                                                        • Max Depth = 60
                                                                                                                                        • Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
                                                                                                                                        -
                                                                                                                                        [Calls]
                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                        • >>   HAL_GPIO_Init +
                                                                                                                                          [Calls]
                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                          • >>   HAL_GPIO_Init

                                                                                                                                          [Called By]
                                                                                                                                          • >>   main
                                                                                                                                          -

                                                                                                                                          MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init)) +

                                                                                                                                          MX_SPI2_Init (Thumb, 58 bytes, Stack size 8 bytes, spi.o(i.MX_SPI2_Init))

                                                                                                                                          [Stack]

                                                                                                                                          • Max Depth = 84
                                                                                                                                          • Call Chain = MX_SPI2_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                          -
                                                                                                                                          [Calls]
                                                                                                                                          • >>   HAL_SPI_Init -
                                                                                                                                          • >>   Error_Handler +
                                                                                                                                            [Calls]
                                                                                                                                            • >>   HAL_SPI_Init +
                                                                                                                                            • >>   Error_Handler

                                                                                                                                            [Called By]
                                                                                                                                            • >>   main
                                                                                                                                            -

                                                                                                                                            MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init)) +

                                                                                                                                            MX_USART1_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART1_UART_Init))

                                                                                                                                            [Stack]

                                                                                                                                            • Max Depth = 96
                                                                                                                                            • Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                            -
                                                                                                                                            [Calls]
                                                                                                                                            • >>   HAL_UART_Init -
                                                                                                                                            • >>   Error_Handler +
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_UART_Init +
                                                                                                                                              • >>   Error_Handler

                                                                                                                                              [Called By]
                                                                                                                                              • >>   main
                                                                                                                                              -

                                                                                                                                              MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init)) +

                                                                                                                                              MX_USART2_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART2_UART_Init))

                                                                                                                                              [Stack]

                                                                                                                                              • Max Depth = 96
                                                                                                                                              • Call Chain = MX_USART2_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                              -
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_UART_Init -
                                                                                                                                              • >>   Error_Handler +
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_UART_Init +
                                                                                                                                                • >>   Error_Handler

                                                                                                                                                [Called By]
                                                                                                                                                • >>   main
                                                                                                                                                -

                                                                                                                                                MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init)) +

                                                                                                                                                MX_USART3_UART_Init (Thumb, 46 bytes, Stack size 8 bytes, usart.o(i.MX_USART3_UART_Init))

                                                                                                                                                [Stack]

                                                                                                                                                • Max Depth = 96
                                                                                                                                                • Call Chain = MX_USART3_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                -
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_UART_Init -
                                                                                                                                                • >>   Error_Handler +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   HAL_UART_Init +
                                                                                                                                                  • >>   Error_Handler

                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   main
                                                                                                                                                  @@ -635,24 +814,43 @@ Global Symbols

                                                                                                                                                  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler))
                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                  • startup_stm32f103xb.o(RESET)
                                                                                                                                                  +

                                                                                                                                                  Relay_Init (Thumb, 48 bytes, Stack size 8 bytes, relay_control.o(i.Relay_Init)) +

                                                                                                                                                  [Stack]

                                                                                                                                                  • Max Depth = 200
                                                                                                                                                  • Call Chain = Relay_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                  +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   UART2_Print_Printf +
                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                  +
                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   main +
                                                                                                                                                  + +

                                                                                                                                                  Relay_SetState (Thumb, 140 bytes, Stack size 24 bytes, relay_control.o(i.Relay_SetState)) +

                                                                                                                                                  [Stack]

                                                                                                                                                  • Max Depth = 216
                                                                                                                                                  • Call Chain = Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                  +
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   UART2_Print_Printf +
                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                  +
                                                                                                                                                  [Called By]
                                                                                                                                                  • >>   process_cmd_frame +
                                                                                                                                                  +

                                                                                                                                                  SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.SVC_Handler))
                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                  • startup_stm32f103xb.o(RESET)

                                                                                                                                                  SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.SysTick_Handler))

                                                                                                                                                  [Stack]

                                                                                                                                                  • Max Depth = 20
                                                                                                                                                  • Call Chain = SysTick_Handler ⇒ systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                  -
                                                                                                                                                  [Calls]
                                                                                                                                                  • >>   HAL_IncTick -
                                                                                                                                                  • >>   systick_interrupt_1ms_callback +
                                                                                                                                                    [Calls]
                                                                                                                                                    • >>   HAL_IncTick +
                                                                                                                                                    • >>   systick_interrupt_1ms_callback

                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                                                                                    -

                                                                                                                                                    SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config)) +

                                                                                                                                                    SystemClock_Config (Thumb, 102 bytes, Stack size 64 bytes, main.o(i.SystemClock_Config))

                                                                                                                                                    [Stack]

                                                                                                                                                    • Max Depth = 144
                                                                                                                                                    • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ __NVIC_SetPriority
                                                                                                                                                    -
                                                                                                                                                    [Calls]
                                                                                                                                                    • >>   HAL_RCC_OscConfig -
                                                                                                                                                    • >>   HAL_RCC_ClockConfig -
                                                                                                                                                    • >>   Error_Handler -
                                                                                                                                                    • >>   __aeabi_memclr4 +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   HAL_RCC_OscConfig +
                                                                                                                                                      • >>   HAL_RCC_ClockConfig +
                                                                                                                                                      • >>   Error_Handler +
                                                                                                                                                      • >>   __aeabi_memclr4

                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   main
                                                                                                                                                      @@ -660,365 +858,594 @@ Global Symbols

                                                                                                                                                      SystemInit (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
                                                                                                                                                      [Address Reference Count : 1]

                                                                                                                                                      • startup_stm32f103xb.o(.text)
                                                                                                                                                      -

                                                                                                                                                      UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT)) +

                                                                                                                                                      UART2_Print_Init (Thumb, 38 bytes, Stack size 8 bytes, uart2_print.o(i.UART2_Print_Init)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 200
                                                                                                                                                      • Call Chain = UART2_Print_Init ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   UART2_Print_Printf +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   main +
                                                                                                                                                      + +

                                                                                                                                                      UART2_Print_Printf (Thumb, 62 bytes, Stack size 160 bytes, uart2_print.o(i.UART2_Print_Printf)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 192
                                                                                                                                                      • Call Chain = UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   UART2_Print_Send +
                                                                                                                                                      • >>   vsnprintf +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   Relay_SetState +
                                                                                                                                                      • >>   process_cmd_frame +
                                                                                                                                                      • >>   UART2_Print_Init +
                                                                                                                                                      • >>   Relay_Init +
                                                                                                                                                      • >>   IO_Monitor_Init +
                                                                                                                                                      • >>   CmdParser_Init +
                                                                                                                                                      • >>   CmdParser_FeedByte +
                                                                                                                                                      • >>   send_di_event +
                                                                                                                                                      + +

                                                                                                                                                      UART2_Print_Send (Thumb, 170 bytes, Stack size 24 bytes, uart2_print.o(i.UART2_Print_Send)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 32
                                                                                                                                                      • Call Chain = UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   UART2_Print_String +
                                                                                                                                                      • >>   UART2_Print_Printf +
                                                                                                                                                      • >>   fputc +
                                                                                                                                                      + +

                                                                                                                                                      UART2_Print_String (Thumb, 28 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_String)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 48
                                                                                                                                                      • Call Chain = UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   UART2_Print_Send +
                                                                                                                                                      • >>   strlen +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   send_response_ok +
                                                                                                                                                      • >>   send_response_err +
                                                                                                                                                      • >>   send_di_event +
                                                                                                                                                      + +

                                                                                                                                                      UART2_Print_Task (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_Task)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 24
                                                                                                                                                      • Call Chain = UART2_Print_Task ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   main +
                                                                                                                                                      + +

                                                                                                                                                      UART2_Print_TxCpltCallback (Thumb, 98 bytes, Stack size 16 bytes, uart2_print.o(i.UART2_Print_TxCpltCallback)) +

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 24
                                                                                                                                                      • Call Chain = UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Calls]
                                                                                                                                                      • >>   HAL_UART_Transmit_IT +
                                                                                                                                                      +
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                      + +

                                                                                                                                                      UART_Start_Receive_IT (Thumb, 64 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT))

                                                                                                                                                      [Stack]

                                                                                                                                                      • Max Depth = 8
                                                                                                                                                      • Call Chain = UART_Start_Receive_IT
                                                                                                                                                      -
                                                                                                                                                      [Called By]
                                                                                                                                                      • >>   HAL_UART_Receive_IT +
                                                                                                                                                        [Called By]
                                                                                                                                                        • >>   HAL_UART_Receive_IT

                                                                                                                                                        USART1_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART1_IRQHandler)) -

                                                                                                                                                        [Stack]

                                                                                                                                                        • Max Depth = 112
                                                                                                                                                        • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                                                                          [Stack]
                                                                                                                                                          • Max Depth = 296
                                                                                                                                                          • Call Chain = USART1_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                          -
                                                                                                                                                          [Calls]
                                                                                                                                                          • >>   HAL_UART_IRQHandler +
                                                                                                                                                            [Calls]
                                                                                                                                                            • >>   HAL_UART_IRQHandler

                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                            • startup_stm32f103xb.o(RESET)

                                                                                                                                                            USART2_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART2_IRQHandler)) -

                                                                                                                                                            [Stack]

                                                                                                                                                            • Max Depth = 112
                                                                                                                                                            • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                                                                              [Stack]
                                                                                                                                                              • Max Depth = 296
                                                                                                                                                              • Call Chain = USART2_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                              -
                                                                                                                                                              [Calls]
                                                                                                                                                              • >>   HAL_UART_IRQHandler +
                                                                                                                                                                [Calls]
                                                                                                                                                                • >>   HAL_UART_IRQHandler

                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                • startup_stm32f103xb.o(RESET)

                                                                                                                                                                USART3_IRQHandler (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_it.o(i.USART3_IRQHandler)) -

                                                                                                                                                                [Stack]

                                                                                                                                                                • Max Depth = 112
                                                                                                                                                                • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                                                                                  [Stack]
                                                                                                                                                                  • Max Depth = 296
                                                                                                                                                                  • Call Chain = USART3_IRQHandler ⇒ HAL_UART_IRQHandler ⇒ UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                  -
                                                                                                                                                                  [Calls]
                                                                                                                                                                  • >>   HAL_UART_IRQHandler +
                                                                                                                                                                    [Calls]
                                                                                                                                                                    • >>   HAL_UART_IRQHandler

                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                    • startup_stm32f103xb.o(RESET)

                                                                                                                                                                    UsageFault_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.UsageFault_Handler))
                                                                                                                                                                    [Address Reference Count : 1]

                                                                                                                                                                    • startup_stm32f103xb.o(RESET)
                                                                                                                                                                    -

                                                                                                                                                                    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) - -

                                                                                                                                                                    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) - -

                                                                                                                                                                    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) - -

                                                                                                                                                                    gpio_led_rx_off (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_off)) -

                                                                                                                                                                    [Stack]

                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                    • Call Chain = gpio_led_rx_off -
                                                                                                                                                                    -
                                                                                                                                                                    [Calls]
                                                                                                                                                                    • >>   HAL_GPIO_WritePin -
                                                                                                                                                                    -
                                                                                                                                                                    [Called By]
                                                                                                                                                                    • >>   rx_led_control +

                                                                                                                                                                      __0printf (Thumb, 22 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

                                                                                                                                                                      [Calls]

                                                                                                                                                                      • >>   _printf_core
                                                                                                                                                                      -

                                                                                                                                                                      gpio_led_rx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_rx_on)) -

                                                                                                                                                                      [Stack]

                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                      • Call Chain = gpio_led_rx_on +

                                                                                                                                                                        __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

                                                                                                                                                                        __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf)) +

                                                                                                                                                                        [Stack]

                                                                                                                                                                        • Max Depth = 24
                                                                                                                                                                        • Call Chain = __2printf
                                                                                                                                                                        -
                                                                                                                                                                        [Calls]
                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                        -
                                                                                                                                                                        [Called By]
                                                                                                                                                                        • >>   rx_led_control +
                                                                                                                                                                          [Called By]
                                                                                                                                                                          • >>   main +
                                                                                                                                                                          • >>   rf433_transmit
                                                                                                                                                                          -

                                                                                                                                                                          main (Thumb, 68 bytes, Stack size 0 bytes, main.o(i.main)) -

                                                                                                                                                                          [Stack]

                                                                                                                                                                          • Max Depth = 328
                                                                                                                                                                          • Call Chain = main ⇒ rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int +

                                                                                                                                                                            __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

                                                                                                                                                                            printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

                                                                                                                                                                            __0snprintf (Thumb, 48 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) +

                                                                                                                                                                            [Calls]

                                                                                                                                                                            • >>   _printf_core
                                                                                                                                                                            -
                                                                                                                                                                            [Calls]
                                                                                                                                                                            • >>   rf433_init -
                                                                                                                                                                            • >>   MX_USART3_UART_Init -
                                                                                                                                                                            • >>   MX_USART2_UART_Init -
                                                                                                                                                                            • >>   MX_USART1_UART_Init -
                                                                                                                                                                            • >>   MX_SPI2_Init -
                                                                                                                                                                            • >>   MX_GPIO_Init -
                                                                                                                                                                            • >>   HAL_UART_Receive_IT -
                                                                                                                                                                            • >>   HAL_Init -
                                                                                                                                                                            • >>   SystemClock_Config -
                                                                                                                                                                            • >>   HAL_Delay -
                                                                                                                                                                            • >>   rf433_rx_app_task -
                                                                                                                                                                            • >>   rf433_rx_app_start -
                                                                                                                                                                            • >>   rf433_rx_app_init + +

                                                                                                                                                                              __1snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) + +

                                                                                                                                                                              __2snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 40
                                                                                                                                                                              • Call Chain = __2snprintf +
                                                                                                                                                                              +
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   send_response_ok +
                                                                                                                                                                              • >>   send_response_err +
                                                                                                                                                                              • >>   process_cmd_frame +
                                                                                                                                                                              • >>   tx_build_packet +
                                                                                                                                                                              • >>   send_di_event +
                                                                                                                                                                              + +

                                                                                                                                                                              __c89snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) + +

                                                                                                                                                                              snprintf (Thumb, 0 bytes, Stack size 40 bytes, printfa.o(i.__0snprintf), UNUSED) + +

                                                                                                                                                                              __0vsnprintf (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) +

                                                                                                                                                                              [Calls]

                                                                                                                                                                              • >>   _printf_core +
                                                                                                                                                                              + +

                                                                                                                                                                              __1vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                              __2vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                              __c89vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf), UNUSED) + +

                                                                                                                                                                              vsnprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsnprintf)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                              • Call Chain = vsnprintf +
                                                                                                                                                                              +
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   UART2_Print_Printf +
                                                                                                                                                                              + +

                                                                                                                                                                              __aeabi_errno_addr (Thumb, 4 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr)) +

                                                                                                                                                                              [Called By]

                                                                                                                                                                              • >>   _strtoul +
                                                                                                                                                                              • >>   strtol +
                                                                                                                                                                              • >>   atoi +
                                                                                                                                                                              + +

                                                                                                                                                                              __rt_errno_addr (Thumb, 0 bytes, Stack size 0 bytes, errno.o(i.__aeabi_errno_addr), UNUSED) + +

                                                                                                                                                                              __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) + +

                                                                                                                                                                              __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) + +

                                                                                                                                                                              __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) + +

                                                                                                                                                                              fputc (Thumb, 16 bytes, Stack size 16 bytes, uart2_print.o(i.fputc)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 48
                                                                                                                                                                              • Call Chain = fputc ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                              +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   UART2_Print_Send +
                                                                                                                                                                              +
                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                              • printfa.o(i.__0printf) +
                                                                                                                                                                              +

                                                                                                                                                                              gpio_led_tx_off (Thumb, 16 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_off)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                              • Call Chain = gpio_led_tx_off +
                                                                                                                                                                              +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   HAL_GPIO_WritePin +
                                                                                                                                                                              +
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   tx_led_control +
                                                                                                                                                                              + +

                                                                                                                                                                              gpio_led_tx_on (Thumb, 14 bytes, Stack size 8 bytes, gpio.o(i.gpio_led_tx_on)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                              • Call Chain = gpio_led_tx_on +
                                                                                                                                                                              +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   HAL_GPIO_WritePin +
                                                                                                                                                                              +
                                                                                                                                                                              [Called By]
                                                                                                                                                                              • >>   tx_led_control +
                                                                                                                                                                              + +

                                                                                                                                                                              main (Thumb, 142 bytes, Stack size 0 bytes, main.o(i.main)) +

                                                                                                                                                                              [Stack]

                                                                                                                                                                              • Max Depth = 288
                                                                                                                                                                              • Call Chain = main ⇒ CmdParser_Task ⇒ process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                              +
                                                                                                                                                                              [Calls]
                                                                                                                                                                              • >>   rf433_init +
                                                                                                                                                                              • >>   UART2_Print_Task +
                                                                                                                                                                              • >>   UART2_Print_Init +
                                                                                                                                                                              • >>   Relay_Init +
                                                                                                                                                                              • >>   MX_USART3_UART_Init +
                                                                                                                                                                              • >>   MX_USART2_UART_Init +
                                                                                                                                                                              • >>   MX_USART1_UART_Init +
                                                                                                                                                                              • >>   MX_SPI2_Init +
                                                                                                                                                                              • >>   MX_GPIO_Init +
                                                                                                                                                                              • >>   IO_Monitor_Task +
                                                                                                                                                                              • >>   IO_Monitor_Init +
                                                                                                                                                                              • >>   HAL_UART_Receive_IT +
                                                                                                                                                                              • >>   HAL_Init +
                                                                                                                                                                              • >>   CmdParser_Task +
                                                                                                                                                                              • >>   CmdParser_Init +
                                                                                                                                                                              • >>   SystemClock_Config +
                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                              • >>   rf433_tx_app_start +
                                                                                                                                                                              • >>   rf433_tx_app_init +
                                                                                                                                                                              • >>   __2printf

                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                              • entry9a.o(.ARM.Collect$$$$0000000B)
                                                                                                                                                                              -

                                                                                                                                                                              rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) -

                                                                                                                                                                              [Called By]

                                                                                                                                                                              • >>   uart1_rx_timeout_1ms_callback +

                                                                                                                                                                                rf433_hal_1ms_callback (Thumb, 30 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_1ms_callback)) +

                                                                                                                                                                                [Called By]

                                                                                                                                                                                • >>   uart1_rx_timeout_1ms_callback
                                                                                                                                                                                -

                                                                                                                                                                                rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait)) +

                                                                                                                                                                                rf433_hal_aux_wait (Thumb, 58 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_aux_wait))

                                                                                                                                                                                [Stack]

                                                                                                                                                                                • Max Depth = 24
                                                                                                                                                                                • Call Chain = rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                -
                                                                                                                                                                                [Calls]
                                                                                                                                                                                • >>   HAL_Delay -
                                                                                                                                                                                • >>   HAL_GPIO_ReadPin -
                                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                                  [Calls]
                                                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                                                  • >>   HAL_Delay +
                                                                                                                                                                                  • >>   HAL_GPIO_ReadPin
                                                                                                                                                                                  -
                                                                                                                                                                                  [Called By]
                                                                                                                                                                                  • >>   rf433_set_config -
                                                                                                                                                                                  • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                    [Called By]
                                                                                                                                                                                    • >>   rf433_set_config +
                                                                                                                                                                                    • >>   rf433_hal_set_work_mode
                                                                                                                                                                                    -

                                                                                                                                                                                    rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) -

                                                                                                                                                                                    [Called By]

                                                                                                                                                                                    • >>   rf433_init +

                                                                                                                                                                                      rf433_hal_deinit (Thumb, 22 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_deinit)) +

                                                                                                                                                                                      [Called By]

                                                                                                                                                                                      • >>   rf433_init
                                                                                                                                                                                      -

                                                                                                                                                                                      rf433_hal_fifo_clear (Thumb, 8 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_clear)) -

                                                                                                                                                                                      [Stack]

                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                      • Call Chain = rf433_hal_fifo_clear -
                                                                                                                                                                                      -
                                                                                                                                                                                      [Calls]
                                                                                                                                                                                      • >>   rf433_fifo_clear -
                                                                                                                                                                                      -
                                                                                                                                                                                      [Called By]
                                                                                                                                                                                      • >>   rf433_rx_start +

                                                                                                                                                                                        rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) +

                                                                                                                                                                                        [Called By]

                                                                                                                                                                                        • >>   rf433_init
                                                                                                                                                                                        -

                                                                                                                                                                                        rf433_hal_fifo_get_length (Thumb, 12 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_fifo_get_length)) -

                                                                                                                                                                                        [Stack]

                                                                                                                                                                                        • Max Depth = 8
                                                                                                                                                                                        • Call Chain = rf433_hal_fifo_get_length -
                                                                                                                                                                                        -
                                                                                                                                                                                        [Calls]
                                                                                                                                                                                        • >>   rf433_fifo_get_length -
                                                                                                                                                                                        -
                                                                                                                                                                                        [Called By]
                                                                                                                                                                                        • >>   uart1_check_rx_done -
                                                                                                                                                                                        - -

                                                                                                                                                                                        rf433_hal_fifo_read (Thumb, 20 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_fifo_read)) -

                                                                                                                                                                                        [Stack]

                                                                                                                                                                                        • Max Depth = 28
                                                                                                                                                                                        • Call Chain = rf433_hal_fifo_read ⇒ rf433_fifo_read -
                                                                                                                                                                                        -
                                                                                                                                                                                        [Calls]
                                                                                                                                                                                        • >>   rf433_fifo_read -
                                                                                                                                                                                        -
                                                                                                                                                                                        [Called By]
                                                                                                                                                                                        • >>   uart1_check_rx_done -
                                                                                                                                                                                        - -

                                                                                                                                                                                        rf433_hal_init (Thumb, 36 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_hal_init)) -

                                                                                                                                                                                        [Called By]

                                                                                                                                                                                        • >>   rf433_init -
                                                                                                                                                                                        - -

                                                                                                                                                                                        rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode)) +

                                                                                                                                                                                        rf433_hal_set_work_mode (Thumb, 150 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_set_work_mode))

                                                                                                                                                                                        [Stack]

                                                                                                                                                                                        • Max Depth = 40
                                                                                                                                                                                        • Call Chain = rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                        -
                                                                                                                                                                                        [Calls]
                                                                                                                                                                                        • >>   HAL_GPIO_WritePin -
                                                                                                                                                                                        • >>   HAL_Delay -
                                                                                                                                                                                        • >>   rf433_hal_aux_wait +
                                                                                                                                                                                          [Calls]
                                                                                                                                                                                          • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                          • >>   HAL_Delay +
                                                                                                                                                                                          • >>   rf433_hal_aux_wait
                                                                                                                                                                                          -
                                                                                                                                                                                          [Called By]
                                                                                                                                                                                          • >>   rf433_set_work_mode -
                                                                                                                                                                                          • >>   rf433_set_config +
                                                                                                                                                                                            [Called By]
                                                                                                                                                                                            • >>   rf433_set_work_mode +
                                                                                                                                                                                            • >>   rf433_set_config
                                                                                                                                                                                            -

                                                                                                                                                                                            rf433_hal_uart_rxcplt_callback (Thumb, 38 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_uart_rxcplt_callback)) +

                                                                                                                                                                                            rf433_hal_uart_rxcplt_callback (Thumb, 38 bytes, Stack size 8 bytes, rf433_hal.o(i.rf433_hal_uart_rxcplt_callback))

                                                                                                                                                                                            [Stack]

                                                                                                                                                                                            • Max Depth = 32
                                                                                                                                                                                            • Call Chain = rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
                                                                                                                                                                                            -
                                                                                                                                                                                            [Calls]
                                                                                                                                                                                            • >>   HAL_UART_Receive_IT -
                                                                                                                                                                                            • >>   rf433_fifo_write +
                                                                                                                                                                                              [Calls]
                                                                                                                                                                                              • >>   HAL_UART_Receive_IT +
                                                                                                                                                                                              • >>   rf433_fifo_write
                                                                                                                                                                                              -
                                                                                                                                                                                              [Called By]
                                                                                                                                                                                              • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback
                                                                                                                                                                                                -

                                                                                                                                                                                                rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx)) +

                                                                                                                                                                                                rf433_hal_uart_tx (Thumb, 44 bytes, Stack size 16 bytes, rf433_hal.o(i.rf433_hal_uart_tx))

                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                • Max Depth = 80
                                                                                                                                                                                                • Call Chain = rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                -
                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                • >>   HAL_UART_Transmit +
                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                  • >>   HAL_UART_Transmit
                                                                                                                                                                                                  -
                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                  • >>   rf433_send_config_command +
                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                    • >>   rf433_transmit +
                                                                                                                                                                                                    • >>   rf433_send_config_command
                                                                                                                                                                                                    -

                                                                                                                                                                                                    rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init)) +

                                                                                                                                                                                                    rf433_init (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_init))

                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                    • Max Depth = 120
                                                                                                                                                                                                    • Call Chain = rf433_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                    -
                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                    • >>   rf433_set_config -
                                                                                                                                                                                                    • >>   rf433_hal_init -
                                                                                                                                                                                                    • >>   rf433_hal_deinit +
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   rf433_set_config +
                                                                                                                                                                                                      • >>   rf433_hal_init +
                                                                                                                                                                                                      • >>   rf433_hal_deinit

                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   main
                                                                                                                                                                                                      -

                                                                                                                                                                                                      rf433_rx_app_init (Thumb, 74 bytes, Stack size 16 bytes, rf433_rx_app.o(i.rf433_rx_app_init)) -

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 120
                                                                                                                                                                                                      • Call Chain = rf433_rx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   rf433_set_work_mode -
                                                                                                                                                                                                      • >>   rf433_set_config -
                                                                                                                                                                                                      • >>   __aeabi_memclr4 -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   main -
                                                                                                                                                                                                      - -

                                                                                                                                                                                                      rf433_rx_app_parse_packet (Thumb, 72 bytes, Stack size 24 bytes, rf433_rx_app.o(i.rf433_rx_app_parse_packet)) -

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 240
                                                                                                                                                                                                      • Call Chain = rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   __0sscanf -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   rf433_rx_app_task -
                                                                                                                                                                                                      - -

                                                                                                                                                                                                      rf433_rx_app_start (Thumb, 28 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rf433_rx_app_start)) -

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 24
                                                                                                                                                                                                      • Call Chain = rf433_rx_app_start ⇒ rf433_rx_start ⇒ rf433_hal_fifo_clear -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   rf433_rx_start -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   main -
                                                                                                                                                                                                      - -

                                                                                                                                                                                                      rf433_rx_app_task (Thumb, 154 bytes, Stack size 88 bytes, rf433_rx_app.o(i.rf433_rx_app_task)) -

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 328
                                                                                                                                                                                                      • Call Chain = rf433_rx_app_task ⇒ rf433_rx_app_parse_packet ⇒ __0sscanf ⇒ __vfscanf_char ⇒ __vfscanf ⇒ _scanf_int -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   uart1_check_rx_done -
                                                                                                                                                                                                      • >>   HAL_Delay -
                                                                                                                                                                                                      • >>   rf433_rx_app_parse_packet -
                                                                                                                                                                                                      • >>   rx_update_stats -
                                                                                                                                                                                                      • >>   rx_led_control -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   main -
                                                                                                                                                                                                      - -

                                                                                                                                                                                                      rf433_rx_start (Thumb, 50 bytes, Stack size 8 bytes, rf433.o(i.rf433_rx_start)) -

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                      • Call Chain = rf433_rx_start ⇒ rf433_hal_fifo_clear -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   rf433_hal_fifo_clear -
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                      • >>   rf433_rx_app_start -
                                                                                                                                                                                                      - -

                                                                                                                                                                                                      rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config)) +

                                                                                                                                                                                                      rf433_set_config (Thumb, 84 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_config))

                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                      • Max Depth = 104
                                                                                                                                                                                                      • Call Chain = rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                      -
                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                      • >>   HAL_Delay -
                                                                                                                                                                                                      • >>   rf433_send_config_command -
                                                                                                                                                                                                      • >>   rf433_hal_set_work_mode -
                                                                                                                                                                                                      • >>   rf433_hal_aux_wait +
                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   HAL_Delay +
                                                                                                                                                                                                        • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                        • >>   rf433_hal_aux_wait +
                                                                                                                                                                                                        • >>   rf433_send_config_command
                                                                                                                                                                                                        -
                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                        • >>   rf433_init -
                                                                                                                                                                                                        • >>   rf433_rx_app_init +
                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   rf433_init +
                                                                                                                                                                                                          • >>   rf433_tx_app_init
                                                                                                                                                                                                          -

                                                                                                                                                                                                          rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode)) +

                                                                                                                                                                                                          rf433_set_work_mode (Thumb, 24 bytes, Stack size 16 bytes, rf433.o(i.rf433_set_work_mode))

                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                          • Max Depth = 56
                                                                                                                                                                                                          • Call Chain = rf433_set_work_mode ⇒ rf433_hal_set_work_mode ⇒ rf433_hal_aux_wait ⇒ HAL_Delay
                                                                                                                                                                                                          -
                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                          • >>   rf433_hal_set_work_mode +
                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                            • >>   rf433_hal_set_work_mode
                                                                                                                                                                                                            -
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   rf433_rx_app_init +
                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   rf433_tx_app_init
                                                                                                                                                                                                              -

                                                                                                                                                                                                              systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback)) +

                                                                                                                                                                                                              rf433_transmit (Thumb, 58 bytes, Stack size 16 bytes, rf433.o(i.rf433_transmit)) +

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 96
                                                                                                                                                                                                              • Call Chain = rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                              • >>   __2printf +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   rf433_tx_app_task +
                                                                                                                                                                                                              + +

                                                                                                                                                                                                              rf433_tx_app_init (Thumb, 70 bytes, Stack size 16 bytes, rf433_tx_app.o(i.rf433_tx_app_init)) +

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 120
                                                                                                                                                                                                              • Call Chain = rf433_tx_app_init ⇒ rf433_set_config ⇒ rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   rf433_set_work_mode +
                                                                                                                                                                                                              • >>   rf433_set_config +
                                                                                                                                                                                                              • >>   __aeabi_memclr4 +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                              + +

                                                                                                                                                                                                              rf433_tx_app_start (Thumb, 40 bytes, Stack size 0 bytes, rf433_tx_app.o(i.rf433_tx_app_start)) +

                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                              + +

                                                                                                                                                                                                              rf433_tx_app_task (Thumb, 206 bytes, Stack size 48 bytes, rf433_tx_app.o(i.rf433_tx_app_task)) +

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 144
                                                                                                                                                                                                              • Call Chain = rf433_tx_app_task ⇒ rf433_transmit ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   rf433_transmit +
                                                                                                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                                                                                              • >>   HAL_Delay +
                                                                                                                                                                                                              • >>   tx_led_control +
                                                                                                                                                                                                              • >>   tx_build_packet +
                                                                                                                                                                                                              +
                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                              • >>   main +
                                                                                                                                                                                                              + +

                                                                                                                                                                                                              systick_interrupt_1ms_callback (Thumb, 24 bytes, Stack size 8 bytes, systick.o(i.systick_interrupt_1ms_callback))

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 12
                                                                                                                                                                                                              • Call Chain = systick_interrupt_1ms_callback ⇒ uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                              -
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   uart1_rx_timeout_1ms_callback +
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   uart1_rx_timeout_1ms_callback

                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   SysTick_Handler
                                                                                                                                                                                                                -

                                                                                                                                                                                                                uart1_check_rx_done (Thumb, 76 bytes, Stack size 24 bytes, rf433_hal.o(i.uart1_check_rx_done)) -

                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                • Max Depth = 52
                                                                                                                                                                                                                • Call Chain = uart1_check_rx_done ⇒ rf433_hal_fifo_read ⇒ rf433_fifo_read -
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   rf433_hal_fifo_read -
                                                                                                                                                                                                                • >>   rf433_hal_fifo_get_length -
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   rf433_rx_app_task -
                                                                                                                                                                                                                - -

                                                                                                                                                                                                                uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback)) +

                                                                                                                                                                                                                uart1_rx_timeout_1ms_callback (Thumb, 8 bytes, Stack size 4 bytes, rf433_hal.o(i.uart1_rx_timeout_1ms_callback))

                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                • Max Depth = 4
                                                                                                                                                                                                                • Call Chain = uart1_rx_timeout_1ms_callback
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   rf433_hal_1ms_callback +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   rf433_hal_1ms_callback
                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   systick_interrupt_1ms_callback +
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   systick_interrupt_1ms_callback

                                                                                                                                                                                                                    Local Symbols

                                                                                                                                                                                                                    -

                                                                                                                                                                                                                    rx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_rx_app.o(i.rx_led_control)) -

                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                    • Max Depth = 16
                                                                                                                                                                                                                    • Call Chain = rx_led_control ⇒ gpio_led_rx_on +

                                                                                                                                                                                                                      tx_build_packet (Thumb, 54 bytes, Stack size 32 bytes, rf433_tx_app.o(i.tx_build_packet)) +

                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                      • Max Depth = 72
                                                                                                                                                                                                                      • Call Chain = tx_build_packet ⇒ __2snprintf
                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                      • >>   gpio_led_rx_on -
                                                                                                                                                                                                                      • >>   gpio_led_rx_off +
                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                        • >>   __2snprintf
                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                        • >>   rf433_rx_app_task +
                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                          • >>   rf433_tx_app_task
                                                                                                                                                                                                                          -

                                                                                                                                                                                                                          rx_update_stats (Thumb, 56 bytes, Stack size 0 bytes, rf433_rx_app.o(i.rx_update_stats)) -

                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                          • >>   rf433_rx_app_task +

                                                                                                                                                                                                                            tx_led_control (Thumb, 18 bytes, Stack size 8 bytes, rf433_tx_app.o(i.tx_led_control)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 16
                                                                                                                                                                                                                            • Call Chain = tx_led_control ⇒ gpio_led_tx_on +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   gpio_led_tx_on +
                                                                                                                                                                                                                            • >>   gpio_led_tx_off +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   rf433_tx_app_task
                                                                                                                                                                                                                            -

                                                                                                                                                                                                                            RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay)) +

                                                                                                                                                                                                                            calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, cmd_parser.o(i.calc_checksum)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = calc_checksum +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   send_response_ok +
                                                                                                                                                                                                                            • >>   send_response_err +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            hex_char_to_val (Thumb, 54 bytes, Stack size 0 bytes, cmd_parser.o(i.hex_char_to_val)) +

                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                            • >>   hex_to_byte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            hex_to_byte (Thumb, 28 bytes, Stack size 16 bytes, cmd_parser.o(i.hex_to_byte)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 16
                                                                                                                                                                                                                            • Call Chain = hex_to_byte +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   hex_char_to_val +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            is_str_empty (Thumb, 16 bytes, Stack size 0 bytes, cmd_parser.o(i.is_str_empty)) +

                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                            • >>   process_cmd_frame +
                                                                                                                                                                                                                            • >>   is_str_numeric +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            is_str_numeric (Thumb, 48 bytes, Stack size 8 bytes, cmd_parser.o(i.is_str_numeric)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = is_str_numeric +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   is_str_empty +
                                                                                                                                                                                                                            • >>   __rt_ctype_table +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   process_cmd_frame +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            is_valid_cmd_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_cmd_char)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = is_valid_cmd_char +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   __rt_ctype_table +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            is_valid_param_char (Thumb, 38 bytes, Stack size 8 bytes, cmd_parser.o(i.is_valid_param_char)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = is_valid_param_char +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   __rt_ctype_table +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            process_cmd_frame (Thumb, 434 bytes, Stack size 64 bytes, cmd_parser.o(i.process_cmd_frame)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 280
                                                                                                                                                                                                                            • Call Chain = process_cmd_frame ⇒ Relay_SetState ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   UART2_Print_Printf +
                                                                                                                                                                                                                            • >>   Relay_SetState +
                                                                                                                                                                                                                            • >>   IO_Monitor_GetState +
                                                                                                                                                                                                                            • >>   IO_Monitor_GetAllStates +
                                                                                                                                                                                                                            • >>   send_response_ok +
                                                                                                                                                                                                                            • >>   send_response_err +
                                                                                                                                                                                                                            • >>   is_str_numeric +
                                                                                                                                                                                                                            • >>   is_str_empty +
                                                                                                                                                                                                                            • >>   strcmp +
                                                                                                                                                                                                                            • >>   atoi +
                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   CmdParser_Task +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            reset_parser (Thumb, 32 bytes, Stack size 8 bytes, cmd_parser.o(i.reset_parser)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = reset_parser +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   __aeabi_memclr +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   CmdParser_Task +
                                                                                                                                                                                                                            • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            send_response_err (Thumb, 60 bytes, Stack size 48 bytes, cmd_parser.o(i.send_response_err)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 96
                                                                                                                                                                                                                            • Call Chain = send_response_err ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   UART2_Print_String +
                                                                                                                                                                                                                            • >>   calc_checksum +
                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   process_cmd_frame +
                                                                                                                                                                                                                            • >>   CmdParser_FeedByte +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            send_response_ok (Thumb, 60 bytes, Stack size 80 bytes, cmd_parser.o(i.send_response_ok)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 128
                                                                                                                                                                                                                            • Call Chain = send_response_ok ⇒ UART2_Print_String ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   UART2_Print_String +
                                                                                                                                                                                                                            • >>   calc_checksum +
                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   process_cmd_frame +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            calc_checksum (Thumb, 26 bytes, Stack size 8 bytes, io_monitor.o(i.calc_checksum)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = calc_checksum +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   send_di_event +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            send_di_event (Thumb, 82 bytes, Stack size 56 bytes, io_monitor.o(i.send_di_event)) +

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 248
                                                                                                                                                                                                                            • Call Chain = send_di_event ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   UART2_Print_String +
                                                                                                                                                                                                                            • >>   UART2_Print_Printf +
                                                                                                                                                                                                                            • >>   calc_checksum +
                                                                                                                                                                                                                            • >>   __2snprintf +
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   IO_Monitor_Task +
                                                                                                                                                                                                                            + +

                                                                                                                                                                                                                            RCC_Delay (Thumb, 36 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(i.RCC_Delay))

                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                            • Call Chain = RCC_Delay
                                                                                                                                                                                                                            -
                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   HAL_RCC_OscConfig +
                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                              • >>   HAL_RCC_OscConfig
                                                                                                                                                                                                                              -

                                                                                                                                                                                                                              __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) -

                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                              • >>   HAL_NVIC_SetPriority +

                                                                                                                                                                                                                                __NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping)) +

                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                • >>   HAL_NVIC_SetPriority
                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority)) +

                                                                                                                                                                                                                                __NVIC_SetPriority (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority))

                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                • Call Chain = __NVIC_SetPriority
                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                • >>   HAL_NVIC_SetPriority -
                                                                                                                                                                                                                                • >>   HAL_SYSTICK_Config +
                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                  • >>   HAL_NVIC_SetPriority +
                                                                                                                                                                                                                                  • >>   HAL_SYSTICK_Config
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError)) +

                                                                                                                                                                                                                                  UART_DMAAbortOnError (Thumb, 20 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError))

                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                  • Max Depth = 16
                                                                                                                                                                                                                                  • Call Chain = UART_DMAAbortOnError
                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   HAL_UART_ErrorCallback

                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                    • stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler)
                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                    UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) -

                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                      UART_EndRxTransfer (Thumb, 108 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_EndRxTransfer)) +

                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                      UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT)) -

                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                      • Call Chain = UART_EndTransmit_IT +

                                                                                                                                                                                                                                        UART_EndTransmit_IT (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT)) +

                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                        • Max Depth = 40
                                                                                                                                                                                                                                        • Call Chain = UART_EndTransmit_IT ⇒ HAL_UART_TxCpltCallback ⇒ UART2_Print_TxCpltCallback ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                        • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                          • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                            • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                            UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) -

                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                            • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ rf433_hal_uart_rxcplt_callback ⇒ HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT +

                                                                                                                                                                                                                                              UART_Receive_IT (Thumb, 252 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_Receive_IT)) +

                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                              • Max Depth = 248
                                                                                                                                                                                                                                              • Call Chain = UART_Receive_IT ⇒ HAL_UART_RxCpltCallback ⇒ CmdParser_FeedByte ⇒ UART2_Print_Printf ⇒ UART2_Print_Send ⇒ HAL_UART_Transmit_IT
                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                              • >>   HAL_UART_RxCpltCallback -
                                                                                                                                                                                                                                              • >>   HAL_UARTEx_RxEventCallback +
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                                                • >>   HAL_UARTEx_RxEventCallback
                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                  • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                  UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig)) +

                                                                                                                                                                                                                                                  UART_SetConfig (Thumb, 248 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(i.UART_SetConfig))

                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                  • Max Depth = 20
                                                                                                                                                                                                                                                  • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK2Freq
                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                                                                                                                                  • >>   HAL_RCC_GetPCLK1Freq +
                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                    • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                                                                                                                                    • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                    • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                      • >>   HAL_UART_Init
                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                      UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) -

                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                        UART_Transmit_IT (Thumb, 96 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(i.UART_Transmit_IT)) +

                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                        • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                        -

                                                                                                                                                                                                                                                        UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout)) +

                                                                                                                                                                                                                                                        UART_WaitOnFlagUntilTimeout (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))

                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                        • Max Depth = 24
                                                                                                                                                                                                                                                        • Call Chain = UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   HAL_GetTick +
                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   HAL_GetTick
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                          • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                            • >>   HAL_UART_Transmit
                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                            rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command)) +

                                                                                                                                                                                                                                                            rf433_send_config_command (Thumb, 30 bytes, Stack size 8 bytes, rf433.o(i.rf433_send_config_command))

                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                            • Max Depth = 88
                                                                                                                                                                                                                                                            • Call Chain = rf433_send_config_command ⇒ rf433_hal_uart_tx ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   rf433_hal_uart_tx +
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   rf433_hal_uart_tx
                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                              • >>   rf433_set_config +
                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                • >>   rf433_set_config
                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                rf433_fifo_clear (Thumb, 16 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_clear)) -

                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_clear -
                                                                                                                                                                                                                                                                - -

                                                                                                                                                                                                                                                                rf433_fifo_get_length (Thumb, 20 bytes, Stack size 0 bytes, rf433_hal.o(i.rf433_fifo_get_length)) -

                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_get_length -
                                                                                                                                                                                                                                                                - -

                                                                                                                                                                                                                                                                rf433_fifo_read (Thumb, 100 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_read)) -

                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                • Max Depth = 12
                                                                                                                                                                                                                                                                • Call Chain = rf433_fifo_read -
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                • >>   rf433_hal_fifo_read -
                                                                                                                                                                                                                                                                - -

                                                                                                                                                                                                                                                                rf433_fifo_write (Thumb, 82 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_write)) +

                                                                                                                                                                                                                                                                rf433_fifo_write (Thumb, 82 bytes, Stack size 12 bytes, rf433_hal.o(i.rf433_fifo_write))

                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                • Max Depth = 12
                                                                                                                                                                                                                                                                • Call Chain = rf433_fifo_write
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                • >>   rf433_hal_uart_rxcplt_callback +
                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                  • >>   rf433_hal_uart_rxcplt_callback
                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                  _scanf_char_input (Thumb, 12 bytes, Stack size 0 bytes, scanf_char.o(.text)) -
                                                                                                                                                                                                                                                                  [Address Reference Count : 1]

                                                                                                                                                                                                                                                                  • scanf_char.o(.text) +

                                                                                                                                                                                                                                                                    _fp_digits (Thumb, 366 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) +

                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                    • >>   __aeabi_uldivmod +
                                                                                                                                                                                                                                                                    • >>   __aeabi_dmul +
                                                                                                                                                                                                                                                                    • >>   __aeabi_ddiv +
                                                                                                                                                                                                                                                                    • >>   __aeabi_dadd +
                                                                                                                                                                                                                                                                    • >>   __aeabi_d2ulz +
                                                                                                                                                                                                                                                                    • >>   __aeabi_cdrcmple +
                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                    • >>   _printf_core +
                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                    _printf_core (Thumb, 1704 bytes, Stack size 136 bytes, printfa.o(i._printf_core), UNUSED) +

                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                    • >>   __aeabi_uldivmod +
                                                                                                                                                                                                                                                                    • >>   __aeabi_uidivmod +
                                                                                                                                                                                                                                                                    • >>   _printf_pre_padding +
                                                                                                                                                                                                                                                                    • >>   _printf_post_padding +
                                                                                                                                                                                                                                                                    • >>   _fp_digits +
                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                    • >>   __0vsnprintf +
                                                                                                                                                                                                                                                                    • >>   __0snprintf +
                                                                                                                                                                                                                                                                    • >>   __0printf +
                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                    _printf_post_padding (Thumb, 36 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) +

                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                    • >>   _printf_core +
                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                    _printf_pre_padding (Thumb, 46 bytes, Stack size 24 bytes, printfa.o(i._printf_pre_padding), UNUSED) +

                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                    • >>   _printf_core +
                                                                                                                                                                                                                                                                    + +

                                                                                                                                                                                                                                                                    _snputc (Thumb, 22 bytes, Stack size 0 bytes, printfa.o(i._snputc)) +
                                                                                                                                                                                                                                                                    [Address Reference Count : 2]

                                                                                                                                                                                                                                                                    • printfa.o(i.__0vsnprintf) +
                                                                                                                                                                                                                                                                    • printfa.o(i.__0snprintf)

                                                                                                                                                                                                                                                                    Undefined Global Symbols diff --git a/MDK-ARM/project/project.lnp b/MDK-ARM/project/project.lnp index eca46f7..6ee4cf2 100644 --- a/MDK-ARM/project/project.lnp +++ b/MDK-ARM/project/project.lnp @@ -9,6 +9,10 @@ "project\usart.o" "project\stm32f1xx_it.o" "project\stm32f1xx_hal_msp.o" +"project\cmd_parser.o" +"project\io_monitor.o" +"project\relay_control.o" +"project\uart2_print.o" "project\stm32f1xx_hal_gpio_ex.o" "project\stm32f1xx_hal_spi.o" "project\stm32f1xx_hal.o" diff --git a/MDK-ARM/project/project.map b/MDK-ARM/project/project.map index 1512034..76a1093 100644 --- a/MDK-ARM/project/project.map +++ b/MDK-ARM/project/project.map @@ -24,29 +24,36 @@ Section Cross References systick.o(i.systick_interrupt_1ms_callback) refers to rf433_hal.o(i.uart1_rx_timeout_1ms_callback) for uart1_rx_timeout_1ms_callback systick.o(i.systick_interrupt_1ms_callback) refers to systick.o(.data) for user_timerout_ms systick.o(i.systick_set_user_timeout) refers to systick.o(.data) for user_timerout_ms - rf433_rx_app.o(i.rf433_rx_app_get_state) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_get_stats) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_init) refers to memseta.o(.text) for __aeabi_memclr4 - rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433.o(i.rf433_set_config) for rf433_set_config - rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433.o(i.rf433_set_work_mode) for rf433_set_work_mode - rf433_rx_app.o(i.rf433_rx_app_init) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_parse_packet) refers to _scanf_int.o(.text) for _scanf_int - rf433_rx_app.o(i.rf433_rx_app_parse_packet) refers to __0sscanf.o(.text) for __0sscanf - rf433_rx_app.o(i.rf433_rx_app_reset_stats) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_start) refers to rf433.o(i.rf433_rx_start) for rf433_rx_start - rf433_rx_app.o(i.rf433_rx_app_start) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433.o(i.rf433_rx_stop) for rf433_rx_stop - rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433_rx_app.o(i.rx_led_control) for rx_led_control - rf433_rx_app.o(i.rf433_rx_app_stop) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_hal.o(i.uart1_check_rx_done) for uart1_check_rx_done - rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rf433_rx_app_parse_packet) for rf433_rx_app_parse_packet - rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rx_update_stats) for rx_update_stats - rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(i.rx_led_control) for rx_led_control - rf433_rx_app.o(i.rf433_rx_app_task) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay - rf433_rx_app.o(i.rf433_rx_app_task) refers to rf433_rx_app.o(.bss) for g_rx_app - rf433_rx_app.o(i.rx_led_control) refers to gpio.o(i.gpio_led_rx_on) for gpio_led_rx_on - rf433_rx_app.o(i.rx_led_control) refers to gpio.o(i.gpio_led_rx_off) for gpio_led_rx_off - rf433_rx_app.o(i.rx_update_stats) refers to rf433_rx_app.o(.bss) for g_rx_app + rf433_tx_app.o(i.rf433_tx_app_get_send_count) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_get_state) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_get_total_count) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_init) refers to memseta.o(.text) for __aeabi_memclr4 + rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433.o(i.rf433_set_config) for rf433_set_config + rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433.o(i.rf433_set_work_mode) for rf433_set_work_mode + rf433_tx_app.o(i.rf433_tx_app_init) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to rf433.o(i.rf433_transmit) for rf433_transmit + rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to rf433_tx_app.o(i.tx_led_control) for tx_led_control + rf433_tx_app.o(i.rf433_tx_app_manual_send) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay + rf433_tx_app.o(i.rf433_tx_app_reset_count) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_start) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_stop) refers to rf433_tx_app.o(i.tx_led_control) for tx_led_control + rf433_tx_app.o(i.rf433_tx_app_stop) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.rf433_tx_app_task) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + rf433_tx_app.o(i.rf433_tx_app_task) refers to rf433_tx_app.o(i.tx_led_control) for tx_led_control + rf433_tx_app.o(i.rf433_tx_app_task) refers to rf433_tx_app.o(i.tx_build_packet) for tx_build_packet + rf433_tx_app.o(i.rf433_tx_app_task) refers to rf433.o(i.rf433_transmit) for rf433_transmit + rf433_tx_app.o(i.rf433_tx_app_task) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay + rf433_tx_app.o(i.rf433_tx_app_task) refers to rf433_tx_app.o(.bss) for g_tx_app + rf433_tx_app.o(i.tx_build_packet) refers to printfa.o(i.__0snprintf) for __2snprintf + rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_on) for gpio_led_tx_on + rf433_tx_app.o(i.tx_led_control) refers to gpio.o(i.gpio_led_tx_off) for gpio_led_tx_off + main.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) for rf433_hal_uart_rxcplt_callback + main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + main.o(i.HAL_UART_RxCpltCallback) refers to cmd_parser.o(i.CmdParser_FeedByte) for CmdParser_FeedByte + main.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT + main.o(i.HAL_UART_RxCpltCallback) refers to main.o(.data) for uart2_rx_byte + main.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.bss) for huart2 + main.o(i.HAL_UART_TxCpltCallback) refers to uart2_print.o(i.UART2_Print_TxCpltCallback) for UART2_Print_TxCpltCallback main.o(i.SystemClock_Config) refers to memseta.o(.text) for __aeabi_memclr4 main.o(i.SystemClock_Config) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) for HAL_RCC_OscConfig main.o(i.SystemClock_Config) refers to main.o(i.Error_Handler) for Error_Handler @@ -58,14 +65,23 @@ Section Cross References main.o(i.main) refers to spi.o(i.MX_SPI2_Init) for MX_SPI2_Init main.o(i.main) refers to usart.o(i.MX_USART2_UART_Init) for MX_USART2_UART_Init main.o(i.main) refers to usart.o(i.MX_USART3_UART_Init) for MX_USART3_UART_Init - main.o(i.main) refers to rf433.o(i.rf433_init) for rf433_init + main.o(i.main) refers to uart2_print.o(i.UART2_Print_Init) for UART2_Print_Init + main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Init) for IO_Monitor_Init + main.o(i.main) refers to cmd_parser.o(i.CmdParser_Init) for CmdParser_Init + main.o(i.main) refers to relay_control.o(i.Relay_Init) for Relay_Init main.o(i.main) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT - main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_init) for rf433_rx_app_init - main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_start) for rf433_rx_app_start - main.o(i.main) refers to rf433_rx_app.o(i.rf433_rx_app_task) for rf433_rx_app_task - main.o(i.main) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay + main.o(i.main) refers to rf433.o(i.rf433_init) for rf433_init + main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_init) for rf433_tx_app_init + main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_start) for rf433_tx_app_start + main.o(i.main) refers to printfa.o(i.__0printf) for __2printf + main.o(i.main) refers to uart2_print.o(i.UART2_Print_Task) for UART2_Print_Task + main.o(i.main) refers to io_monitor.o(i.IO_Monitor_Task) for IO_Monitor_Task + main.o(i.main) refers to cmd_parser.o(i.CmdParser_Task) for CmdParser_Task + main.o(i.main) refers to rf433_tx_app.o(i.rf433_tx_app_task) for rf433_tx_app_task + main.o(i.main) refers to main.o(.data) for uart2_rx_byte + main.o(i.main) refers to usart.o(.bss) for huart2 main.o(i.main) refers to rf433_hal.o(.data) for rf433_uart_rx_tmp - main.o(i.main) refers to usart.o(.bss) for huart1 + main.o(i.main) refers to system_stm32f1xx.o(.data) for SystemCoreClock gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init gpio.o(i.gpio_led_rx_off) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin @@ -82,7 +98,6 @@ Section Cross References usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) for HAL_NVIC_SetPriority usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) for HAL_NVIC_EnableIRQ - usart.o(i.HAL_UART_RxCpltCallback) refers to rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) for rf433_hal_uart_rxcplt_callback usart.o(i.MX_USART1_UART_Init) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Init) for HAL_UART_Init usart.o(i.MX_USART1_UART_Init) refers to main.o(i.Error_Handler) for Error_Handler usart.o(i.MX_USART1_UART_Init) refers to usart.o(.bss) for huart1 @@ -103,6 +118,95 @@ Section Cross References stm32f1xx_it.o(i.USART2_IRQHandler) refers to usart.o(.bss) for huart2 stm32f1xx_it.o(i.USART3_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) for HAL_UART_IRQHandler stm32f1xx_it.o(i.USART3_IRQHandler) refers to usart.o(.bss) for huart3 + cmd_parser.o(i.CmdParser_Acknowledge) refers to cmd_parser.o(i.reset_parser) for reset_parser + cmd_parser.o(i.CmdParser_FeedByte) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.reset_parser) for reset_parser + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.is_valid_cmd_char) for is_valid_cmd_char + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.is_valid_param_char) for is_valid_param_char + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.hex_to_byte) for hex_to_byte + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(i.send_response_err) for send_response_err + cmd_parser.o(i.CmdParser_FeedByte) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_GetErrorCount) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_GetValidCount) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_HasCompleteFrame) refers to memcpya.o(.text) for __aeabi_memcpy + cmd_parser.o(i.CmdParser_HasCompleteFrame) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_Init) refers to memseta.o(.text) for __aeabi_memclr4 + cmd_parser.o(i.CmdParser_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_parser.o(i.CmdParser_Init) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(i.process_cmd_frame) for process_cmd_frame + cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(i.reset_parser) for reset_parser + cmd_parser.o(i.CmdParser_Task) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.hex_to_byte) refers to cmd_parser.o(i.hex_char_to_val) for hex_char_to_val + cmd_parser.o(i.is_str_numeric) refers to cmd_parser.o(i.is_str_empty) for is_str_empty + cmd_parser.o(i.is_str_numeric) refers to ctype_o.o(.text) for __rt_ctype_table + cmd_parser.o(i.is_valid_cmd_char) refers to ctype_o.o(.text) for __rt_ctype_table + cmd_parser.o(i.is_valid_param_char) refers to ctype_o.o(.text) for __rt_ctype_table + cmd_parser.o(i.process_cmd_frame) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + cmd_parser.o(i.process_cmd_frame) refers to strcmp.o(.text) for strcmp + cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.is_str_numeric) for is_str_numeric + cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.send_response_err) for send_response_err + cmd_parser.o(i.process_cmd_frame) refers to atoi.o(.text) for atoi + cmd_parser.o(i.process_cmd_frame) refers to relay_control.o(i.Relay_SetState) for Relay_SetState + cmd_parser.o(i.process_cmd_frame) refers to printfa.o(i.__0snprintf) for __2snprintf + cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.send_response_ok) for send_response_ok + cmd_parser.o(i.process_cmd_frame) refers to cmd_parser.o(i.is_str_empty) for is_str_empty + cmd_parser.o(i.process_cmd_frame) refers to io_monitor.o(i.IO_Monitor_GetAllStates) for IO_Monitor_GetAllStates + cmd_parser.o(i.process_cmd_frame) refers to io_monitor.o(i.IO_Monitor_GetState) for IO_Monitor_GetState + cmd_parser.o(i.reset_parser) refers to memseta.o(.text) for __aeabi_memclr + cmd_parser.o(i.reset_parser) refers to cmd_parser.o(.bss) for ctx + cmd_parser.o(i.send_response_err) refers to printfa.o(i.__0snprintf) for __2snprintf + cmd_parser.o(i.send_response_err) refers to cmd_parser.o(i.calc_checksum) for calc_checksum + cmd_parser.o(i.send_response_err) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + cmd_parser.o(i.send_response_ok) refers to printfa.o(i.__0snprintf) for __2snprintf + cmd_parser.o(i.send_response_ok) refers to cmd_parser.o(i.calc_checksum) for calc_checksum + cmd_parser.o(i.send_response_ok) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + io_monitor.o(i.IO_Monitor_EnableReport) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + io_monitor.o(i.IO_Monitor_EnableReport) refers to io_monitor.o(.data) for report_enabled + io_monitor.o(i.IO_Monitor_GetAllStates) refers to io_monitor.o(.data) for di_channels + io_monitor.o(i.IO_Monitor_GetChangeCount) refers to io_monitor.o(.data) for di_channels + io_monitor.o(i.IO_Monitor_GetState) refers to io_monitor.o(.data) for di_channels + io_monitor.o(i.IO_Monitor_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin + io_monitor.o(i.IO_Monitor_Init) refers to io_monitor.o(i.IO_Monitor_GetAllStates) for IO_Monitor_GetAllStates + io_monitor.o(i.IO_Monitor_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + io_monitor.o(i.IO_Monitor_Init) refers to io_monitor.o(.data) for di_channels + io_monitor.o(i.IO_Monitor_Task) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + io_monitor.o(i.IO_Monitor_Task) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin + io_monitor.o(i.IO_Monitor_Task) refers to io_monitor.o(i.send_di_event) for send_di_event + io_monitor.o(i.IO_Monitor_Task) refers to io_monitor.o(.data) for last_scan_tick + io_monitor.o(i.send_di_event) refers to printfa.o(i.__0snprintf) for __2snprintf + io_monitor.o(i.send_di_event) refers to io_monitor.o(i.calc_checksum) for calc_checksum + io_monitor.o(i.send_di_event) refers to uart2_print.o(i.UART2_Print_String) for UART2_Print_String + io_monitor.o(i.send_di_event) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + relay_control.o(i.Relay_GetState) refers to relay_control.o(.data) for current_states + relay_control.o(i.Relay_GetToggleCount) refers to relay_control.o(.data) for toggle_count + relay_control.o(i.Relay_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + relay_control.o(i.Relay_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + relay_control.o(i.Relay_Init) refers to relay_control.o(.data) for current_states + relay_control.o(i.Relay_SetState) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + relay_control.o(i.Relay_SetState) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick + relay_control.o(i.Relay_SetState) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + relay_control.o(i.Relay_SetState) refers to relay_control.o(.data) for last_toggle_tick + relay_control.o(i.Relay_Toggle) refers to relay_control.o(i.Relay_SetState) for Relay_SetState + relay_control.o(i.Relay_Toggle) refers to relay_control.o(.data) for current_states + uart2_print.o(i.UART2_Print_Available) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_GetOverflowCount) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_Init) refers to uart2_print.o(i.UART2_Print_Printf) for UART2_Print_Printf + uart2_print.o(i.UART2_Print_Init) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_IsBusy) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_Printf) refers to printfa.o(i.__0vsnprintf) for vsnprintf + uart2_print.o(i.UART2_Print_Printf) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + uart2_print.o(i.UART2_Print_Send) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT + uart2_print.o(i.UART2_Print_Send) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_Send) refers to usart.o(.bss) for huart2 + uart2_print.o(i.UART2_Print_String) refers to strlen.o(.text) for strlen + uart2_print.o(i.UART2_Print_String) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send + uart2_print.o(i.UART2_Print_Task) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT + uart2_print.o(i.UART2_Print_Task) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_Task) refers to usart.o(.bss) for huart2 + uart2_print.o(i.UART2_Print_TxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT + uart2_print.o(i.UART2_Print_TxCpltCallback) refers to uart2_print.o(.bss) for tx_ring + uart2_print.o(i.UART2_Print_TxCpltCallback) refers to usart.o(.bss) for huart2 + uart2_print.o(i.fputc) refers to uart2_print.o(i.UART2_Print_Send) for UART2_Print_Send stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) for HAL_DMA_Abort stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to system_stm32f1xx.o(.data) for SystemCoreClock stm32f1xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f1xx_hal_spi.o(i.SPI_AbortTx_ISR) for SPI_AbortTx_ISR @@ -361,18 +465,18 @@ Section Cross References stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) for UART_EndRxTransfer stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback - stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to usart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback + stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to main.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback) for HAL_UART_RxHalfCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortReceiveCpltCallback) for HAL_UART_AbortReceiveCpltCallback - stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback + stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt) refers to main.o(i.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback stm32f1xx_hal_uart.o(i.UART_DMATxAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_TxHalfCpltCallback) for HAL_UART_TxHalfCpltCallback stm32f1xx_hal_uart.o(i.UART_DMATxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortTransmitCpltCallback) for HAL_UART_AbortTransmitCpltCallback - stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) refers to stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback + stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) refers to main.o(i.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback stm32f1xx_hal_uart.o(i.UART_Receive_IT) refers to stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback - stm32f1xx_hal_uart.o(i.UART_Receive_IT) refers to usart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback + stm32f1xx_hal_uart.o(i.UART_Receive_IT) refers to main.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o(i.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) for HAL_RCC_GetPCLK2Freq stm32f1xx_hal_uart.o(i.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) for HAL_RCC_GetPCLK1Freq stm32f1xx_hal_uart.o(i.UART_Start_Receive_DMA) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) for HAL_DMA_Start_IT @@ -390,24 +494,8 @@ Section Cross References rf433.o(i.rf433_init) refers to rf433_hal.o(i.rf433_hal_deinit) for rf433_hal_deinit rf433.o(i.rf433_init) refers to rf433.o(.data) for rf433_initialized rf433.o(i.rf433_init) refers to rf433.o(.constdata) for rf433_default_config - rf433.o(i.rf433_receive) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick - rf433.o(i.rf433_receive) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length - rf433.o(i.rf433_receive) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay - rf433.o(i.rf433_receive) refers to rf433_hal.o(i.rf433_hal_fifo_read) for rf433_hal_fifo_read - rf433.o(i.rf433_receive) refers to rf433.o(.data) for rf433_initialized rf433.o(i.rf433_reset) refers to rf433_hal.o(i.rf433_hal_reset) for rf433_hal_reset rf433.o(i.rf433_response_command_check) refers to strncmp.o(.text) for strncmp - rf433.o(i.rf433_rx_check_data) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length - rf433.o(i.rf433_rx_check_data) refers to rf433.o(.data) for rf433_initialized - rf433.o(i.rf433_rx_read) refers to rf433_hal.o(i.rf433_hal_fifo_get_length) for rf433_hal_fifo_get_length - rf433.o(i.rf433_rx_read) refers to rf433_hal.o(i.rf433_hal_fifo_read) for rf433_hal_fifo_read - rf433.o(i.rf433_rx_read) refers to rf433.o(.data) for rf433_initialized - rf433.o(i.rf433_rx_register_callback) refers to rf433.o(.data) for rf433_initialized - rf433.o(i.rf433_rx_start) refers to rf433_hal.o(i.rf433_hal_fifo_clear) for rf433_hal_fifo_clear - rf433.o(i.rf433_rx_start) refers to rf433.o(.data) for rf433_initialized - rf433.o(i.rf433_rx_stop) refers to rf433.o(.data) for rf433_initialized - rf433.o(i.rf433_rx_uart_callback_internal) refers to rf433.o(.data) for rf433_rx_started - rf433.o(i.rf433_rx_unregister_callback) refers to rf433.o(.data) for rf433_rx_callback rf433.o(i.rf433_send_config_command) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx rf433.o(i.rf433_send_config_command) refers to rf433.o(.bss) for rf433_buffer rf433.o(i.rf433_send_request_command) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx @@ -419,6 +507,11 @@ Section Cross References rf433.o(i.rf433_set_config) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay rf433.o(i.rf433_set_config) refers to rf433.o(.data) for rf433_current_config rf433.o(i.rf433_set_work_mode) refers to rf433_hal.o(i.rf433_hal_set_work_mode) for rf433_hal_set_work_mode + rf433.o(i.rf433_transmit) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx + rf433.o(i.rf433_transmit) refers to printfa.o(i.__0printf) for __2printf + rf433.o(i.rf433_transmit) refers to rf433.o(.data) for rf433_initialized + rf433.o(i.rf433_transmit_packet) refers to rf433_hal.o(i.rf433_hal_uart_tx) for rf433_hal_uart_tx + rf433.o(i.rf433_transmit_packet) refers to rf433.o(.data) for rf433_initialized rf433_hal.o(i.rf433_fifo_clear) refers to rf433_hal.o(.data) for rf433_fifo_head rf433_hal.o(i.rf433_fifo_get_length) refers to rf433_hal.o(.data) for rf433_fifo_count rf433_hal.o(i.rf433_fifo_read) refers to rf433_hal.o(.data) for rf433_fifo_count @@ -466,9 +559,258 @@ Section Cross References entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk - __0sscanf.o(.text) refers to scanf_char.o(.text) for __vfscanf_char - __0sscanf.o(.text) refers to _sgetc.o(.text) for _sgetc - _scanf_int.o(.text) refers to _chval.o(.text) for _chval + ctype_o.o(.text) refers to ctype_o.o(.constdata) for .constdata + ctype_o.o(.constdata) refers to ctype_o.o(.constdata) for __ctype_table + isalnum_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isalpha_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isblank_o.o(.text) refers to ctype_o.o(.constdata) for __ctype_table + iscntrl_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isdigit_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isgraph_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + islower_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isprint_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + ispunct_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isspace_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isupper_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + isxdigit_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + printfb.o(i.__0fprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0fprintf$bare) refers to uart2_print.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0printf$bare) refers to uart2_print.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._sputc) for _sputc + printfb.o(i.__0vfprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vfprintf$bare) refers to uart2_print.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vprintf$bare) refers to uart2_print.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._sputc) for _sputc + printf0.o(i.__0fprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0fprintf$0) refers to uart2_print.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0printf$0) refers to uart2_print.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0snprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0snprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0sprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0sprintf$0) refers to printf0.o(i._sputc) for _sputc + printf0.o(i.__0vfprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vfprintf$0) refers to uart2_print.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vprintf$0) refers to uart2_print.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._sputc) for _sputc + printf1.o(i.__0fprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0fprintf$1) refers to uart2_print.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0printf$1) refers to uart2_print.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0snprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0snprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0sprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0sprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i.__0vfprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vfprintf$1) refers to uart2_print.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vprintf$1) refers to uart2_print.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf2.o(i.__0fprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0fprintf$2) refers to uart2_print.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0printf$2) refers to uart2_print.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0snprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0snprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0sprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0sprintf$2) refers to printf2.o(i._sputc) for _sputc + printf2.o(i.__0vfprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vfprintf$2) refers to uart2_print.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vprintf$2) refers to uart2_print.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._sputc) for _sputc + printf3.o(i.__0fprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0fprintf$3) refers to uart2_print.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0printf$3) refers to uart2_print.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0snprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0snprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0sprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0sprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i.__0vfprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vfprintf$3) refers to uart2_print.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vprintf$3) refers to uart2_print.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf4.o(i.__0fprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0fprintf$4) refers to uart2_print.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0printf$4) refers to uart2_print.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0snprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0snprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0sprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0sprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i.__0vfprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vfprintf$4) refers to uart2_print.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vprintf$4) refers to uart2_print.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf5.o(i.__0fprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0fprintf$5) refers to uart2_print.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0printf$5) refers to uart2_print.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0snprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0snprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0sprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0sprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i.__0vfprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vfprintf$5) refers to uart2_print.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vprintf$5) refers to uart2_print.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf6.o(i.__0fprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0fprintf$6) refers to uart2_print.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0printf$6) refers to uart2_print.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0snprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0snprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0sprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0sprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i.__0vfprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vfprintf$6) refers to uart2_print.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vprintf$6) refers to uart2_print.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i._printf_core) refers to printf6.o(i._printf_pre_padding) for _printf_pre_padding + printf6.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf6.o(i._printf_core) refers to printf6.o(i._printf_post_padding) for _printf_post_padding + printf7.o(i.__0fprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0fprintf$7) refers to uart2_print.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0printf$7) refers to uart2_print.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0snprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0snprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0sprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0sprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i.__0vfprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vfprintf$7) refers to uart2_print.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vprintf$7) refers to uart2_print.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i._printf_core) refers to printf7.o(i._printf_pre_padding) for _printf_pre_padding + printf7.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf7.o(i._printf_core) refers to printf7.o(i._printf_post_padding) for _printf_post_padding + printf8.o(i.__0fprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0fprintf$8) refers to uart2_print.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0printf$8) refers to uart2_print.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0snprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0snprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0sprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0sprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i.__0vfprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vfprintf$8) refers to uart2_print.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vprintf$8) refers to uart2_print.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i._printf_core) refers to printf8.o(i._printf_pre_padding) for _printf_pre_padding + printf8.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf8.o(i._printf_core) refers to printf8.o(i._printf_post_padding) for _printf_post_padding + printfa.o(i.__0fprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0fprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0fprintf) refers to uart2_print.o(i.fputc) for fputc + printfa.o(i.__0printf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0printf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0printf) refers to uart2_print.o(i.fputc) for fputc + printfa.o(i.__0printf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0snprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0snprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0snprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0sprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0sprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0sprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i.__0vfprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vfprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vfprintf) refers to uart2_print.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vprintf) refers to uart2_print.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0vsnprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsnprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsnprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0vsprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i._fp_digits) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._fp_digits) refers to dmul.o(.text) for __aeabi_dmul + printfa.o(i._fp_digits) refers to ddiv.o(.text) for __aeabi_ddiv + printfa.o(i._fp_digits) refers to cdrcmple.o(.text) for __aeabi_cdrcmple + printfa.o(i._fp_digits) refers to dadd.o(.text) for __aeabi_dadd + printfa.o(i._fp_digits) refers to dfixul.o(.text) for __aeabi_d2ulz + printfa.o(i._fp_digits) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_core) refers to printfa.o(i._printf_pre_padding) for _printf_pre_padding + printfa.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers to printfa.o(i._printf_post_padding) for _printf_post_padding + printfa.o(i._printf_core) refers to printfa.o(i._fp_digits) for _fp_digits + printfa.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printfa.o(i._printf_post_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + atoi.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr + atoi.o(.text) refers to strtol.o(.text) for strtol entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 entry2.o(.ARM.Collect$$$$00002712) refers to startup_stm32f103xb.o(STACK) for __initial_sp entry2.o(__vectab_stack_and_reset_area) refers to startup_stm32f103xb.o(STACK) for __initial_sp @@ -476,12 +818,26 @@ Section Cross References entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload entry9a.o(.ARM.Collect$$$$0000000B) refers to main.o(i.main) for main entry9b.o(.ARM.Collect$$$$0000000C) refers to main.o(i.main) for main - scanf_char.o(.text) refers to _scanf.o(.text) for __vfscanf - scanf_char.o(.text) refers to isspace_c.o(.text) for isspace + uldiv.o(.text) refers to llushr.o(.text) for __aeabi_llsr + uldiv.o(.text) refers to llshl.o(.text) for __aeabi_llsl + errno.o(i.__aeabi_errno_addr) refers to errno.o(.data) for .data + errno.o(i.__read_errno) refers to errno.o(.data) for .data + errno.o(i.__set_errno) refers to errno.o(.data) for .data + strtol.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table + strtol.o(.text) refers to _strtoul.o(.text) for _strtoul + strtol.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr + dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl + dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr + dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue + dmul.o(.text) refers to depilogue.o(.text) for _double_epilogue + ddiv.o(.text) refers to depilogue.o(.text) for _double_round + dfixul.o(.text) refers to llushr.o(.text) for __aeabi_llsr + dfixul.o(.text) refers to llshl.o(.text) for __aeabi_llsl init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload - isspace_c.o(.text) refers to ctype_c.o(.text) for __ctype_lookup - _scanf.o(.text) refers (Weak) to _scanf_int.o(.text) for _scanf_int - ctype_c.o(.text) refers to ctype_c.o(.constdata) for .constdata + _strtoul.o(.text) refers to _chval.o(.text) for _chval + _strtoul.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr + depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl + depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr ============================================================================== @@ -494,21 +850,23 @@ Removing Unused input sections from the image. Removing systick.o(.rrx_text), (6 bytes). Removing systick.o(i.systick_get_user_timeout), (12 bytes). Removing systick.o(i.systick_set_user_timeout), (12 bytes). - Removing rf433_rx_app.o(.rev16_text), (4 bytes). - Removing rf433_rx_app.o(.revsh_text), (4 bytes). - Removing rf433_rx_app.o(.rrx_text), (6 bytes). - Removing rf433_rx_app.o(i.rf433_rx_app_get_state), (12 bytes). - Removing rf433_rx_app.o(i.rf433_rx_app_get_stats), (32 bytes). - Removing rf433_rx_app.o(i.rf433_rx_app_reset_stats), (28 bytes). - Removing rf433_rx_app.o(i.rf433_rx_app_stop), (32 bytes). + Removing rf433_tx_app.o(.rev16_text), (4 bytes). + Removing rf433_tx_app.o(.revsh_text), (4 bytes). + Removing rf433_tx_app.o(.rrx_text), (6 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_get_send_count), (12 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_get_state), (12 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_get_total_count), (12 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_manual_send), (50 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_reset_count), (24 bytes). + Removing rf433_tx_app.o(i.rf433_tx_app_stop), (28 bytes). Removing main.o(.rev16_text), (4 bytes). Removing main.o(.revsh_text), (4 bytes). Removing main.o(.rrx_text), (6 bytes). Removing gpio.o(.rev16_text), (4 bytes). Removing gpio.o(.revsh_text), (4 bytes). Removing gpio.o(.rrx_text), (6 bytes). - Removing gpio.o(i.gpio_led_tx_off), (20 bytes). - Removing gpio.o(i.gpio_led_tx_on), (20 bytes). + Removing gpio.o(i.gpio_led_rx_off), (20 bytes). + Removing gpio.o(i.gpio_led_rx_on), (20 bytes). Removing spi.o(.rev16_text), (4 bytes). Removing spi.o(.revsh_text), (4 bytes). Removing spi.o(.rrx_text), (6 bytes). @@ -524,6 +882,27 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_msp.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes). + Removing cmd_parser.o(i.CmdParser_Acknowledge), (8 bytes). + Removing cmd_parser.o(i.CmdParser_GetErrorCount), (12 bytes). + Removing cmd_parser.o(i.CmdParser_GetValidCount), (12 bytes). + Removing cmd_parser.o(i.CmdParser_HasCompleteFrame), (48 bytes). + Removing io_monitor.o(.rev16_text), (4 bytes). + Removing io_monitor.o(.revsh_text), (4 bytes). + Removing io_monitor.o(.rrx_text), (6 bytes). + Removing io_monitor.o(i.IO_Monitor_EnableReport), (72 bytes). + Removing io_monitor.o(i.IO_Monitor_GetChangeCount), (24 bytes). + Removing relay_control.o(.rev16_text), (4 bytes). + Removing relay_control.o(.revsh_text), (4 bytes). + Removing relay_control.o(.rrx_text), (6 bytes). + Removing relay_control.o(i.Relay_GetState), (28 bytes). + Removing relay_control.o(i.Relay_GetToggleCount), (12 bytes). + Removing relay_control.o(i.Relay_Toggle), (44 bytes). + Removing uart2_print.o(.rev16_text), (4 bytes). + Removing uart2_print.o(.revsh_text), (4 bytes). + Removing uart2_print.o(.rrx_text), (6 bytes). + Removing uart2_print.o(i.UART2_Print_Available), (24 bytes). + Removing uart2_print.o(i.UART2_Print_GetOverflowCount), (12 bytes). + Removing uart2_print.o(i.UART2_Print_IsBusy), (36 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rrx_text), (6 bytes). @@ -777,7 +1156,7 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA), (140 bytes). - Removing stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT), (56 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_TxHalfCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMAError), (80 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt), (180 bytes). @@ -799,26 +1178,27 @@ Removing Unused input sections from the image. Removing rf433.o(.rrx_text), (6 bytes). Removing rf433.o(i.rf433_deinit), (32 bytes). Removing rf433.o(i.rf433_get_config), (28 bytes). - Removing rf433.o(i.rf433_receive), (148 bytes). Removing rf433.o(i.rf433_reset), (20 bytes). Removing rf433.o(i.rf433_response_command_check), (100 bytes). - Removing rf433.o(i.rf433_rx_check_data), (64 bytes). - Removing rf433.o(i.rf433_rx_read), (100 bytes). - Removing rf433.o(i.rf433_rx_register_callback), (48 bytes). - Removing rf433.o(i.rf433_rx_stop), (32 bytes). - Removing rf433.o(i.rf433_rx_uart_callback_internal), (52 bytes). - Removing rf433.o(i.rf433_rx_unregister_callback), (20 bytes). Removing rf433.o(i.rf433_send_request_command), (80 bytes). + Removing rf433.o(i.rf433_transmit_packet), (52 bytes). Removing rf433_hal.o(.rev16_text), (4 bytes). Removing rf433_hal.o(.revsh_text), (4 bytes). Removing rf433_hal.o(.rrx_text), (6 bytes). + Removing rf433_hal.o(i.rf433_fifo_clear), (28 bytes). + Removing rf433_hal.o(i.rf433_fifo_get_length), (24 bytes). + Removing rf433_hal.o(i.rf433_fifo_read), (112 bytes). Removing rf433_hal.o(i.rf433_hal_check_rx_done), (12 bytes). + Removing rf433_hal.o(i.rf433_hal_fifo_clear), (8 bytes). + Removing rf433_hal.o(i.rf433_hal_fifo_get_length), (12 bytes). + Removing rf433_hal.o(i.rf433_hal_fifo_read), (20 bytes). Removing rf433_hal.o(i.rf433_hal_fifo_write), (16 bytes). Removing rf433_hal.o(i.rf433_hal_reset), (44 bytes). Removing rf433_hal.o(i.rf433_hal_uart_rx_callback), (28 bytes). + Removing rf433_hal.o(i.uart1_check_rx_done), (80 bytes). Removing rf433_hal.o(i.uart1_wait_response_blocked), (86 bytes). -329 unused section(s) (total 21412 bytes) removed from the image. +353 unused section(s) (total 21638 bytes) removed from the image. ============================================================================== @@ -850,35 +1230,74 @@ Image Symbol Table ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_c.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_c.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE + ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE + ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE ../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 scanf_char.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _scanf_int.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 __0sscanf.o ABSOLUTE + ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 strtol.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 atoi.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _sgetc.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _scanf.o ABSOLUTE + ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE + ..\Core\Src\cmd_parser.c 0x00000000 Number 0 cmd_parser.o ABSOLUTE ..\Core\Src\gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE + ..\Core\Src\io_monitor.c 0x00000000 Number 0 io_monitor.o ABSOLUTE ..\Core\Src\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\Core\Src\relay_control.c 0x00000000 Number 0 relay_control.o ABSOLUTE ..\Core\Src\rf433_rx_app.c 0x00000000 Number 0 rf433_rx_app.o ABSOLUTE ..\Core\Src\rf433_tx_app.c 0x00000000 Number 0 rf433_tx_app.o ABSOLUTE ..\Core\Src\spi.c 0x00000000 Number 0 spi.o ABSOLUTE @@ -886,6 +1305,7 @@ Image Symbol Table ..\Core\Src\stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE ..\Core\Src\system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE ..\Core\Src\systick.c 0x00000000 Number 0 systick.o ABSOLUTE + ..\Core\Src\uart2_print.c 0x00000000 Number 0 uart2_print.o ABSOLUTE ..\Core\Src\usart.c 0x00000000 Number 0 usart.o ABSOLUTE ..\Driver_RF433\Src\rf433.c 0x00000000 Number 0 rf433.o ABSOLUTE ..\Driver_RF433\Src\rf433_hal.c 0x00000000 Number 0 rf433_hal.o ABSOLUTE @@ -904,10 +1324,14 @@ Image Symbol Table ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE - ..\\Core\\Src\\rf433_rx_app.c 0x00000000 Number 0 rf433_rx_app.o ABSOLUTE + ..\\Core\\Src\\io_monitor.c 0x00000000 Number 0 io_monitor.o ABSOLUTE + ..\\Core\\Src\\relay_control.c 0x00000000 Number 0 relay_control.o ABSOLUTE + ..\\Core\\Src\\rf433_tx_app.c 0x00000000 Number 0 rf433_tx_app.o ABSOLUTE ..\\Core\\Src\\systick.c 0x00000000 Number 0 systick.o ABSOLUTE + ..\\Core\\Src\\uart2_print.c 0x00000000 Number 0 uart2_print.o ABSOLUTE ..\\Driver_RF433\\Src\\rf433.c 0x00000000 Number 0 rf433.o ABSOLUTE ..\\Driver_RF433\\Src\\rf433_hal.c 0x00000000 Number 0 rf433_hal.o ABSOLUTE + cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE init.s 0x00000000 Number 0 init.o ABSOLUTE @@ -925,183 +1349,293 @@ Image Symbol Table .ARM.Collect$$$$00002712 0x08000100 Section 4 entry2.o(.ARM.Collect$$$$00002712) __lit__00000000 0x08000100 Data 4 entry2.o(.ARM.Collect$$$$00002712) .text 0x08000104 Section 36 startup_stm32f103xb.o(.text) - .text 0x08000128 Section 0 memseta.o(.text) - .text 0x0800014c Section 0 __0sscanf.o(.text) - .text 0x08000184 Section 0 _scanf_int.o(.text) - .text 0x080002d0 Section 0 _chval.o(.text) - .text 0x080002ec Section 0 scanf_char.o(.text) - _scanf_char_input 0x080002ed Thumb Code 12 scanf_char.o(.text) - .text 0x08000314 Section 0 _sgetc.o(.text) - .text 0x08000354 Section 36 init.o(.text) - .text 0x08000378 Section 0 isspace_c.o(.text) - .text 0x08000384 Section 0 _scanf.o(.text) - .text 0x080006b4 Section 0 ctype_c.o(.text) - i.BusFault_Handler 0x080006dc Section 0 stm32f1xx_it.o(i.BusFault_Handler) - i.DebugMon_Handler 0x080006e0 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) - i.Error_Handler 0x080006e2 Section 0 main.o(i.Error_Handler) - i.HAL_DMA_Abort 0x080006e8 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - i.HAL_DMA_Abort_IT 0x08000740 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - i.HAL_Delay 0x080007f0 Section 0 stm32f1xx_hal.o(i.HAL_Delay) - i.HAL_GPIO_Init 0x08000818 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - i.HAL_GPIO_ReadPin 0x08000b38 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - i.HAL_GPIO_WritePin 0x08000b48 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - i.HAL_GetTick 0x08000b54 Section 0 stm32f1xx_hal.o(i.HAL_GetTick) - i.HAL_IncTick 0x08000b60 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x08000b78 Section 0 stm32f1xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x08000ba0 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x08000bec Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x08000c40 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x08000c60 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_NVIC_SetPriorityGrouping 0x08000cdc Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - i.HAL_RCC_ClockConfig 0x08000d04 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetHCLKFreq 0x08000e90 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - i.HAL_RCC_GetPCLK1Freq 0x08000e9c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetPCLK2Freq 0x08000ebc Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - i.HAL_RCC_GetSysClockFreq 0x08000edc Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x08000f4c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_Init 0x080013b0 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x08001470 Section 0 spi.o(i.HAL_SPI_MspInit) - i.HAL_SYSTICK_Config 0x080014f8 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_UARTEx_RxEventCallback 0x0800152c Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - i.HAL_UART_ErrorCallback 0x0800152e Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - i.HAL_UART_IRQHandler 0x08001530 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - i.HAL_UART_Init 0x08001814 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - i.HAL_UART_MspInit 0x0800188c Section 0 usart.o(i.HAL_UART_MspInit) - i.HAL_UART_Receive_IT 0x08001a1c Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - i.HAL_UART_RxCpltCallback 0x08001a48 Section 0 usart.o(i.HAL_UART_RxCpltCallback) - i.HAL_UART_Transmit 0x08001a60 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - i.HAL_UART_TxCpltCallback 0x08001b12 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) - i.HardFault_Handler 0x08001b14 Section 0 stm32f1xx_it.o(i.HardFault_Handler) - i.MX_GPIO_Init 0x08001b18 Section 0 gpio.o(i.MX_GPIO_Init) - i.MX_SPI2_Init 0x08001c28 Section 0 spi.o(i.MX_SPI2_Init) - i.MX_USART1_UART_Init 0x08001c6c Section 0 usart.o(i.MX_USART1_UART_Init) - i.MX_USART2_UART_Init 0x08001ca4 Section 0 usart.o(i.MX_USART2_UART_Init) - i.MX_USART3_UART_Init 0x08001cdc Section 0 usart.o(i.MX_USART3_UART_Init) - i.MemManage_Handler 0x08001d14 Section 0 stm32f1xx_it.o(i.MemManage_Handler) - i.NMI_Handler 0x08001d18 Section 0 stm32f1xx_it.o(i.NMI_Handler) - i.PendSV_Handler 0x08001d1c Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.RCC_Delay 0x08001d20 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) - RCC_Delay 0x08001d21 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) - i.SVC_Handler 0x08001d48 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x08001d4a Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x08001d56 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x08001dbc Section 0 system_stm32f1xx.o(i.SystemInit) - i.UART_DMAAbortOnError 0x08001dbe Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - UART_DMAAbortOnError 0x08001dbf Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) - i.UART_EndRxTransfer 0x08001dd2 Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - UART_EndRxTransfer 0x08001dd3 Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - i.UART_EndTransmit_IT 0x08001e3e Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - UART_EndTransmit_IT 0x08001e3f Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) - i.UART_Receive_IT 0x08001e5e Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - UART_Receive_IT 0x08001e5f Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) - i.UART_SetConfig 0x08001f5c Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) - UART_SetConfig 0x08001f5d Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) - i.UART_Start_Receive_IT 0x08002058 Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - i.UART_Transmit_IT 0x08002098 Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - UART_Transmit_IT 0x08002099 Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) - i.UART_WaitOnFlagUntilTimeout 0x080020f8 Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - UART_WaitOnFlagUntilTimeout 0x080020f9 Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.USART1_IRQHandler 0x0800218c Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) - i.USART2_IRQHandler 0x0800219c Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) - i.USART3_IRQHandler 0x080021ac Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) - i.UsageFault_Handler 0x080021bc Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.__NVIC_GetPriorityGrouping 0x080021c0 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - __NVIC_GetPriorityGrouping 0x080021c1 Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) - i.__NVIC_SetPriority 0x080021d0 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x080021d1 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.__scatterload_copy 0x080021f8 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08002206 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08002208 Section 14 handlers.o(i.__scatterload_zeroinit) - i.gpio_led_rx_off 0x08002218 Section 0 gpio.o(i.gpio_led_rx_off) - i.gpio_led_rx_on 0x0800222c Section 0 gpio.o(i.gpio_led_rx_on) - i.main 0x08002240 Section 0 main.o(i.main) - i.rf433_fifo_clear 0x0800228c Section 0 rf433_hal.o(i.rf433_fifo_clear) - rf433_fifo_clear 0x0800228d Thumb Code 16 rf433_hal.o(i.rf433_fifo_clear) - i.rf433_fifo_get_length 0x080022a8 Section 0 rf433_hal.o(i.rf433_fifo_get_length) - rf433_fifo_get_length 0x080022a9 Thumb Code 20 rf433_hal.o(i.rf433_fifo_get_length) - i.rf433_fifo_read 0x080022c0 Section 0 rf433_hal.o(i.rf433_fifo_read) - rf433_fifo_read 0x080022c1 Thumb Code 100 rf433_hal.o(i.rf433_fifo_read) - i.rf433_fifo_write 0x08002330 Section 0 rf433_hal.o(i.rf433_fifo_write) - rf433_fifo_write 0x08002331 Thumb Code 82 rf433_hal.o(i.rf433_fifo_write) - i.rf433_hal_1ms_callback 0x08002390 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) - i.rf433_hal_aux_wait 0x080023b8 Section 0 rf433_hal.o(i.rf433_hal_aux_wait) - i.rf433_hal_deinit 0x080023f8 Section 0 rf433_hal.o(i.rf433_hal_deinit) - i.rf433_hal_fifo_clear 0x08002414 Section 0 rf433_hal.o(i.rf433_hal_fifo_clear) - i.rf433_hal_fifo_get_length 0x0800241c Section 0 rf433_hal.o(i.rf433_hal_fifo_get_length) - i.rf433_hal_fifo_read 0x08002428 Section 0 rf433_hal.o(i.rf433_hal_fifo_read) - i.rf433_hal_init 0x0800243c Section 0 rf433_hal.o(i.rf433_hal_init) - i.rf433_hal_set_work_mode 0x08002470 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) - i.rf433_hal_uart_rxcplt_callback 0x08002510 Section 0 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - i.rf433_hal_uart_tx 0x08002544 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) - i.rf433_init 0x08002574 Section 0 rf433.o(i.rf433_init) - i.rf433_rx_app_init 0x080025d4 Section 0 rf433_rx_app.o(i.rf433_rx_app_init) - i.rf433_rx_app_parse_packet 0x08002624 Section 0 rf433_rx_app.o(i.rf433_rx_app_parse_packet) - i.rf433_rx_app_start 0x08002674 Section 0 rf433_rx_app.o(i.rf433_rx_app_start) - i.rf433_rx_app_task 0x08002694 Section 0 rf433_rx_app.o(i.rf433_rx_app_task) - i.rf433_rx_start 0x08002734 Section 0 rf433.o(i.rf433_rx_start) - i.rf433_send_config_command 0x08002770 Section 0 rf433.o(i.rf433_send_config_command) - rf433_send_config_command 0x08002771 Thumb Code 30 rf433.o(i.rf433_send_config_command) - i.rf433_set_config 0x08002794 Section 0 rf433.o(i.rf433_set_config) - i.rf433_set_work_mode 0x080027ec Section 0 rf433.o(i.rf433_set_work_mode) - i.rx_led_control 0x08002804 Section 0 rf433_rx_app.o(i.rx_led_control) - rx_led_control 0x08002805 Thumb Code 18 rf433_rx_app.o(i.rx_led_control) - i.rx_update_stats 0x08002818 Section 0 rf433_rx_app.o(i.rx_update_stats) - rx_update_stats 0x08002819 Thumb Code 56 rf433_rx_app.o(i.rx_update_stats) - i.systick_interrupt_1ms_callback 0x08002854 Section 0 systick.o(i.systick_interrupt_1ms_callback) - i.uart1_check_rx_done 0x08002870 Section 0 rf433_hal.o(i.uart1_check_rx_done) - i.uart1_rx_timeout_1ms_callback 0x080028c0 Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - .constdata 0x080028c8 Section 18 stm32f1xx_hal_rcc.o(.constdata) - aPLLMULFactorTable 0x080028c8 Data 16 stm32f1xx_hal_rcc.o(.constdata) - aPredivFactorTable 0x080028d8 Data 2 stm32f1xx_hal_rcc.o(.constdata) - .constdata 0x080028da Section 24 system_stm32f1xx.o(.constdata) - .constdata 0x080028f2 Section 33 rf433.o(.constdata) - rf433_default_config 0x080028f2 Data 5 rf433.o(.constdata) - request_config 0x080028f7 Data 3 rf433.o(.constdata) - request_name 0x080028fa Data 13 rf433.o(.constdata) - request_version 0x08002907 Data 12 rf433.o(.constdata) - .constdata 0x08002913 Section 64 ctype_c.o(.constdata) + .text 0x08000128 Section 0 llushr.o(.text) + .text 0x08000148 Section 0 ctype_o.o(.text) + .text 0x08000150 Section 0 memseta.o(.text) + .text 0x08000174 Section 0 strlen.o(.text) + .text 0x08000182 Section 0 strcmp.o(.text) + .text 0x0800019e Section 0 atoi.o(.text) + .text 0x080001b8 Section 0 uidiv.o(.text) + .text 0x080001e4 Section 0 uldiv.o(.text) + .text 0x08000246 Section 0 strtol.o(.text) + .text 0x080002b6 Section 0 dadd.o(.text) + .text 0x080002b6 Section 0 iusefp.o(.text) + .text 0x08000404 Section 0 dmul.o(.text) + .text 0x080004e8 Section 0 ddiv.o(.text) + .text 0x080005c6 Section 0 dfixul.o(.text) + .text 0x080005f8 Section 48 cdrcmple.o(.text) + .text 0x08000628 Section 36 init.o(.text) + .text 0x0800064c Section 0 llshl.o(.text) + .text 0x0800066a Section 0 llsshr.o(.text) + .text 0x0800068e Section 0 _strtoul.o(.text) + .text 0x0800072c Section 0 depilogue.o(.text) + .text 0x080007e6 Section 0 _chval.o(.text) + i.BusFault_Handler 0x08000802 Section 0 stm32f1xx_it.o(i.BusFault_Handler) + i.CmdParser_FeedByte 0x08000808 Section 0 cmd_parser.o(i.CmdParser_FeedByte) + i.CmdParser_Init 0x08000b38 Section 0 cmd_parser.o(i.CmdParser_Init) + i.CmdParser_Task 0x08000b64 Section 0 cmd_parser.o(i.CmdParser_Task) + i.DebugMon_Handler 0x08000b88 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) + i.Error_Handler 0x08000b8a Section 0 main.o(i.Error_Handler) + i.HAL_DMA_Abort 0x08000b90 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + i.HAL_DMA_Abort_IT 0x08000be8 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + i.HAL_Delay 0x08000c98 Section 0 stm32f1xx_hal.o(i.HAL_Delay) + i.HAL_GPIO_Init 0x08000cc0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + i.HAL_GPIO_ReadPin 0x08000fe0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + i.HAL_GPIO_WritePin 0x08000ff0 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + i.HAL_GetTick 0x08000ffc Section 0 stm32f1xx_hal.o(i.HAL_GetTick) + i.HAL_IncTick 0x08001008 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x08001020 Section 0 stm32f1xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x08001048 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x08001094 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x080010e8 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08001108 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_NVIC_SetPriorityGrouping 0x08001184 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + i.HAL_RCC_ClockConfig 0x080011ac Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetHCLKFreq 0x08001338 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + i.HAL_RCC_GetPCLK1Freq 0x08001344 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetPCLK2Freq 0x08001364 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + i.HAL_RCC_GetSysClockFreq 0x08001384 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x080013f4 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_Init 0x08001858 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x08001918 Section 0 spi.o(i.HAL_SPI_MspInit) + i.HAL_SYSTICK_Config 0x080019a0 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_UARTEx_RxEventCallback 0x080019d4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + i.HAL_UART_ErrorCallback 0x080019d6 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + i.HAL_UART_IRQHandler 0x080019d8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + i.HAL_UART_Init 0x08001cbc Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + i.HAL_UART_MspInit 0x08001d34 Section 0 usart.o(i.HAL_UART_MspInit) + i.HAL_UART_Receive_IT 0x08001ec4 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + i.HAL_UART_RxCpltCallback 0x08001ef0 Section 0 main.o(i.HAL_UART_RxCpltCallback) + i.HAL_UART_Transmit 0x08001f38 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + i.HAL_UART_Transmit_IT 0x08001fea Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + i.HAL_UART_TxCpltCallback 0x08002024 Section 0 main.o(i.HAL_UART_TxCpltCallback) + i.HardFault_Handler 0x0800203c Section 0 stm32f1xx_it.o(i.HardFault_Handler) + i.IO_Monitor_GetAllStates 0x08002040 Section 0 io_monitor.o(i.IO_Monitor_GetAllStates) + i.IO_Monitor_GetState 0x08002068 Section 0 io_monitor.o(i.IO_Monitor_GetState) + i.IO_Monitor_Init 0x08002080 Section 0 io_monitor.o(i.IO_Monitor_Init) + i.IO_Monitor_Task 0x08002100 Section 0 io_monitor.o(i.IO_Monitor_Task) + i.MX_GPIO_Init 0x08002188 Section 0 gpio.o(i.MX_GPIO_Init) + i.MX_SPI2_Init 0x08002298 Section 0 spi.o(i.MX_SPI2_Init) + i.MX_USART1_UART_Init 0x080022dc Section 0 usart.o(i.MX_USART1_UART_Init) + i.MX_USART2_UART_Init 0x08002314 Section 0 usart.o(i.MX_USART2_UART_Init) + i.MX_USART3_UART_Init 0x0800234c Section 0 usart.o(i.MX_USART3_UART_Init) + i.MemManage_Handler 0x08002384 Section 0 stm32f1xx_it.o(i.MemManage_Handler) + i.NMI_Handler 0x08002388 Section 0 stm32f1xx_it.o(i.NMI_Handler) + i.PendSV_Handler 0x0800238c Section 0 stm32f1xx_it.o(i.PendSV_Handler) + i.RCC_Delay 0x08002390 Section 0 stm32f1xx_hal_rcc.o(i.RCC_Delay) + RCC_Delay 0x08002391 Thumb Code 36 stm32f1xx_hal_rcc.o(i.RCC_Delay) + i.Relay_Init 0x080023b8 Section 0 relay_control.o(i.Relay_Init) + i.Relay_SetState 0x08002418 Section 0 relay_control.o(i.Relay_SetState) + i.SVC_Handler 0x08002548 Section 0 stm32f1xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x0800254a Section 0 stm32f1xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x08002556 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x080025bc Section 0 system_stm32f1xx.o(i.SystemInit) + i.UART2_Print_Init 0x080025c0 Section 0 uart2_print.o(i.UART2_Print_Init) + i.UART2_Print_Printf 0x08002610 Section 0 uart2_print.o(i.UART2_Print_Printf) + i.UART2_Print_Send 0x08002650 Section 0 uart2_print.o(i.UART2_Print_Send) + i.UART2_Print_String 0x08002704 Section 0 uart2_print.o(i.UART2_Print_String) + i.UART2_Print_Task 0x08002720 Section 0 uart2_print.o(i.UART2_Print_Task) + i.UART2_Print_TxCpltCallback 0x0800278c Section 0 uart2_print.o(i.UART2_Print_TxCpltCallback) + i.UART_DMAAbortOnError 0x080027f8 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + UART_DMAAbortOnError 0x080027f9 Thumb Code 20 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + i.UART_EndRxTransfer 0x0800280c Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + UART_EndRxTransfer 0x0800280d Thumb Code 108 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + i.UART_EndTransmit_IT 0x08002878 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + UART_EndTransmit_IT 0x08002879 Thumb Code 32 stm32f1xx_hal_uart.o(i.UART_EndTransmit_IT) + i.UART_Receive_IT 0x08002898 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + UART_Receive_IT 0x08002899 Thumb Code 252 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + i.UART_SetConfig 0x08002994 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) + UART_SetConfig 0x08002995 Thumb Code 248 stm32f1xx_hal_uart.o(i.UART_SetConfig) + i.UART_Start_Receive_IT 0x08002a90 Section 0 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + i.UART_Transmit_IT 0x08002ad0 Section 0 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + UART_Transmit_IT 0x08002ad1 Thumb Code 96 stm32f1xx_hal_uart.o(i.UART_Transmit_IT) + i.UART_WaitOnFlagUntilTimeout 0x08002b30 Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + UART_WaitOnFlagUntilTimeout 0x08002b31 Thumb Code 146 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.USART1_IRQHandler 0x08002bc4 Section 0 stm32f1xx_it.o(i.USART1_IRQHandler) + i.USART2_IRQHandler 0x08002bd4 Section 0 stm32f1xx_it.o(i.USART2_IRQHandler) + i.USART3_IRQHandler 0x08002be4 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) + i.UsageFault_Handler 0x08002bf4 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) + i.__0printf 0x08002bf8 Section 0 printfa.o(i.__0printf) + i.__0snprintf 0x08002c18 Section 0 printfa.o(i.__0snprintf) + i.__0vsnprintf 0x08002c4c Section 0 printfa.o(i.__0vsnprintf) + i.__NVIC_GetPriorityGrouping 0x08002c80 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + __NVIC_GetPriorityGrouping 0x08002c81 Thumb Code 10 stm32f1xx_hal_cortex.o(i.__NVIC_GetPriorityGrouping) + i.__NVIC_SetPriority 0x08002c90 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + __NVIC_SetPriority 0x08002c91 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + i.__aeabi_errno_addr 0x08002cb8 Section 0 errno.o(i.__aeabi_errno_addr) + i.__scatterload_copy 0x08002cc0 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x08002cce Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x08002cd0 Section 14 handlers.o(i.__scatterload_zeroinit) + i._fp_digits 0x08002ce0 Section 0 printfa.o(i._fp_digits) + _fp_digits 0x08002ce1 Thumb Code 366 printfa.o(i._fp_digits) + i._printf_core 0x08002e64 Section 0 printfa.o(i._printf_core) + _printf_core 0x08002e65 Thumb Code 1704 printfa.o(i._printf_core) + i._printf_post_padding 0x08003518 Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x08003519 Thumb Code 36 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x0800353c Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x0800353d Thumb Code 46 printfa.o(i._printf_pre_padding) + i._snputc 0x0800356a Section 0 printfa.o(i._snputc) + _snputc 0x0800356b Thumb Code 22 printfa.o(i._snputc) + i.calc_checksum 0x08003580 Section 0 cmd_parser.o(i.calc_checksum) + calc_checksum 0x08003581 Thumb Code 26 cmd_parser.o(i.calc_checksum) + i.calc_checksum 0x0800359a Section 0 io_monitor.o(i.calc_checksum) + calc_checksum 0x0800359b Thumb Code 26 io_monitor.o(i.calc_checksum) + i.fputc 0x080035b4 Section 0 uart2_print.o(i.fputc) + i.gpio_led_tx_off 0x080035c4 Section 0 gpio.o(i.gpio_led_tx_off) + i.gpio_led_tx_on 0x080035d8 Section 0 gpio.o(i.gpio_led_tx_on) + i.hex_char_to_val 0x080035ec Section 0 cmd_parser.o(i.hex_char_to_val) + hex_char_to_val 0x080035ed Thumb Code 54 cmd_parser.o(i.hex_char_to_val) + i.hex_to_byte 0x08003622 Section 0 cmd_parser.o(i.hex_to_byte) + hex_to_byte 0x08003623 Thumb Code 28 cmd_parser.o(i.hex_to_byte) + i.is_str_empty 0x0800363e Section 0 cmd_parser.o(i.is_str_empty) + is_str_empty 0x0800363f Thumb Code 16 cmd_parser.o(i.is_str_empty) + i.is_str_numeric 0x0800364e Section 0 cmd_parser.o(i.is_str_numeric) + is_str_numeric 0x0800364f Thumb Code 48 cmd_parser.o(i.is_str_numeric) + i.is_valid_cmd_char 0x0800367e Section 0 cmd_parser.o(i.is_valid_cmd_char) + is_valid_cmd_char 0x0800367f Thumb Code 38 cmd_parser.o(i.is_valid_cmd_char) + i.is_valid_param_char 0x080036a4 Section 0 cmd_parser.o(i.is_valid_param_char) + is_valid_param_char 0x080036a5 Thumb Code 38 cmd_parser.o(i.is_valid_param_char) + i.main 0x080036cc Section 0 main.o(i.main) + i.process_cmd_frame 0x0800380c Section 0 cmd_parser.o(i.process_cmd_frame) + process_cmd_frame 0x0800380d Thumb Code 434 cmd_parser.o(i.process_cmd_frame) + i.reset_parser 0x08003b64 Section 0 cmd_parser.o(i.reset_parser) + reset_parser 0x08003b65 Thumb Code 32 cmd_parser.o(i.reset_parser) + i.rf433_fifo_write 0x08003b88 Section 0 rf433_hal.o(i.rf433_fifo_write) + rf433_fifo_write 0x08003b89 Thumb Code 82 rf433_hal.o(i.rf433_fifo_write) + i.rf433_hal_1ms_callback 0x08003be8 Section 0 rf433_hal.o(i.rf433_hal_1ms_callback) + i.rf433_hal_aux_wait 0x08003c10 Section 0 rf433_hal.o(i.rf433_hal_aux_wait) + i.rf433_hal_deinit 0x08003c50 Section 0 rf433_hal.o(i.rf433_hal_deinit) + i.rf433_hal_init 0x08003c6c Section 0 rf433_hal.o(i.rf433_hal_init) + i.rf433_hal_set_work_mode 0x08003ca0 Section 0 rf433_hal.o(i.rf433_hal_set_work_mode) + i.rf433_hal_uart_rxcplt_callback 0x08003d40 Section 0 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) + i.rf433_hal_uart_tx 0x08003d74 Section 0 rf433_hal.o(i.rf433_hal_uart_tx) + i.rf433_init 0x08003da4 Section 0 rf433.o(i.rf433_init) + i.rf433_send_config_command 0x08003e04 Section 0 rf433.o(i.rf433_send_config_command) + rf433_send_config_command 0x08003e05 Thumb Code 30 rf433.o(i.rf433_send_config_command) + i.rf433_set_config 0x08003e28 Section 0 rf433.o(i.rf433_set_config) + i.rf433_set_work_mode 0x08003e80 Section 0 rf433.o(i.rf433_set_work_mode) + i.rf433_transmit 0x08003e98 Section 0 rf433.o(i.rf433_transmit) + i.rf433_tx_app_init 0x08003ee4 Section 0 rf433_tx_app.o(i.rf433_tx_app_init) + i.rf433_tx_app_start 0x08003f30 Section 0 rf433_tx_app.o(i.rf433_tx_app_start) + i.rf433_tx_app_task 0x08003f5c Section 0 rf433_tx_app.o(i.rf433_tx_app_task) + i.send_di_event 0x08004030 Section 0 io_monitor.o(i.send_di_event) + send_di_event 0x08004031 Thumb Code 82 io_monitor.o(i.send_di_event) + i.send_response_err 0x080040c0 Section 0 cmd_parser.o(i.send_response_err) + send_response_err 0x080040c1 Thumb Code 60 cmd_parser.o(i.send_response_err) + i.send_response_ok 0x08004110 Section 0 cmd_parser.o(i.send_response_ok) + send_response_ok 0x08004111 Thumb Code 60 cmd_parser.o(i.send_response_ok) + i.systick_interrupt_1ms_callback 0x0800415c Section 0 systick.o(i.systick_interrupt_1ms_callback) + i.tx_build_packet 0x08004178 Section 0 rf433_tx_app.o(i.tx_build_packet) + tx_build_packet 0x08004179 Thumb Code 54 rf433_tx_app.o(i.tx_build_packet) + i.tx_led_control 0x080041c0 Section 0 rf433_tx_app.o(i.tx_led_control) + tx_led_control 0x080041c1 Thumb Code 18 rf433_tx_app.o(i.tx_led_control) + i.uart1_rx_timeout_1ms_callback 0x080041d2 Section 0 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + .constdata 0x080041da Section 18 stm32f1xx_hal_rcc.o(.constdata) + aPLLMULFactorTable 0x080041da Data 16 stm32f1xx_hal_rcc.o(.constdata) + aPredivFactorTable 0x080041ea Data 2 stm32f1xx_hal_rcc.o(.constdata) + .constdata 0x080041ec Section 24 system_stm32f1xx.o(.constdata) + .constdata 0x08004204 Section 33 rf433.o(.constdata) + rf433_default_config 0x08004204 Data 5 rf433.o(.constdata) + request_config 0x08004209 Data 3 rf433.o(.constdata) + request_name 0x0800420c Data 13 rf433.o(.constdata) + request_version 0x08004219 Data 12 rf433.o(.constdata) + .constdata 0x08004225 Section 129 ctype_o.o(.constdata) + .constdata 0x080042a8 Section 4 ctype_o.o(.constdata) + table 0x080042a8 Data 4 ctype_o.o(.constdata) .data 0x20000000 Section 4 systick.o(.data) user_timerout_ms 0x20000000 Data 4 systick.o(.data) - .data 0x20000004 Section 9 stm32f1xx_hal.o(.data) - .data 0x20000010 Section 4 system_stm32f1xx.o(.data) - .data 0x20000014 Section 16 rf433.o(.data) - rf433_initialized 0x20000014 Data 1 rf433.o(.data) - rf433_current_config 0x20000015 Data 5 rf433.o(.data) - rf433_rx_started 0x2000001a Data 1 rf433.o(.data) - rf433_rx_callback 0x2000001c Data 4 rf433.o(.data) - rf433_rx_user_data 0x20000020 Data 4 rf433.o(.data) - .data 0x20000024 Section 25 rf433_hal.o(.data) - rf433_hal_initialized 0x20000024 Data 1 rf433_hal.o(.data) - rf433_fifo_head 0x20000028 Data 4 rf433_hal.o(.data) - rf433_fifo_tail 0x2000002c Data 4 rf433_hal.o(.data) - rf433_fifo_count 0x20000030 Data 4 rf433_hal.o(.data) - rf433_uart_rx_timeout 0x20000038 Data 4 rf433_hal.o(.data) - rf433_uart_rx_done 0x2000003c Data 1 rf433_hal.o(.data) - .bss 0x20000040 Section 40 rf433_rx_app.o(.bss) - g_rx_app 0x20000040 Data 40 rf433_rx_app.o(.bss) - .bss 0x20000068 Section 88 spi.o(.bss) - .bss 0x200000c0 Section 216 usart.o(.bss) - .bss 0x20000198 Section 1024 rf433.o(.bss) - rf433_buffer 0x20000198 Data 1024 rf433.o(.bss) - .bss 0x20000598 Section 1024 rf433_hal.o(.bss) - rf433_fifo_buffer 0x20000598 Data 1024 rf433_hal.o(.bss) - STACK 0x20000998 Section 1024 startup_stm32f103xb.o(STACK) + .data 0x20000004 Section 1 main.o(.data) + uart2_rx_byte 0x20000004 Data 1 main.o(.data) + .data 0x20000008 Section 69 io_monitor.o(.data) + di_channels 0x20000008 Data 64 io_monitor.o(.data) + last_scan_tick 0x20000048 Data 4 io_monitor.o(.data) + report_enabled 0x2000004c Data 1 io_monitor.o(.data) + .data 0x20000050 Section 12 relay_control.o(.data) + current_states 0x20000050 Data 4 relay_control.o(.data) + last_toggle_tick 0x20000054 Data 4 relay_control.o(.data) + toggle_count 0x20000058 Data 4 relay_control.o(.data) + .data 0x2000005c Section 9 stm32f1xx_hal.o(.data) + .data 0x20000068 Section 4 system_stm32f1xx.o(.data) + .data 0x2000006c Section 6 rf433.o(.data) + rf433_initialized 0x2000006c Data 1 rf433.o(.data) + rf433_current_config 0x2000006d Data 5 rf433.o(.data) + .data 0x20000074 Section 25 rf433_hal.o(.data) + rf433_hal_initialized 0x20000074 Data 1 rf433_hal.o(.data) + rf433_fifo_head 0x20000078 Data 4 rf433_hal.o(.data) + rf433_fifo_tail 0x2000007c Data 4 rf433_hal.o(.data) + rf433_fifo_count 0x20000080 Data 4 rf433_hal.o(.data) + rf433_uart_rx_timeout 0x20000088 Data 4 rf433_hal.o(.data) + rf433_uart_rx_done 0x2000008c Data 1 rf433_hal.o(.data) + .data 0x20000090 Section 4 stdout.o(.data) + .data 0x20000094 Section 4 errno.o(.data) + _errno 0x20000094 Data 4 errno.o(.data) + .bss 0x20000098 Section 28 rf433_tx_app.o(.bss) + g_tx_app 0x20000098 Data 28 rf433_tx_app.o(.bss) + .bss 0x200000b4 Section 88 spi.o(.bss) + .bss 0x2000010c Section 216 usart.o(.bss) + .bss 0x200001e4 Section 96 cmd_parser.o(.bss) + ctx 0x200001e4 Data 96 cmd_parser.o(.bss) + .bss 0x20000244 Section 266 uart2_print.o(.bss) + tx_ring 0x20000244 Data 266 uart2_print.o(.bss) + .bss 0x2000034e Section 1024 rf433.o(.bss) + rf433_buffer 0x2000034e Data 1024 rf433.o(.bss) + .bss 0x2000074e Section 1024 rf433_hal.o(.bss) + rf433_fifo_buffer 0x2000074e Data 1024 rf433_hal.o(.bss) + STACK 0x20000b50 Section 1024 startup_stm32f103xb.o(STACK) Global Symbols Symbol Name Value Ov Type Size Object(Section) - BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE + BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$ROPI$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE __ARM_use_no_argv 0x00000000 Number 0 main.o ABSOLUTE + _printf_a 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_c 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_charcount 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_d 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_e 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_f 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_flags 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_g 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_i 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_int_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_l 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ll 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lld 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lli 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llo 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llu 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llx 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_oct 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ls 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_mbtowc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_n 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_o 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_p 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_percent 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_pre_padding 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_return_value 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_s 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_sizespec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_str 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_signed 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_unsigned 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_u 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wctomb 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_widthprec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_x 0x00000000 Number 0 stubs.o ABSOLUTE __arm_fini_ - Undefined Weak Reference __cpp_initialize__aeabi_ - Undefined Weak Reference __cxa_finalize - Undefined Weak Reference __decompress - Undefined Weak Reference _clock_init - Undefined Weak Reference _microlib_exit - Undefined Weak Reference - _scanf_longlong - Undefined Weak Reference - _scanf_real - Undefined Weak Reference - _scanf_string - Undefined Weak Reference __Vectors_Size 0x000000ec Number 0 startup_stm32f103xb.o ABSOLUTE __Vectors 0x08000000 Data 4 startup_stm32f103xb.o(RESET) __Vectors_End 0x080000ec Data 0 startup_stm32f103xb.o(RESET) @@ -1156,119 +1690,166 @@ Image Symbol Table USB_HP_CAN1_TX_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) USB_LP_CAN1_RX0_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) WWDG_IRQHandler 0x0800011f Thumb Code 0 startup_stm32f103xb.o(.text) - __aeabi_memset 0x08000129 Thumb Code 14 memseta.o(.text) - __aeabi_memset4 0x08000129 Thumb Code 0 memseta.o(.text) - __aeabi_memset8 0x08000129 Thumb Code 0 memseta.o(.text) - __aeabi_memclr 0x08000137 Thumb Code 4 memseta.o(.text) - __aeabi_memclr4 0x08000137 Thumb Code 0 memseta.o(.text) - __aeabi_memclr8 0x08000137 Thumb Code 0 memseta.o(.text) - _memset$wrapper 0x0800013b Thumb Code 18 memseta.o(.text) - __0sscanf 0x0800014d Thumb Code 48 __0sscanf.o(.text) - _scanf_int 0x08000185 Thumb Code 332 _scanf_int.o(.text) - _chval 0x080002d1 Thumb Code 28 _chval.o(.text) - __vfscanf_char 0x080002f9 Thumb Code 20 scanf_char.o(.text) - _sgetc 0x08000315 Thumb Code 30 _sgetc.o(.text) - _sbackspace 0x08000333 Thumb Code 34 _sgetc.o(.text) - __scatterload 0x08000355 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000355 Thumb Code 0 init.o(.text) - isspace 0x08000379 Thumb Code 10 isspace_c.o(.text) - __vfscanf 0x08000385 Thumb Code 810 _scanf.o(.text) - __ctype_lookup 0x080006b5 Thumb Code 34 ctype_c.o(.text) - BusFault_Handler 0x080006dd Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) - DebugMon_Handler 0x080006e1 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) - Error_Handler 0x080006e3 Thumb Code 6 main.o(i.Error_Handler) - HAL_DMA_Abort 0x080006e9 Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - HAL_DMA_Abort_IT 0x08000741 Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) - HAL_Delay 0x080007f1 Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) - HAL_GPIO_Init 0x08000819 Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - HAL_GPIO_ReadPin 0x08000b39 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - HAL_GPIO_WritePin 0x08000b49 Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - HAL_GetTick 0x08000b55 Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) - HAL_IncTick 0x08000b61 Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) - HAL_Init 0x08000b79 Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) - HAL_InitTick 0x08000ba1 Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x08000bed Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x08000c41 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x08000c61 Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_NVIC_SetPriorityGrouping 0x08000cdd Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - HAL_RCC_ClockConfig 0x08000d05 Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetHCLKFreq 0x08000e91 Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - HAL_RCC_GetPCLK1Freq 0x08000e9d Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetPCLK2Freq 0x08000ebd Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - HAL_RCC_GetSysClockFreq 0x08000edd Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x08000f4d Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_Init 0x080013b1 Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x08001471 Thumb Code 124 spi.o(i.HAL_SPI_MspInit) - HAL_SYSTICK_Config 0x080014f9 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_UARTEx_RxEventCallback 0x0800152d Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) - HAL_UART_ErrorCallback 0x0800152f Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - HAL_UART_IRQHandler 0x08001531 Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) - HAL_UART_Init 0x08001815 Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - HAL_UART_MspInit 0x0800188d Thumb Code 376 usart.o(i.HAL_UART_MspInit) - HAL_UART_Receive_IT 0x08001a1d Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) - HAL_UART_RxCpltCallback 0x08001a49 Thumb Code 18 usart.o(i.HAL_UART_RxCpltCallback) - HAL_UART_Transmit 0x08001a61 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - HAL_UART_TxCpltCallback 0x08001b13 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) - HardFault_Handler 0x08001b15 Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) - MX_GPIO_Init 0x08001b19 Thumb Code 258 gpio.o(i.MX_GPIO_Init) - MX_SPI2_Init 0x08001c29 Thumb Code 58 spi.o(i.MX_SPI2_Init) - MX_USART1_UART_Init 0x08001c6d Thumb Code 46 usart.o(i.MX_USART1_UART_Init) - MX_USART2_UART_Init 0x08001ca5 Thumb Code 46 usart.o(i.MX_USART2_UART_Init) - MX_USART3_UART_Init 0x08001cdd Thumb Code 46 usart.o(i.MX_USART3_UART_Init) - MemManage_Handler 0x08001d15 Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) - NMI_Handler 0x08001d19 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) - PendSV_Handler 0x08001d1d Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - SVC_Handler 0x08001d49 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SysTick_Handler 0x08001d4b Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x08001d57 Thumb Code 102 main.o(i.SystemClock_Config) - SystemInit 0x08001dbd Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - UART_Start_Receive_IT 0x08002059 Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) - USART1_IRQHandler 0x0800218d Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) - USART2_IRQHandler 0x0800219d Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) - USART3_IRQHandler 0x080021ad Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) - UsageFault_Handler 0x080021bd Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) - __scatterload_copy 0x080021f9 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08002207 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08002209 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - gpio_led_rx_off 0x08002219 Thumb Code 14 gpio.o(i.gpio_led_rx_off) - gpio_led_rx_on 0x0800222d Thumb Code 14 gpio.o(i.gpio_led_rx_on) - main 0x08002241 Thumb Code 68 main.o(i.main) - rf433_hal_1ms_callback 0x08002391 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) - rf433_hal_aux_wait 0x080023b9 Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) - rf433_hal_deinit 0x080023f9 Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) - rf433_hal_fifo_clear 0x08002415 Thumb Code 8 rf433_hal.o(i.rf433_hal_fifo_clear) - rf433_hal_fifo_get_length 0x0800241d Thumb Code 12 rf433_hal.o(i.rf433_hal_fifo_get_length) - rf433_hal_fifo_read 0x08002429 Thumb Code 20 rf433_hal.o(i.rf433_hal_fifo_read) - rf433_hal_init 0x0800243d Thumb Code 36 rf433_hal.o(i.rf433_hal_init) - rf433_hal_set_work_mode 0x08002471 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) - rf433_hal_uart_rxcplt_callback 0x08002511 Thumb Code 38 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) - rf433_hal_uart_tx 0x08002545 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) - rf433_init 0x08002575 Thumb Code 84 rf433.o(i.rf433_init) - rf433_rx_app_init 0x080025d5 Thumb Code 74 rf433_rx_app.o(i.rf433_rx_app_init) - rf433_rx_app_parse_packet 0x08002625 Thumb Code 72 rf433_rx_app.o(i.rf433_rx_app_parse_packet) - rf433_rx_app_start 0x08002675 Thumb Code 28 rf433_rx_app.o(i.rf433_rx_app_start) - rf433_rx_app_task 0x08002695 Thumb Code 154 rf433_rx_app.o(i.rf433_rx_app_task) - rf433_rx_start 0x08002735 Thumb Code 50 rf433.o(i.rf433_rx_start) - rf433_set_config 0x08002795 Thumb Code 84 rf433.o(i.rf433_set_config) - rf433_set_work_mode 0x080027ed Thumb Code 24 rf433.o(i.rf433_set_work_mode) - systick_interrupt_1ms_callback 0x08002855 Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) - uart1_check_rx_done 0x08002871 Thumb Code 76 rf433_hal.o(i.uart1_check_rx_done) - uart1_rx_timeout_1ms_callback 0x080028c1 Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) - AHBPrescTable 0x080028da Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x080028ea Data 8 system_stm32f1xx.o(.constdata) - __ctype_categories 0x08002913 Data 64 ctype_c.o(.constdata) - Region$$Table$$Base 0x08002954 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08002974 Number 0 anon$$obj.o(Region$$Table) - uwTick 0x20000004 Data 4 stm32f1xx_hal.o(.data) - uwTickPrio 0x20000008 Data 4 stm32f1xx_hal.o(.data) - uwTickFreq 0x2000000c Data 1 stm32f1xx_hal.o(.data) - SystemCoreClock 0x20000010 Data 4 system_stm32f1xx.o(.data) - rf433_uart_rx_tmp 0x20000034 Data 1 rf433_hal.o(.data) - hspi2 0x20000068 Data 88 spi.o(.bss) - huart1 0x200000c0 Data 72 usart.o(.bss) - huart2 0x20000108 Data 72 usart.o(.bss) - huart3 0x20000150 Data 72 usart.o(.bss) - __initial_sp 0x20000d98 Data 0 startup_stm32f103xb.o(STACK) + __aeabi_llsr 0x08000129 Thumb Code 32 llushr.o(.text) + _ll_ushift_r 0x08000129 Thumb Code 0 llushr.o(.text) + __rt_ctype_table 0x08000149 Thumb Code 4 ctype_o.o(.text) + __aeabi_memset 0x08000151 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x08000151 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x08000151 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x0800015f Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x0800015f Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x0800015f Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x08000163 Thumb Code 18 memseta.o(.text) + strlen 0x08000175 Thumb Code 14 strlen.o(.text) + strcmp 0x08000183 Thumb Code 28 strcmp.o(.text) + atoi 0x0800019f Thumb Code 26 atoi.o(.text) + __aeabi_uidiv 0x080001b9 Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x080001b9 Thumb Code 44 uidiv.o(.text) + __aeabi_uldivmod 0x080001e5 Thumb Code 98 uldiv.o(.text) + strtol 0x08000247 Thumb Code 112 strtol.o(.text) + __I$use$fp 0x080002b7 Thumb Code 0 iusefp.o(.text) + __aeabi_dadd 0x080002b7 Thumb Code 322 dadd.o(.text) + __aeabi_dsub 0x080003f9 Thumb Code 6 dadd.o(.text) + __aeabi_drsub 0x080003ff Thumb Code 6 dadd.o(.text) + __aeabi_dmul 0x08000405 Thumb Code 228 dmul.o(.text) + __aeabi_ddiv 0x080004e9 Thumb Code 222 ddiv.o(.text) + __aeabi_d2ulz 0x080005c7 Thumb Code 48 dfixul.o(.text) + __aeabi_cdrcmple 0x080005f9 Thumb Code 48 cdrcmple.o(.text) + __scatterload 0x08000629 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x08000629 Thumb Code 0 init.o(.text) + __aeabi_llsl 0x0800064d Thumb Code 30 llshl.o(.text) + _ll_shift_l 0x0800064d Thumb Code 0 llshl.o(.text) + __aeabi_lasr 0x0800066b Thumb Code 36 llsshr.o(.text) + _ll_sshift_r 0x0800066b Thumb Code 0 llsshr.o(.text) + _strtoul 0x0800068f Thumb Code 158 _strtoul.o(.text) + _double_round 0x0800072d Thumb Code 30 depilogue.o(.text) + _double_epilogue 0x0800074b Thumb Code 156 depilogue.o(.text) + _chval 0x080007e7 Thumb Code 28 _chval.o(.text) + BusFault_Handler 0x08000803 Thumb Code 4 stm32f1xx_it.o(i.BusFault_Handler) + CmdParser_FeedByte 0x08000809 Thumb Code 730 cmd_parser.o(i.CmdParser_FeedByte) + CmdParser_Init 0x08000b39 Thumb Code 24 cmd_parser.o(i.CmdParser_Init) + CmdParser_Task 0x08000b65 Thumb Code 32 cmd_parser.o(i.CmdParser_Task) + DebugMon_Handler 0x08000b89 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) + Error_Handler 0x08000b8b Thumb Code 6 main.o(i.Error_Handler) + HAL_DMA_Abort 0x08000b91 Thumb Code 86 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) + HAL_DMA_Abort_IT 0x08000be9 Thumb Code 172 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + HAL_Delay 0x08000c99 Thumb Code 36 stm32f1xx_hal.o(i.HAL_Delay) + HAL_GPIO_Init 0x08000cc1 Thumb Code 766 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + HAL_GPIO_ReadPin 0x08000fe1 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_ReadPin) + HAL_GPIO_WritePin 0x08000ff1 Thumb Code 12 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + HAL_GetTick 0x08000ffd Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) + HAL_IncTick 0x08001009 Thumb Code 16 stm32f1xx_hal.o(i.HAL_IncTick) + HAL_Init 0x08001021 Thumb Code 34 stm32f1xx_hal.o(i.HAL_Init) + HAL_InitTick 0x08001049 Thumb Code 64 stm32f1xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x08001095 Thumb Code 76 stm32f1xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x080010e9 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08001109 Thumb Code 124 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_NVIC_SetPriorityGrouping 0x08001185 Thumb Code 32 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + HAL_RCC_ClockConfig 0x080011ad Thumb Code 376 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetHCLKFreq 0x08001339 Thumb Code 6 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + HAL_RCC_GetPCLK1Freq 0x08001345 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetPCLK2Freq 0x08001365 Thumb Code 22 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + HAL_RCC_GetSysClockFreq 0x08001385 Thumb Code 92 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x080013f5 Thumb Code 1114 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_Init 0x08001859 Thumb Code 190 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x08001919 Thumb Code 124 spi.o(i.HAL_SPI_MspInit) + HAL_SYSTICK_Config 0x080019a1 Thumb Code 52 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_UARTEx_RxEventCallback 0x080019d5 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UARTEx_RxEventCallback) + HAL_UART_ErrorCallback 0x080019d7 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + HAL_UART_IRQHandler 0x080019d9 Thumb Code 736 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + HAL_UART_Init 0x08001cbd Thumb Code 118 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + HAL_UART_MspInit 0x08001d35 Thumb Code 376 usart.o(i.HAL_UART_MspInit) + HAL_UART_Receive_IT 0x08001ec5 Thumb Code 44 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + HAL_UART_RxCpltCallback 0x08001ef1 Thumb Code 54 main.o(i.HAL_UART_RxCpltCallback) + HAL_UART_Transmit 0x08001f39 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + HAL_UART_Transmit_IT 0x08001feb Thumb Code 56 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT) + HAL_UART_TxCpltCallback 0x08002025 Thumb Code 18 main.o(i.HAL_UART_TxCpltCallback) + HardFault_Handler 0x0800203d Thumb Code 4 stm32f1xx_it.o(i.HardFault_Handler) + IO_Monitor_GetAllStates 0x08002041 Thumb Code 34 io_monitor.o(i.IO_Monitor_GetAllStates) + IO_Monitor_GetState 0x08002069 Thumb Code 20 io_monitor.o(i.IO_Monitor_GetState) + IO_Monitor_Init 0x08002081 Thumb Code 76 io_monitor.o(i.IO_Monitor_Init) + IO_Monitor_Task 0x08002101 Thumb Code 122 io_monitor.o(i.IO_Monitor_Task) + MX_GPIO_Init 0x08002189 Thumb Code 258 gpio.o(i.MX_GPIO_Init) + MX_SPI2_Init 0x08002299 Thumb Code 58 spi.o(i.MX_SPI2_Init) + MX_USART1_UART_Init 0x080022dd Thumb Code 46 usart.o(i.MX_USART1_UART_Init) + MX_USART2_UART_Init 0x08002315 Thumb Code 46 usart.o(i.MX_USART2_UART_Init) + MX_USART3_UART_Init 0x0800234d Thumb Code 46 usart.o(i.MX_USART3_UART_Init) + MemManage_Handler 0x08002385 Thumb Code 4 stm32f1xx_it.o(i.MemManage_Handler) + NMI_Handler 0x08002389 Thumb Code 4 stm32f1xx_it.o(i.NMI_Handler) + PendSV_Handler 0x0800238d Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) + Relay_Init 0x080023b9 Thumb Code 48 relay_control.o(i.Relay_Init) + Relay_SetState 0x08002419 Thumb Code 140 relay_control.o(i.Relay_SetState) + SVC_Handler 0x08002549 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) + SysTick_Handler 0x0800254b Thumb Code 12 stm32f1xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x08002557 Thumb Code 102 main.o(i.SystemClock_Config) + SystemInit 0x080025bd Thumb Code 2 system_stm32f1xx.o(i.SystemInit) + UART2_Print_Init 0x080025c1 Thumb Code 38 uart2_print.o(i.UART2_Print_Init) + UART2_Print_Printf 0x08002611 Thumb Code 62 uart2_print.o(i.UART2_Print_Printf) + UART2_Print_Send 0x08002651 Thumb Code 170 uart2_print.o(i.UART2_Print_Send) + UART2_Print_String 0x08002705 Thumb Code 28 uart2_print.o(i.UART2_Print_String) + UART2_Print_Task 0x08002721 Thumb Code 98 uart2_print.o(i.UART2_Print_Task) + UART2_Print_TxCpltCallback 0x0800278d Thumb Code 98 uart2_print.o(i.UART2_Print_TxCpltCallback) + UART_Start_Receive_IT 0x08002a91 Thumb Code 64 stm32f1xx_hal_uart.o(i.UART_Start_Receive_IT) + USART1_IRQHandler 0x08002bc5 Thumb Code 10 stm32f1xx_it.o(i.USART1_IRQHandler) + USART2_IRQHandler 0x08002bd5 Thumb Code 10 stm32f1xx_it.o(i.USART2_IRQHandler) + USART3_IRQHandler 0x08002be5 Thumb Code 10 stm32f1xx_it.o(i.USART3_IRQHandler) + UsageFault_Handler 0x08002bf5 Thumb Code 4 stm32f1xx_it.o(i.UsageFault_Handler) + __0printf 0x08002bf9 Thumb Code 22 printfa.o(i.__0printf) + __1printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) + printf 0x08002bf9 Thumb Code 0 printfa.o(i.__0printf) + __0snprintf 0x08002c19 Thumb Code 48 printfa.o(i.__0snprintf) + __1snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) + __2snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) + __c89snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) + snprintf 0x08002c19 Thumb Code 0 printfa.o(i.__0snprintf) + __0vsnprintf 0x08002c4d Thumb Code 46 printfa.o(i.__0vsnprintf) + __1vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) + __2vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) + __c89vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) + vsnprintf 0x08002c4d Thumb Code 0 printfa.o(i.__0vsnprintf) + __aeabi_errno_addr 0x08002cb9 Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x08002cb9 Thumb Code 0 errno.o(i.__aeabi_errno_addr) + __scatterload_copy 0x08002cc1 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x08002ccf Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x08002cd1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + fputc 0x080035b5 Thumb Code 16 uart2_print.o(i.fputc) + gpio_led_tx_off 0x080035c5 Thumb Code 16 gpio.o(i.gpio_led_tx_off) + gpio_led_tx_on 0x080035d9 Thumb Code 14 gpio.o(i.gpio_led_tx_on) + main 0x080036cd Thumb Code 142 main.o(i.main) + rf433_hal_1ms_callback 0x08003be9 Thumb Code 30 rf433_hal.o(i.rf433_hal_1ms_callback) + rf433_hal_aux_wait 0x08003c11 Thumb Code 58 rf433_hal.o(i.rf433_hal_aux_wait) + rf433_hal_deinit 0x08003c51 Thumb Code 22 rf433_hal.o(i.rf433_hal_deinit) + rf433_hal_init 0x08003c6d Thumb Code 36 rf433_hal.o(i.rf433_hal_init) + rf433_hal_set_work_mode 0x08003ca1 Thumb Code 150 rf433_hal.o(i.rf433_hal_set_work_mode) + rf433_hal_uart_rxcplt_callback 0x08003d41 Thumb Code 38 rf433_hal.o(i.rf433_hal_uart_rxcplt_callback) + rf433_hal_uart_tx 0x08003d75 Thumb Code 44 rf433_hal.o(i.rf433_hal_uart_tx) + rf433_init 0x08003da5 Thumb Code 84 rf433.o(i.rf433_init) + rf433_set_config 0x08003e29 Thumb Code 84 rf433.o(i.rf433_set_config) + rf433_set_work_mode 0x08003e81 Thumb Code 24 rf433.o(i.rf433_set_work_mode) + rf433_transmit 0x08003e99 Thumb Code 58 rf433.o(i.rf433_transmit) + rf433_tx_app_init 0x08003ee5 Thumb Code 70 rf433_tx_app.o(i.rf433_tx_app_init) + rf433_tx_app_start 0x08003f31 Thumb Code 40 rf433_tx_app.o(i.rf433_tx_app_start) + rf433_tx_app_task 0x08003f5d Thumb Code 206 rf433_tx_app.o(i.rf433_tx_app_task) + systick_interrupt_1ms_callback 0x0800415d Thumb Code 24 systick.o(i.systick_interrupt_1ms_callback) + uart1_rx_timeout_1ms_callback 0x080041d3 Thumb Code 8 rf433_hal.o(i.uart1_rx_timeout_1ms_callback) + AHBPrescTable 0x080041ec Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x080041fc Data 8 system_stm32f1xx.o(.constdata) + __ctype_table 0x08004225 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x080042ac Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080042cc Number 0 anon$$obj.o(Region$$Table) + uwTick 0x2000005c Data 4 stm32f1xx_hal.o(.data) + uwTickPrio 0x20000060 Data 4 stm32f1xx_hal.o(.data) + uwTickFreq 0x20000064 Data 1 stm32f1xx_hal.o(.data) + SystemCoreClock 0x20000068 Data 4 system_stm32f1xx.o(.data) + rf433_uart_rx_tmp 0x20000084 Data 1 rf433_hal.o(.data) + __stdout 0x20000090 Data 4 stdout.o(.data) + hspi2 0x200000b4 Data 88 spi.o(.bss) + huart1 0x2000010c Data 72 usart.o(.bss) + huart2 0x20000154 Data 72 usart.o(.bss) + huart3 0x2000019c Data 72 usart.o(.bss) + __initial_sp 0x20000f50 Data 0 startup_stm32f103xb.o(STACK) @@ -1278,165 +1859,222 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000029b4, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004364, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002974, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000042cc, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 2651 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 2666 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 2669 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 2671 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 2673 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 2674 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 2681 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) - 0x08000100 0x08000100 0x00000000 Code RO 2676 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) - 0x08000100 0x08000100 0x00000000 Code RO 2678 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) - 0x08000100 0x08000100 0x00000004 Code RO 2667 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x080000ec 0x080000ec 0x00000000 Code RO 2970 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 3278 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 3281 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 3283 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 3285 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 3286 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 3293 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 3288 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 3290 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 3279 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000104 0x08000104 0x00000024 Code RO 4 .text startup_stm32f103xb.o - 0x08000128 0x08000128 0x00000024 Code RO 2656 .text mc_w.l(memseta.o) - 0x0800014c 0x0800014c 0x00000038 Code RO 2662 .text mc_w.l(__0sscanf.o) - 0x08000184 0x08000184 0x0000014c Code RO 2664 .text mc_w.l(_scanf_int.o) - 0x080002d0 0x080002d0 0x0000001c Code RO 2682 .text mc_w.l(_chval.o) - 0x080002ec 0x080002ec 0x00000028 Code RO 2684 .text mc_w.l(scanf_char.o) - 0x08000314 0x08000314 0x00000040 Code RO 2686 .text mc_w.l(_sgetc.o) - 0x08000354 0x08000354 0x00000024 Code RO 2688 .text mc_w.l(init.o) - 0x08000378 0x08000378 0x0000000a Code RO 2690 .text mc_w.l(isspace_c.o) - 0x08000382 0x08000382 0x00000002 PAD - 0x08000384 0x08000384 0x00000330 Code RO 2692 .text mc_w.l(_scanf.o) - 0x080006b4 0x080006b4 0x00000028 Code RO 2694 .text mc_w.l(ctype_c.o) - 0x080006dc 0x080006dc 0x00000004 Code RO 450 i.BusFault_Handler stm32f1xx_it.o - 0x080006e0 0x080006e0 0x00000002 Code RO 451 i.DebugMon_Handler stm32f1xx_it.o - 0x080006e2 0x080006e2 0x00000006 Code RO 243 i.Error_Handler main.o - 0x080006e8 0x080006e8 0x00000056 Code RO 1312 i.HAL_DMA_Abort stm32f1xx_hal_dma.o - 0x0800073e 0x0800073e 0x00000002 PAD - 0x08000740 0x08000740 0x000000b0 Code RO 1313 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o - 0x080007f0 0x080007f0 0x00000028 Code RO 933 i.HAL_Delay stm32f1xx_hal.o - 0x08000818 0x08000818 0x00000320 Code RO 1248 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o - 0x08000b38 0x08000b38 0x00000010 Code RO 1250 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o - 0x08000b48 0x08000b48 0x0000000c Code RO 1252 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o - 0x08000b54 0x08000b54 0x0000000c Code RO 937 i.HAL_GetTick stm32f1xx_hal.o - 0x08000b60 0x08000b60 0x00000018 Code RO 943 i.HAL_IncTick stm32f1xx_hal.o - 0x08000b78 0x08000b78 0x00000028 Code RO 944 i.HAL_Init stm32f1xx_hal.o - 0x08000ba0 0x08000ba0 0x0000004c Code RO 945 i.HAL_InitTick stm32f1xx_hal.o - 0x08000bec 0x08000bec 0x00000054 Code RO 544 i.HAL_MspInit stm32f1xx_hal_msp.o - 0x08000c40 0x08000c40 0x00000020 Code RO 1408 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o - 0x08000c60 0x08000c60 0x0000007c Code RO 1414 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08000cdc 0x08000cdc 0x00000028 Code RO 1415 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o - 0x08000d04 0x08000d04 0x0000018c Code RO 1101 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o - 0x08000e90 0x08000e90 0x0000000c Code RO 1106 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o - 0x08000e9c 0x08000e9c 0x00000020 Code RO 1108 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o - 0x08000ebc 0x08000ebc 0x00000020 Code RO 1109 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o - 0x08000edc 0x08000edc 0x00000070 Code RO 1110 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o - 0x08000f4c 0x08000f4c 0x00000464 Code RO 1113 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o - 0x080013b0 0x080013b0 0x000000be Code RO 615 i.HAL_SPI_Init stm32f1xx_hal_spi.o - 0x0800146e 0x0800146e 0x00000002 PAD - 0x08001470 0x08001470 0x00000088 Code RO 339 i.HAL_SPI_MspInit spi.o - 0x080014f8 0x080014f8 0x00000034 Code RO 1419 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o - 0x0800152c 0x0800152c 0x00000002 Code RO 1982 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o - 0x0800152e 0x0800152e 0x00000002 Code RO 1996 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o - 0x08001530 0x08001530 0x000002e4 Code RO 1999 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o - 0x08001814 0x08001814 0x00000076 Code RO 2000 i.HAL_UART_Init stm32f1xx_hal_uart.o - 0x0800188a 0x0800188a 0x00000002 PAD - 0x0800188c 0x0800188c 0x00000190 Code RO 381 i.HAL_UART_MspInit usart.o - 0x08001a1c 0x08001a1c 0x0000002c Code RO 2005 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o - 0x08001a48 0x08001a48 0x00000018 Code RO 382 i.HAL_UART_RxCpltCallback usart.o - 0x08001a60 0x08001a60 0x000000b2 Code RO 2008 i.HAL_UART_Transmit stm32f1xx_hal_uart.o - 0x08001b12 0x08001b12 0x00000002 Code RO 2011 i.HAL_UART_TxCpltCallback stm32f1xx_hal_uart.o - 0x08001b14 0x08001b14 0x00000004 Code RO 452 i.HardFault_Handler stm32f1xx_it.o - 0x08001b18 0x08001b18 0x00000110 Code RO 290 i.MX_GPIO_Init gpio.o - 0x08001c28 0x08001c28 0x00000044 Code RO 340 i.MX_SPI2_Init spi.o - 0x08001c6c 0x08001c6c 0x00000038 Code RO 383 i.MX_USART1_UART_Init usart.o - 0x08001ca4 0x08001ca4 0x00000038 Code RO 384 i.MX_USART2_UART_Init usart.o - 0x08001cdc 0x08001cdc 0x00000038 Code RO 385 i.MX_USART3_UART_Init usart.o - 0x08001d14 0x08001d14 0x00000004 Code RO 453 i.MemManage_Handler stm32f1xx_it.o - 0x08001d18 0x08001d18 0x00000004 Code RO 454 i.NMI_Handler stm32f1xx_it.o - 0x08001d1c 0x08001d1c 0x00000002 Code RO 455 i.PendSV_Handler stm32f1xx_it.o - 0x08001d1e 0x08001d1e 0x00000002 PAD - 0x08001d20 0x08001d20 0x00000028 Code RO 1114 i.RCC_Delay stm32f1xx_hal_rcc.o - 0x08001d48 0x08001d48 0x00000002 Code RO 456 i.SVC_Handler stm32f1xx_it.o - 0x08001d4a 0x08001d4a 0x0000000c Code RO 457 i.SysTick_Handler stm32f1xx_it.o - 0x08001d56 0x08001d56 0x00000066 Code RO 244 i.SystemClock_Config main.o - 0x08001dbc 0x08001dbc 0x00000002 Code RO 2344 i.SystemInit system_stm32f1xx.o - 0x08001dbe 0x08001dbe 0x00000014 Code RO 2013 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o - 0x08001dd2 0x08001dd2 0x0000006c Code RO 2023 i.UART_EndRxTransfer stm32f1xx_hal_uart.o - 0x08001e3e 0x08001e3e 0x00000020 Code RO 2024 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o - 0x08001e5e 0x08001e5e 0x000000fc Code RO 2026 i.UART_Receive_IT stm32f1xx_hal_uart.o - 0x08001f5a 0x08001f5a 0x00000002 PAD - 0x08001f5c 0x08001f5c 0x000000fc Code RO 2027 i.UART_SetConfig stm32f1xx_hal_uart.o - 0x08002058 0x08002058 0x00000040 Code RO 2029 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o - 0x08002098 0x08002098 0x00000060 Code RO 2030 i.UART_Transmit_IT stm32f1xx_hal_uart.o - 0x080020f8 0x080020f8 0x00000092 Code RO 2031 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o - 0x0800218a 0x0800218a 0x00000002 PAD - 0x0800218c 0x0800218c 0x00000010 Code RO 458 i.USART1_IRQHandler stm32f1xx_it.o - 0x0800219c 0x0800219c 0x00000010 Code RO 459 i.USART2_IRQHandler stm32f1xx_it.o - 0x080021ac 0x080021ac 0x00000010 Code RO 460 i.USART3_IRQHandler stm32f1xx_it.o - 0x080021bc 0x080021bc 0x00000004 Code RO 461 i.UsageFault_Handler stm32f1xx_it.o - 0x080021c0 0x080021c0 0x00000010 Code RO 1421 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o - 0x080021d0 0x080021d0 0x00000028 Code RO 1422 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x080021f8 0x080021f8 0x0000000e Code RO 2699 i.__scatterload_copy mc_w.l(handlers.o) - 0x08002206 0x08002206 0x00000002 Code RO 2700 i.__scatterload_null mc_w.l(handlers.o) - 0x08002208 0x08002208 0x0000000e Code RO 2701 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x08002216 0x08002216 0x00000002 PAD - 0x08002218 0x08002218 0x00000014 Code RO 291 i.gpio_led_rx_off gpio.o - 0x0800222c 0x0800222c 0x00000014 Code RO 292 i.gpio_led_rx_on gpio.o - 0x08002240 0x08002240 0x0000004c Code RO 245 i.main main.o - 0x0800228c 0x0800228c 0x0000001c Code RO 2507 i.rf433_fifo_clear rf433_hal.o - 0x080022a8 0x080022a8 0x00000018 Code RO 2508 i.rf433_fifo_get_length rf433_hal.o - 0x080022c0 0x080022c0 0x00000070 Code RO 2509 i.rf433_fifo_read rf433_hal.o - 0x08002330 0x08002330 0x00000060 Code RO 2510 i.rf433_fifo_write rf433_hal.o - 0x08002390 0x08002390 0x00000028 Code RO 2511 i.rf433_hal_1ms_callback rf433_hal.o - 0x080023b8 0x080023b8 0x00000040 Code RO 2512 i.rf433_hal_aux_wait rf433_hal.o - 0x080023f8 0x080023f8 0x0000001c Code RO 2514 i.rf433_hal_deinit rf433_hal.o - 0x08002414 0x08002414 0x00000008 Code RO 2515 i.rf433_hal_fifo_clear rf433_hal.o - 0x0800241c 0x0800241c 0x0000000c Code RO 2516 i.rf433_hal_fifo_get_length rf433_hal.o - 0x08002428 0x08002428 0x00000014 Code RO 2517 i.rf433_hal_fifo_read rf433_hal.o - 0x0800243c 0x0800243c 0x00000034 Code RO 2519 i.rf433_hal_init rf433_hal.o - 0x08002470 0x08002470 0x000000a0 Code RO 2521 i.rf433_hal_set_work_mode rf433_hal.o - 0x08002510 0x08002510 0x00000034 Code RO 2523 i.rf433_hal_uart_rxcplt_callback rf433_hal.o - 0x08002544 0x08002544 0x00000030 Code RO 2524 i.rf433_hal_uart_tx rf433_hal.o - 0x08002574 0x08002574 0x00000060 Code RO 2382 i.rf433_init rf433.o - 0x080025d4 0x080025d4 0x00000050 Code RO 145 i.rf433_rx_app_init rf433_rx_app.o - 0x08002624 0x08002624 0x00000050 Code RO 146 i.rf433_rx_app_parse_packet rf433_rx_app.o - 0x08002674 0x08002674 0x00000020 Code RO 148 i.rf433_rx_app_start rf433_rx_app.o - 0x08002694 0x08002694 0x000000a0 Code RO 150 i.rf433_rx_app_task rf433_rx_app.o - 0x08002734 0x08002734 0x0000003c Code RO 2389 i.rf433_rx_start rf433.o - 0x08002770 0x08002770 0x00000024 Code RO 2393 i.rf433_send_config_command rf433.o - 0x08002794 0x08002794 0x00000058 Code RO 2395 i.rf433_set_config rf433.o - 0x080027ec 0x080027ec 0x00000018 Code RO 2396 i.rf433_set_work_mode rf433.o - 0x08002804 0x08002804 0x00000012 Code RO 151 i.rx_led_control rf433_rx_app.o - 0x08002816 0x08002816 0x00000002 PAD - 0x08002818 0x08002818 0x0000003c Code RO 152 i.rx_update_stats rf433_rx_app.o - 0x08002854 0x08002854 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o - 0x08002870 0x08002870 0x00000050 Code RO 2525 i.uart1_check_rx_done rf433_hal.o - 0x080028c0 0x080028c0 0x00000008 Code RO 2526 i.uart1_rx_timeout_1ms_callback rf433_hal.o - 0x080028c8 0x080028c8 0x00000012 Data RO 1115 .constdata stm32f1xx_hal_rcc.o - 0x080028da 0x080028da 0x00000018 Data RO 2345 .constdata system_stm32f1xx.o - 0x080028f2 0x080028f2 0x00000021 Data RO 2398 .constdata rf433.o - 0x08002913 0x08002913 0x00000040 Data RO 2695 .constdata mc_w.l(ctype_c.o) - 0x08002953 0x08002953 0x00000001 PAD - 0x08002954 0x08002954 0x00000020 Data RO 2697 Region$$Table anon$$obj.o + 0x08000128 0x08000128 0x00000020 Code RO 2973 .text mc_w.l(llushr.o) + 0x08000148 0x08000148 0x00000008 Code RO 2975 .text mc_w.l(ctype_o.o) + 0x08000150 0x08000150 0x00000024 Code RO 3005 .text mc_w.l(memseta.o) + 0x08000174 0x08000174 0x0000000e Code RO 3007 .text mc_w.l(strlen.o) + 0x08000182 0x08000182 0x0000001c Code RO 3009 .text mc_w.l(strcmp.o) + 0x0800019e 0x0800019e 0x0000001a Code RO 3276 .text mc_w.l(atoi.o) + 0x080001b8 0x080001b8 0x0000002c Code RO 3295 .text mc_w.l(uidiv.o) + 0x080001e4 0x080001e4 0x00000062 Code RO 3297 .text mc_w.l(uldiv.o) + 0x08000246 0x08000246 0x00000070 Code RO 3306 .text mc_w.l(strtol.o) + 0x080002b6 0x080002b6 0x00000000 Code RO 3308 .text mc_w.l(iusefp.o) + 0x080002b6 0x080002b6 0x0000014e Code RO 3309 .text mf_w.l(dadd.o) + 0x08000404 0x08000404 0x000000e4 Code RO 3311 .text mf_w.l(dmul.o) + 0x080004e8 0x080004e8 0x000000de Code RO 3313 .text mf_w.l(ddiv.o) + 0x080005c6 0x080005c6 0x00000030 Code RO 3315 .text mf_w.l(dfixul.o) + 0x080005f6 0x080005f6 0x00000002 PAD + 0x080005f8 0x080005f8 0x00000030 Code RO 3317 .text mf_w.l(cdrcmple.o) + 0x08000628 0x08000628 0x00000024 Code RO 3319 .text mc_w.l(init.o) + 0x0800064c 0x0800064c 0x0000001e Code RO 3321 .text mc_w.l(llshl.o) + 0x0800066a 0x0800066a 0x00000024 Code RO 3323 .text mc_w.l(llsshr.o) + 0x0800068e 0x0800068e 0x0000009e Code RO 3325 .text mc_w.l(_strtoul.o) + 0x0800072c 0x0800072c 0x000000ba Code RO 3327 .text mf_w.l(depilogue.o) + 0x080007e6 0x080007e6 0x0000001c Code RO 3329 .text mc_w.l(_chval.o) + 0x08000802 0x08000802 0x00000004 Code RO 483 i.BusFault_Handler stm32f1xx_it.o + 0x08000806 0x08000806 0x00000002 PAD + 0x08000808 0x08000808 0x00000330 Code RO 599 i.CmdParser_FeedByte cmd_parser.o + 0x08000b38 0x08000b38 0x0000002c Code RO 603 i.CmdParser_Init cmd_parser.o + 0x08000b64 0x08000b64 0x00000024 Code RO 604 i.CmdParser_Task cmd_parser.o + 0x08000b88 0x08000b88 0x00000002 Code RO 484 i.DebugMon_Handler stm32f1xx_it.o + 0x08000b8a 0x08000b8a 0x00000006 Code RO 259 i.Error_Handler main.o + 0x08000b90 0x08000b90 0x00000056 Code RO 1666 i.HAL_DMA_Abort stm32f1xx_hal_dma.o + 0x08000be6 0x08000be6 0x00000002 PAD + 0x08000be8 0x08000be8 0x000000b0 Code RO 1667 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o + 0x08000c98 0x08000c98 0x00000028 Code RO 1287 i.HAL_Delay stm32f1xx_hal.o + 0x08000cc0 0x08000cc0 0x00000320 Code RO 1602 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o + 0x08000fe0 0x08000fe0 0x00000010 Code RO 1604 i.HAL_GPIO_ReadPin stm32f1xx_hal_gpio.o + 0x08000ff0 0x08000ff0 0x0000000c Code RO 1606 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o + 0x08000ffc 0x08000ffc 0x0000000c Code RO 1291 i.HAL_GetTick stm32f1xx_hal.o + 0x08001008 0x08001008 0x00000018 Code RO 1297 i.HAL_IncTick stm32f1xx_hal.o + 0x08001020 0x08001020 0x00000028 Code RO 1298 i.HAL_Init stm32f1xx_hal.o + 0x08001048 0x08001048 0x0000004c Code RO 1299 i.HAL_InitTick stm32f1xx_hal.o + 0x08001094 0x08001094 0x00000054 Code RO 577 i.HAL_MspInit stm32f1xx_hal_msp.o + 0x080010e8 0x080010e8 0x00000020 Code RO 1762 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o + 0x08001108 0x08001108 0x0000007c Code RO 1768 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08001184 0x08001184 0x00000028 Code RO 1769 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o + 0x080011ac 0x080011ac 0x0000018c Code RO 1455 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o + 0x08001338 0x08001338 0x0000000c Code RO 1460 i.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o + 0x08001344 0x08001344 0x00000020 Code RO 1462 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o + 0x08001364 0x08001364 0x00000020 Code RO 1463 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o + 0x08001384 0x08001384 0x00000070 Code RO 1464 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o + 0x080013f4 0x080013f4 0x00000464 Code RO 1467 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o + 0x08001858 0x08001858 0x000000be Code RO 969 i.HAL_SPI_Init stm32f1xx_hal_spi.o + 0x08001916 0x08001916 0x00000002 PAD + 0x08001918 0x08001918 0x00000088 Code RO 378 i.HAL_SPI_MspInit spi.o + 0x080019a0 0x080019a0 0x00000034 Code RO 1773 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o + 0x080019d4 0x080019d4 0x00000002 Code RO 2336 i.HAL_UARTEx_RxEventCallback stm32f1xx_hal_uart.o + 0x080019d6 0x080019d6 0x00000002 Code RO 2350 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o + 0x080019d8 0x080019d8 0x000002e4 Code RO 2353 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o + 0x08001cbc 0x08001cbc 0x00000076 Code RO 2354 i.HAL_UART_Init stm32f1xx_hal_uart.o + 0x08001d32 0x08001d32 0x00000002 PAD + 0x08001d34 0x08001d34 0x00000190 Code RO 420 i.HAL_UART_MspInit usart.o + 0x08001ec4 0x08001ec4 0x0000002c Code RO 2359 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o + 0x08001ef0 0x08001ef0 0x00000048 Code RO 260 i.HAL_UART_RxCpltCallback main.o + 0x08001f38 0x08001f38 0x000000b2 Code RO 2362 i.HAL_UART_Transmit stm32f1xx_hal_uart.o + 0x08001fea 0x08001fea 0x00000038 Code RO 2364 i.HAL_UART_Transmit_IT stm32f1xx_hal_uart.o + 0x08002022 0x08002022 0x00000002 PAD + 0x08002024 0x08002024 0x00000018 Code RO 261 i.HAL_UART_TxCpltCallback main.o + 0x0800203c 0x0800203c 0x00000004 Code RO 485 i.HardFault_Handler stm32f1xx_it.o + 0x08002040 0x08002040 0x00000028 Code RO 720 i.IO_Monitor_GetAllStates io_monitor.o + 0x08002068 0x08002068 0x00000018 Code RO 722 i.IO_Monitor_GetState io_monitor.o + 0x08002080 0x08002080 0x00000080 Code RO 723 i.IO_Monitor_Init io_monitor.o + 0x08002100 0x08002100 0x00000088 Code RO 724 i.IO_Monitor_Task io_monitor.o + 0x08002188 0x08002188 0x00000110 Code RO 329 i.MX_GPIO_Init gpio.o + 0x08002298 0x08002298 0x00000044 Code RO 379 i.MX_SPI2_Init spi.o + 0x080022dc 0x080022dc 0x00000038 Code RO 421 i.MX_USART1_UART_Init usart.o + 0x08002314 0x08002314 0x00000038 Code RO 422 i.MX_USART2_UART_Init usart.o + 0x0800234c 0x0800234c 0x00000038 Code RO 423 i.MX_USART3_UART_Init usart.o + 0x08002384 0x08002384 0x00000004 Code RO 486 i.MemManage_Handler stm32f1xx_it.o + 0x08002388 0x08002388 0x00000004 Code RO 487 i.NMI_Handler stm32f1xx_it.o + 0x0800238c 0x0800238c 0x00000002 Code RO 488 i.PendSV_Handler stm32f1xx_it.o + 0x0800238e 0x0800238e 0x00000002 PAD + 0x08002390 0x08002390 0x00000028 Code RO 1468 i.RCC_Delay stm32f1xx_hal_rcc.o + 0x080023b8 0x080023b8 0x00000060 Code RO 787 i.Relay_Init relay_control.o + 0x08002418 0x08002418 0x00000130 Code RO 788 i.Relay_SetState relay_control.o + 0x08002548 0x08002548 0x00000002 Code RO 489 i.SVC_Handler stm32f1xx_it.o + 0x0800254a 0x0800254a 0x0000000c Code RO 490 i.SysTick_Handler stm32f1xx_it.o + 0x08002556 0x08002556 0x00000066 Code RO 262 i.SystemClock_Config main.o + 0x080025bc 0x080025bc 0x00000002 Code RO 2698 i.SystemInit system_stm32f1xx.o + 0x080025be 0x080025be 0x00000002 PAD + 0x080025c0 0x080025c0 0x00000050 Code RO 837 i.UART2_Print_Init uart2_print.o + 0x08002610 0x08002610 0x0000003e Code RO 839 i.UART2_Print_Printf uart2_print.o + 0x0800264e 0x0800264e 0x00000002 PAD + 0x08002650 0x08002650 0x000000b4 Code RO 840 i.UART2_Print_Send uart2_print.o + 0x08002704 0x08002704 0x0000001c Code RO 841 i.UART2_Print_String uart2_print.o + 0x08002720 0x08002720 0x0000006c Code RO 842 i.UART2_Print_Task uart2_print.o + 0x0800278c 0x0800278c 0x0000006c Code RO 843 i.UART2_Print_TxCpltCallback uart2_print.o + 0x080027f8 0x080027f8 0x00000014 Code RO 2367 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o + 0x0800280c 0x0800280c 0x0000006c Code RO 2377 i.UART_EndRxTransfer stm32f1xx_hal_uart.o + 0x08002878 0x08002878 0x00000020 Code RO 2378 i.UART_EndTransmit_IT stm32f1xx_hal_uart.o + 0x08002898 0x08002898 0x000000fc Code RO 2380 i.UART_Receive_IT stm32f1xx_hal_uart.o + 0x08002994 0x08002994 0x000000fc Code RO 2381 i.UART_SetConfig stm32f1xx_hal_uart.o + 0x08002a90 0x08002a90 0x00000040 Code RO 2383 i.UART_Start_Receive_IT stm32f1xx_hal_uart.o + 0x08002ad0 0x08002ad0 0x00000060 Code RO 2384 i.UART_Transmit_IT stm32f1xx_hal_uart.o + 0x08002b30 0x08002b30 0x00000092 Code RO 2385 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o + 0x08002bc2 0x08002bc2 0x00000002 PAD + 0x08002bc4 0x08002bc4 0x00000010 Code RO 491 i.USART1_IRQHandler stm32f1xx_it.o + 0x08002bd4 0x08002bd4 0x00000010 Code RO 492 i.USART2_IRQHandler stm32f1xx_it.o + 0x08002be4 0x08002be4 0x00000010 Code RO 493 i.USART3_IRQHandler stm32f1xx_it.o + 0x08002bf4 0x08002bf4 0x00000004 Code RO 494 i.UsageFault_Handler stm32f1xx_it.o + 0x08002bf8 0x08002bf8 0x00000020 Code RO 3248 i.__0printf mc_w.l(printfa.o) + 0x08002c18 0x08002c18 0x00000034 Code RO 3249 i.__0snprintf mc_w.l(printfa.o) + 0x08002c4c 0x08002c4c 0x00000034 Code RO 3253 i.__0vsnprintf mc_w.l(printfa.o) + 0x08002c80 0x08002c80 0x00000010 Code RO 1775 i.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o + 0x08002c90 0x08002c90 0x00000028 Code RO 1776 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08002cb8 0x08002cb8 0x00000008 Code RO 3299 i.__aeabi_errno_addr mc_w.l(errno.o) + 0x08002cc0 0x08002cc0 0x0000000e Code RO 3333 i.__scatterload_copy mc_w.l(handlers.o) + 0x08002cce 0x08002cce 0x00000002 Code RO 3334 i.__scatterload_null mc_w.l(handlers.o) + 0x08002cd0 0x08002cd0 0x0000000e Code RO 3335 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08002cde 0x08002cde 0x00000002 PAD + 0x08002ce0 0x08002ce0 0x00000184 Code RO 3255 i._fp_digits mc_w.l(printfa.o) + 0x08002e64 0x08002e64 0x000006b4 Code RO 3256 i._printf_core mc_w.l(printfa.o) + 0x08003518 0x08003518 0x00000024 Code RO 3257 i._printf_post_padding mc_w.l(printfa.o) + 0x0800353c 0x0800353c 0x0000002e Code RO 3258 i._printf_pre_padding mc_w.l(printfa.o) + 0x0800356a 0x0800356a 0x00000016 Code RO 3259 i._snputc mc_w.l(printfa.o) + 0x08003580 0x08003580 0x0000001a Code RO 605 i.calc_checksum cmd_parser.o + 0x0800359a 0x0800359a 0x0000001a Code RO 725 i.calc_checksum io_monitor.o + 0x080035b4 0x080035b4 0x00000010 Code RO 844 i.fputc uart2_print.o + 0x080035c4 0x080035c4 0x00000014 Code RO 332 i.gpio_led_tx_off gpio.o + 0x080035d8 0x080035d8 0x00000014 Code RO 333 i.gpio_led_tx_on gpio.o + 0x080035ec 0x080035ec 0x00000036 Code RO 606 i.hex_char_to_val cmd_parser.o + 0x08003622 0x08003622 0x0000001c Code RO 607 i.hex_to_byte cmd_parser.o + 0x0800363e 0x0800363e 0x00000010 Code RO 608 i.is_str_empty cmd_parser.o + 0x0800364e 0x0800364e 0x00000030 Code RO 609 i.is_str_numeric cmd_parser.o + 0x0800367e 0x0800367e 0x00000026 Code RO 610 i.is_valid_cmd_char cmd_parser.o + 0x080036a4 0x080036a4 0x00000026 Code RO 611 i.is_valid_param_char cmd_parser.o + 0x080036ca 0x080036ca 0x00000002 PAD + 0x080036cc 0x080036cc 0x00000140 Code RO 263 i.main main.o + 0x0800380c 0x0800380c 0x00000358 Code RO 612 i.process_cmd_frame cmd_parser.o + 0x08003b64 0x08003b64 0x00000024 Code RO 613 i.reset_parser cmd_parser.o + 0x08003b88 0x08003b88 0x00000060 Code RO 2829 i.rf433_fifo_write rf433_hal.o + 0x08003be8 0x08003be8 0x00000028 Code RO 2830 i.rf433_hal_1ms_callback rf433_hal.o + 0x08003c10 0x08003c10 0x00000040 Code RO 2831 i.rf433_hal_aux_wait rf433_hal.o + 0x08003c50 0x08003c50 0x0000001c Code RO 2833 i.rf433_hal_deinit rf433_hal.o + 0x08003c6c 0x08003c6c 0x00000034 Code RO 2838 i.rf433_hal_init rf433_hal.o + 0x08003ca0 0x08003ca0 0x000000a0 Code RO 2840 i.rf433_hal_set_work_mode rf433_hal.o + 0x08003d40 0x08003d40 0x00000034 Code RO 2842 i.rf433_hal_uart_rxcplt_callback rf433_hal.o + 0x08003d74 0x08003d74 0x00000030 Code RO 2843 i.rf433_hal_uart_tx rf433_hal.o + 0x08003da4 0x08003da4 0x00000060 Code RO 2736 i.rf433_init rf433.o + 0x08003e04 0x08003e04 0x00000024 Code RO 2739 i.rf433_send_config_command rf433.o + 0x08003e28 0x08003e28 0x00000058 Code RO 2741 i.rf433_set_config rf433.o + 0x08003e80 0x08003e80 0x00000018 Code RO 2742 i.rf433_set_work_mode rf433.o + 0x08003e98 0x08003e98 0x0000004c Code RO 2743 i.rf433_transmit rf433.o + 0x08003ee4 0x08003ee4 0x0000004c Code RO 155 i.rf433_tx_app_init rf433_tx_app.o + 0x08003f30 0x08003f30 0x0000002c Code RO 158 i.rf433_tx_app_start rf433_tx_app.o + 0x08003f5c 0x08003f5c 0x000000d4 Code RO 160 i.rf433_tx_app_task rf433_tx_app.o + 0x08004030 0x08004030 0x00000090 Code RO 726 i.send_di_event io_monitor.o + 0x080040c0 0x080040c0 0x00000050 Code RO 614 i.send_response_err cmd_parser.o + 0x08004110 0x08004110 0x0000004c Code RO 615 i.send_response_ok cmd_parser.o + 0x0800415c 0x0800415c 0x0000001c Code RO 14 i.systick_interrupt_1ms_callback systick.o + 0x08004178 0x08004178 0x00000048 Code RO 161 i.tx_build_packet rf433_tx_app.o + 0x080041c0 0x080041c0 0x00000012 Code RO 162 i.tx_led_control rf433_tx_app.o + 0x080041d2 0x080041d2 0x00000008 Code RO 2845 i.uart1_rx_timeout_1ms_callback rf433_hal.o + 0x080041da 0x080041da 0x00000012 Data RO 1469 .constdata stm32f1xx_hal_rcc.o + 0x080041ec 0x080041ec 0x00000018 Data RO 2699 .constdata system_stm32f1xx.o + 0x08004204 0x08004204 0x00000021 Data RO 2746 .constdata rf433.o + 0x08004225 0x08004225 0x00000081 Data RO 2976 .constdata mc_w.l(ctype_o.o) + 0x080042a6 0x080042a6 0x00000002 PAD + 0x080042a8 0x080042a8 0x00000004 Data RO 2977 .constdata mc_w.l(ctype_o.o) + 0x080042ac 0x080042ac 0x00000020 Data RO 3331 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002974, Size: 0x00000d98, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080042cc, Size: 0x00000f50, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08002974 0x00000004 Data RW 16 .data systick.o - 0x20000004 0x08002978 0x00000009 Data RW 951 .data stm32f1xx_hal.o - 0x2000000d 0x08002981 0x00000003 PAD - 0x20000010 0x08002984 0x00000004 Data RW 2346 .data system_stm32f1xx.o - 0x20000014 0x08002988 0x00000010 Data RW 2399 .data rf433.o - 0x20000024 0x08002998 0x00000019 Data RW 2529 .data rf433_hal.o - 0x2000003d 0x080029b1 0x00000003 PAD - 0x20000040 - 0x00000028 Zero RW 153 .bss rf433_rx_app.o - 0x20000068 - 0x00000058 Zero RW 341 .bss spi.o - 0x200000c0 - 0x000000d8 Zero RW 387 .bss usart.o - 0x20000198 - 0x00000400 Zero RW 2397 .bss rf433.o - 0x20000598 - 0x00000400 Zero RW 2528 .bss rf433_hal.o - 0x20000998 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o + 0x20000000 0x080042cc 0x00000004 Data RW 16 .data systick.o + 0x20000004 0x080042d0 0x00000001 Data RW 264 .data main.o + 0x20000005 0x080042d1 0x00000003 PAD + 0x20000008 0x080042d4 0x00000045 Data RW 727 .data io_monitor.o + 0x2000004d 0x08004319 0x00000003 PAD + 0x20000050 0x0800431c 0x0000000c Data RW 790 .data relay_control.o + 0x2000005c 0x08004328 0x00000009 Data RW 1305 .data stm32f1xx_hal.o + 0x20000065 0x08004331 0x00000003 PAD + 0x20000068 0x08004334 0x00000004 Data RW 2700 .data system_stm32f1xx.o + 0x2000006c 0x08004338 0x00000006 Data RW 2747 .data rf433.o + 0x20000072 0x0800433e 0x00000002 PAD + 0x20000074 0x08004340 0x00000019 Data RW 2848 .data rf433_hal.o + 0x2000008d 0x08004359 0x00000003 PAD + 0x20000090 0x0800435c 0x00000004 Data RW 3294 .data mc_w.l(stdout.o) + 0x20000094 0x08004360 0x00000004 Data RW 3302 .data mc_w.l(errno.o) + 0x20000098 - 0x0000001c Zero RW 163 .bss rf433_tx_app.o + 0x200000b4 - 0x00000058 Zero RW 380 .bss spi.o + 0x2000010c - 0x000000d8 Zero RW 425 .bss usart.o + 0x200001e4 - 0x00000060 Zero RW 616 .bss cmd_parser.o + 0x20000244 - 0x0000010a Zero RW 845 .bss uart2_print.o + 0x2000034e - 0x00000400 Zero RW 2745 .bss rf433.o + 0x2000074e - 0x00000400 Zero RW 2847 .bss rf433_hal.o + 0x20000b4e 0x08004364 0x00000002 PAD + 0x20000b50 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o ============================================================================== @@ -1446,11 +2084,14 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 312 26 0 0 0 1842 gpio.o - 184 8 0 0 0 1492 main.o - 304 32 33 16 1024 4375 rf433.o - 832 112 0 25 1024 10816 rf433_hal.o - 430 28 0 0 40 8033 rf433_rx_app.o + 2192 578 0 0 96 9415 cmd_parser.o + 312 24 0 0 0 1842 gpio.o + 498 138 0 69 0 4548 io_monitor.o + 524 202 0 1 0 3924 main.o + 400 212 0 12 0 1974 relay_control.o + 320 40 33 6 1024 4383 rf433.o + 548 80 0 25 1024 6705 rf433_hal.o + 422 34 0 0 28 7669 rf433_tx_app.o 204 22 0 0 88 1597 spi.o 36 8 236 0 1024 792 startup_stm32f103xb.o 192 36 0 9 0 5809 stm32f1xx_hal.o @@ -1460,27 +2101,26 @@ Image component sizes 84 8 0 0 0 874 stm32f1xx_hal_msp.o 1748 98 18 0 0 5888 stm32f1xx_hal_rcc.o 190 0 0 0 0 1107 stm32f1xx_hal_spi.o - 2056 8 0 0 0 11880 stm32f1xx_hal_uart.o + 2110 8 0 0 0 12073 stm32f1xx_hal_uart.o 86 18 0 0 0 5206 stm32f1xx_it.o 2 0 24 4 0 1091 system_stm32f1xx.o 28 4 0 4 0 400769 systick.o - 592 60 0 0 216 3490 usart.o + 582 72 0 0 266 6828 uart2_print.o + 568 54 0 0 216 2980 usart.o ---------------------------------------------------------------------- - 8688 528 343 64 3416 499406 Object Totals + 12460 1696 343 144 3768 519819 Object Totals 0 0 32 0 0 0 (incl. Generated) - 14 0 0 6 0 0 (incl. Padding) + 20 0 0 14 2 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name - 56 8 0 0 0 84 __0sscanf.o 28 0 0 0 0 68 _chval.o - 816 6 0 0 0 112 _scanf.o - 332 0 0 0 0 96 _scanf_int.o - 64 0 0 0 0 84 _sgetc.o - 40 6 64 0 0 68 ctype_c.o + 158 0 0 0 0 92 _strtoul.o + 26 0 0 0 0 80 atoi.o + 8 4 133 0 0 68 ctype_o.o 0 0 0 0 0 0 entry.o 0 0 0 0 0 0 entry10a.o 0 0 0 0 0 0 entry11a.o @@ -1490,24 +2130,41 @@ Image component sizes 0 0 0 0 0 0 entry7b.o 0 0 0 0 0 0 entry8b.o 8 4 0 0 0 0 entry9a.o + 8 4 0 4 0 68 errno.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o - 10 0 0 0 0 68 isspace_c.o + 0 0 0 0 0 0 iusefp.o + 30 0 0 0 0 68 llshl.o + 36 0 0 0 0 68 llsshr.o + 32 0 0 0 0 68 llushr.o 36 0 0 0 0 108 memseta.o - 40 8 0 0 0 84 scanf_char.o + 2344 100 0 0 0 700 printfa.o + 0 0 0 4 0 0 stdout.o + 28 0 0 0 0 76 strcmp.o + 14 0 0 0 0 68 strlen.o + 112 0 0 0 0 88 strtol.o + 44 0 0 0 0 80 uidiv.o + 98 0 0 0 0 92 uldiv.o + 48 0 0 0 0 68 cdrcmple.o + 334 0 0 0 0 148 dadd.o + 222 0 0 0 0 100 ddiv.o + 186 0 0 0 0 176 depilogue.o + 48 0 0 0 0 68 dfixul.o + 228 0 0 0 0 96 dmul.o ---------------------------------------------------------------------- - 1516 44 65 0 0 840 Library Totals - 4 0 1 0 0 0 (incl. Padding) + 4162 124 135 8 0 2516 Library Totals + 4 0 2 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 1512 44 64 0 0 840 mc_w.l + 3092 124 133 8 0 1860 mc_w.l + 1066 0 0 0 0 656 mf_w.l ---------------------------------------------------------------------- - 1516 44 65 0 0 840 Library Totals + 4162 124 135 8 0 2516 Library Totals ---------------------------------------------------------------------- @@ -1516,15 +2173,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 10204 572 408 64 3416 495458 Grand Totals - 10204 572 408 64 3416 495458 ELF Image Totals - 10204 572 408 64 0 0 ROM Totals + 16622 1820 478 152 3768 515415 Grand Totals + 16622 1820 478 152 3768 515415 ELF Image Totals + 16622 1820 478 152 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 10612 ( 10.36kB) - Total RW Size (RW Data + ZI Data) 3480 ( 3.40kB) - Total ROM Size (Code + RO Data + RW Data) 10676 ( 10.43kB) + Total RO Size (Code + RO Data) 17100 ( 16.70kB) + Total RW Size (RW Data + ZI Data) 3920 ( 3.83kB) + Total ROM Size (Code + RO Data + RW Data) 17252 ( 16.85kB) ============================================================================== diff --git a/MDK-ARM/project/project_project.dep b/MDK-ARM/project/project_project.dep index ec16572..bae71b7 100644 --- a/MDK-ARM/project/project_project.dep +++ b/MDK-ARM/project/project_project.dep @@ -32,8 +32,10 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) F (..\Core\Src\rf433_rx_app.c)(0x69C25185)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_rx_app.o --omf_browse project\rf433_rx_app.crf --depend project\rf433_rx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A44F) -I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +F (..\Core\Src\rf433_tx_app.c)(0x69C51895)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_tx_app.o --omf_browse project\rf433_tx_app.crf --depend project\rf433_tx_app.d) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) +I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) @@ -66,9 +68,9 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) -F (..\Core\Src\rf433_tx_app.c)(0x69C23896)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433_tx_app.o --omf_browse project\rf433_tx_app.crf --depend project\rf433_tx_app.d) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A44F) -F (../Core/Src/main.c)(0x69C35425)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +F (../Core/Src/main.c)(0x69C50991)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\main.o --omf_browse project\main.crf --depend project\main.d) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) @@ -102,9 +104,14 @@ I (../Core/Inc/spi.h)(0x69C35422) I (../Core/Inc/usart.h)(0x69C35423) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A44F) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) -I (../Core/Inc/rf433_rx_app.h)(0x69C22B79) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (../Core/Inc/io_monitor.h)(0x69C50FF7) +I (../Core/Inc/cmd_parser.h)(0x69C50FF7) +I (../Core/Inc/relay_control.h)(0x69C50FF7) +I (../Core/Inc/rf433_tx_app.h)(0x69C229F8) F (../Core/Src/gpio.c)(0x69C3A25B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\gpio.o --omf_browse project\gpio.crf --depend project\gpio.d) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Core/Inc/main.h)(0x69C35425) @@ -167,7 +174,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) -F (../Core/Src/usart.c)(0x69C371A8)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) +F (../Core/Src/usart.c)(0x69C50FF9)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\usart.o --omf_browse project\usart.crf --depend project\usart.d) I (../Core/Inc/usart.h)(0x69C35423) I (../Core/Inc/main.h)(0x69C35425) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) @@ -260,6 +267,119 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +F (..\Core\Src\cmd_parser.c)(0x69C518F0)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\cmd_parser.o --omf_browse project\cmd_parser.crf --depend project\cmd_parser.d) +I (../Core/Inc/cmd_parser.h)(0x69C50FF7) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (../Core/Inc/io_monitor.h)(0x69C50FF7) +I (../Core/Inc/relay_control.h)(0x69C50FF7) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +I (C:\Keil_v5\ARM\ARMCC\include\ctype.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5F63877C) +F (..\Core\Src\io_monitor.c)(0x69C515EC)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\io_monitor.o --omf_browse project\io_monitor.crf --depend project\io_monitor.d) +I (../Core/Inc/io_monitor.h)(0x69C50FF7) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +F (..\Core\Src\relay_control.c)(0x69C51668)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\relay_control.o --omf_browse project\relay_control.crf --depend project\relay_control.d) +I (../Core/Inc/relay_control.h)(0x69C50FF7) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +F (..\Core\Src\uart2_print.c)(0x69C5159A)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\uart2_print.o --omf_browse project\uart2_print.crf --depend project\uart2_print.d) +I (../Core/Inc/uart2_print.h)(0x69C50FF9) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) +I (../Core/Inc/usart.h)(0x69C35423) +I (../Core/Inc/main.h)(0x69C35425) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) +I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h)(0x69AAA0CD) +I (../Drivers/CMSIS/Include/core_cm3.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_version.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_compiler.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x69AAA0BA) +I (../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5F63877C) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) +I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) F (../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c)(0x69AAA0CD)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\stm32f1xx_hal_gpio_ex.o --omf_browse project\stm32f1xx_hal_gpio_ex.crf --depend project\stm32f1xx_hal_gpio_ex.d) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) @@ -692,13 +812,14 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h)(0x69AAA0CD) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h)(0x69AAA0CD) -F (..\Driver_RF433\Src\rf433.c)(0x69C2437C)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) +F (..\Driver_RF433\Src\rf433.c)(0x69C51984)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/u8g2Lib/inc -I ../Middlewares/MultMenu/application -I ../Middlewares/MultMenu/disp -I ../Middlewares/MultMenu/menu -I ../Driver_RF433 -I ../Driver_RF433/Inc -I ../Driver_RF433/Src -I.\RTE\_project -IC:\Users\xtell\AppData\Local\Arm\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include -IC:\Users\xtell\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__UVISION_VERSION="543" -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o project\rf433.o --omf_browse project\rf433.crf --depend project\rf433.d) I (../Driver_RF433/Inc/rf433.h)(0x69C222AA) -I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A44F) +I (../Driver_RF433/Inc/rf433_config.h)(0x69C3A682) I (../Driver_RF433/Inc/rf433_hal.h)(0x69C2716B) I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\stdbool.h)(0x5F63877C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5F63878A) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x69AAA0CD) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x69C35424) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h)(0x69AAA0CD) @@ -758,5 +879,5 @@ I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5F63877C) I (../Core/Inc/gpio.h)(0x665D64E1) I (../Core/Inc/usart.h)(0x69C35423) F (..\Driver_RF433\Inc\rf433.h)(0x69C222AA)() -F (..\Driver_RF433\Inc\rf433_config.h)(0x69C3A44F)() +F (..\Driver_RF433\Inc\rf433_config.h)(0x69C3A682)() F (..\Driver_RF433\Inc\rf433_hal.h)(0x69C2716B)() diff --git a/MDK-ARM/project/relay_control.crf b/MDK-ARM/project/relay_control.crf new file mode 100644 index 0000000..f493ce2 Binary files /dev/null and b/MDK-ARM/project/relay_control.crf differ diff --git a/MDK-ARM/project/relay_control.d b/MDK-ARM/project/relay_control.d new file mode 100644 index 0000000..676ca1c --- /dev/null +++ b/MDK-ARM/project/relay_control.d @@ -0,0 +1,34 @@ +project\relay_control.o: ..\Core\Src\relay_control.c +project\relay_control.o: ../Core/Inc/relay_control.h +project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\relay_control.o: ../Core/Inc/uart2_print.h +project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\relay_control.o: ../Core/Inc/main.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\relay_control.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\relay_control.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\relay_control.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\relay_control.o: ../Drivers/CMSIS/Include/core_cm3.h +project\relay_control.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\relay_control.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\relay_control.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\relay_control.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\relay_control.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\relay_control.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h diff --git a/MDK-ARM/project/relay_control.o b/MDK-ARM/project/relay_control.o new file mode 100644 index 0000000..5396e7e Binary files /dev/null and b/MDK-ARM/project/relay_control.o differ diff --git a/MDK-ARM/project/rf433.crf b/MDK-ARM/project/rf433.crf index 8503212..99e5151 100644 Binary files a/MDK-ARM/project/rf433.crf and b/MDK-ARM/project/rf433.crf differ diff --git a/MDK-ARM/project/rf433.d b/MDK-ARM/project/rf433.d index 09f7138..df9bfc5 100644 --- a/MDK-ARM/project/rf433.d +++ b/MDK-ARM/project/rf433.d @@ -5,6 +5,7 @@ project\rf433.o: ../Driver_RF433/Inc/rf433_hal.h project\rf433.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h project\rf433.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h project\rf433.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\rf433.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h project\rf433.o: ../Core/Inc/stm32f1xx_hal_conf.h project\rf433.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h diff --git a/MDK-ARM/project/rf433.o b/MDK-ARM/project/rf433.o index 715628c..bd7a490 100644 Binary files a/MDK-ARM/project/rf433.o and b/MDK-ARM/project/rf433.o differ diff --git a/MDK-ARM/project/rf433_hal.o b/MDK-ARM/project/rf433_hal.o index 08185f7..217c676 100644 Binary files a/MDK-ARM/project/rf433_hal.o and b/MDK-ARM/project/rf433_hal.o differ diff --git a/MDK-ARM/project/rf433_rx_app.crf b/MDK-ARM/project/rf433_rx_app.crf index b31cc41..8947281 100644 Binary files a/MDK-ARM/project/rf433_rx_app.crf and b/MDK-ARM/project/rf433_rx_app.crf differ diff --git a/MDK-ARM/project/rf433_rx_app.d b/MDK-ARM/project/rf433_rx_app.d index 2eb4dd5..cc88e24 100644 --- a/MDK-ARM/project/rf433_rx_app.d +++ b/MDK-ARM/project/rf433_rx_app.d @@ -1,36 +1,2 @@ project\rf433_rx_app.o: ..\Core\Src\rf433_rx_app.c project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433_config.h -project\rf433_rx_app.o: ../Core/Inc/rf433_rx_app.h -project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433.h -project\rf433_rx_app.o: ../Driver_RF433/Inc/rf433_hal.h -project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h -project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h -project\rf433_rx_app.o: ../Core/Inc/main.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h -project\rf433_rx_app.o: ../Core/Inc/stm32f1xx_hal_conf.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Include/core_cm3.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_version.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_compiler.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Include/cmsis_armcc.h -project\rf433_rx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h -project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h -project\rf433_rx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h -project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h -project\rf433_rx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/rf433_rx_app.o b/MDK-ARM/project/rf433_rx_app.o index 4e29254..1789274 100644 Binary files a/MDK-ARM/project/rf433_rx_app.o and b/MDK-ARM/project/rf433_rx_app.o differ diff --git a/MDK-ARM/project/rf433_tx_app.crf b/MDK-ARM/project/rf433_tx_app.crf index 02e71d4..370a80c 100644 Binary files a/MDK-ARM/project/rf433_tx_app.crf and b/MDK-ARM/project/rf433_tx_app.crf differ diff --git a/MDK-ARM/project/rf433_tx_app.d b/MDK-ARM/project/rf433_tx_app.d index 900fbca..cf1cf8f 100644 --- a/MDK-ARM/project/rf433_tx_app.d +++ b/MDK-ARM/project/rf433_tx_app.d @@ -1,2 +1,38 @@ project\rf433_tx_app.o: ..\Core\Src\rf433_tx_app.c project\rf433_tx_app.o: ../Driver_RF433/Inc/rf433_config.h +project\rf433_tx_app.o: ../Core/Inc/rf433_tx_app.h +project\rf433_tx_app.o: ../Driver_RF433/Inc/rf433.h +project\rf433_tx_app.o: ../Driver_RF433/Inc/rf433_hal.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\rf433_tx_app.o: ../Core/Inc/main.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\rf433_tx_app.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Include/core_cm3.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\rf433_tx_app.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\rf433_tx_app.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +project\rf433_tx_app.o: ../Core/Inc/uart2_print.h +project\rf433_tx_app.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h diff --git a/MDK-ARM/project/rf433_tx_app.o b/MDK-ARM/project/rf433_tx_app.o index c0498f3..33198ee 100644 Binary files a/MDK-ARM/project/rf433_tx_app.o and b/MDK-ARM/project/rf433_tx_app.o differ diff --git a/MDK-ARM/project/spi.o b/MDK-ARM/project/spi.o index 9aff765..85111bb 100644 Binary files a/MDK-ARM/project/spi.o and b/MDK-ARM/project/spi.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal.o b/MDK-ARM/project/stm32f1xx_hal.o index c97044f..97e203f 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal.o and b/MDK-ARM/project/stm32f1xx_hal.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_cortex.o b/MDK-ARM/project/stm32f1xx_hal_cortex.o index 39f9bf1..bdc4475 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_cortex.o and b/MDK-ARM/project/stm32f1xx_hal_cortex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_dma.o b/MDK-ARM/project/stm32f1xx_hal_dma.o index a372eff..b0b7a6d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_dma.o and b/MDK-ARM/project/stm32f1xx_hal_dma.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_exti.o b/MDK-ARM/project/stm32f1xx_hal_exti.o index d24224d..33125cf 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_exti.o and b/MDK-ARM/project/stm32f1xx_hal_exti.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash.o b/MDK-ARM/project/stm32f1xx_hal_flash.o index 550dd30..553ecd4 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash.o and b/MDK-ARM/project/stm32f1xx_hal_flash.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o index 1f61c62..18be205 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_flash_ex.o and b/MDK-ARM/project/stm32f1xx_hal_flash_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio.o b/MDK-ARM/project/stm32f1xx_hal_gpio.o index 37f9ac2..f24497d 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio.o and b/MDK-ARM/project/stm32f1xx_hal_gpio.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o index bc0f344..6ebff8a 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o and b/MDK-ARM/project/stm32f1xx_hal_gpio_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_msp.o b/MDK-ARM/project/stm32f1xx_hal_msp.o index 45076ff..792129a 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_msp.o and b/MDK-ARM/project/stm32f1xx_hal_msp.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_pwr.o b/MDK-ARM/project/stm32f1xx_hal_pwr.o index ad3f961..43574aa 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_pwr.o and b/MDK-ARM/project/stm32f1xx_hal_pwr.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc.o b/MDK-ARM/project/stm32f1xx_hal_rcc.o index 9fb0146..254cd29 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc.o and b/MDK-ARM/project/stm32f1xx_hal_rcc.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o index b6c7972..2daa038 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o and b/MDK-ARM/project/stm32f1xx_hal_rcc_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_spi.o b/MDK-ARM/project/stm32f1xx_hal_spi.o index 2fdccf4..7d94cbd 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_spi.o and b/MDK-ARM/project/stm32f1xx_hal_spi.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim.o b/MDK-ARM/project/stm32f1xx_hal_tim.o index 0bacd50..b9135ab 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim.o and b/MDK-ARM/project/stm32f1xx_hal_tim.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o index 52435f8..a1bc14c 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_tim_ex.o and b/MDK-ARM/project/stm32f1xx_hal_tim_ex.o differ diff --git a/MDK-ARM/project/stm32f1xx_hal_uart.o b/MDK-ARM/project/stm32f1xx_hal_uart.o index cb4f552..7415669 100644 Binary files a/MDK-ARM/project/stm32f1xx_hal_uart.o and b/MDK-ARM/project/stm32f1xx_hal_uart.o differ diff --git a/MDK-ARM/project/stm32f1xx_it.o b/MDK-ARM/project/stm32f1xx_it.o index 07d72df..637336e 100644 Binary files a/MDK-ARM/project/stm32f1xx_it.o and b/MDK-ARM/project/stm32f1xx_it.o differ diff --git a/MDK-ARM/project/system_stm32f1xx.o b/MDK-ARM/project/system_stm32f1xx.o index ea36722..88c04ab 100644 Binary files a/MDK-ARM/project/system_stm32f1xx.o and b/MDK-ARM/project/system_stm32f1xx.o differ diff --git a/MDK-ARM/project/systick.o b/MDK-ARM/project/systick.o index 57ccab9..9aae83c 100644 Binary files a/MDK-ARM/project/systick.o and b/MDK-ARM/project/systick.o differ diff --git a/MDK-ARM/project/uart2_print.crf b/MDK-ARM/project/uart2_print.crf new file mode 100644 index 0000000..fcaf4f2 Binary files /dev/null and b/MDK-ARM/project/uart2_print.crf differ diff --git a/MDK-ARM/project/uart2_print.d b/MDK-ARM/project/uart2_print.d new file mode 100644 index 0000000..97e86ed --- /dev/null +++ b/MDK-ARM/project/uart2_print.d @@ -0,0 +1,35 @@ +project\uart2_print.o: ..\Core\Src\uart2_print.c +project\uart2_print.o: ../Core/Inc/uart2_print.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h +project\uart2_print.o: ../Core/Inc/usart.h +project\uart2_print.o: ../Core/Inc/main.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\uart2_print.o: ../Core/Inc/stm32f1xx_hal_conf.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h +project\uart2_print.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h +project\uart2_print.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h +project\uart2_print.o: ../Drivers/CMSIS/Include/core_cm3.h +project\uart2_print.o: ../Drivers/CMSIS/Include/cmsis_version.h +project\uart2_print.o: ../Drivers/CMSIS/Include/cmsis_compiler.h +project\uart2_print.o: ../Drivers/CMSIS/Include/cmsis_armcc.h +project\uart2_print.o: ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h +project\uart2_print.o: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +project\uart2_print.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h diff --git a/MDK-ARM/project/uart2_print.o b/MDK-ARM/project/uart2_print.o new file mode 100644 index 0000000..f00ded5 Binary files /dev/null and b/MDK-ARM/project/uart2_print.o differ diff --git a/MDK-ARM/project/usart.crf b/MDK-ARM/project/usart.crf index 13aa63f..d5c32ee 100644 Binary files a/MDK-ARM/project/usart.crf and b/MDK-ARM/project/usart.crf differ diff --git a/MDK-ARM/project/usart.o b/MDK-ARM/project/usart.o index eb1bd3a..6f6bc35 100644 Binary files a/MDK-ARM/project/usart.o and b/MDK-ARM/project/usart.o differ diff --git a/code_review_report.md b/code_review_report.md new file mode 100644 index 0000000..5465db8 --- /dev/null +++ b/code_review_report.md @@ -0,0 +1,490 @@ +# STM32F103 应用层代码深度审查报告 + +## 1. 审查概述 + +**审查范围**: +- `uart2_print.c/.h` - UART2调试打印模块(环形缓冲区+中断发送) +- `io_monitor.c/.h` - 四路DI状态监控与去抖模块 +- `cmd_parser.c/.h` - ASCII指令解析状态机 +- `relay_control.c/.h` - 继电器控制模块 + +**审查方法**:静态代码分析 + 嵌入式系统安全规范检查 + +**主要发现**: +- 🔴 **高危问题**:4个(中断安全、缓冲区竞态、状态机边界) +- 🟡 **中危问题**:5个(参数校验、逻辑缺陷) +- 🟢 **低危/建议**:4个(代码健壮性) + +--- + +## 2. 详细问题清单 + +### 2.1 uart2_print 模块(最严重) + +#### 🔴 **[高危-1] UART2_Print_Send 中 is_sending 检查存在竞态条件** + +**代码位置**:`uart2_print.c` 第73-74行 + +```c +void UART2_Print_Send(const uint8_t *data, uint16_t len) +{ + // ... 写入缓冲区(已保护)... + __enable_irq(); // ← 第71行:保护区结束 + + if (written > 0 && !tx_ring.is_sending) { // ← 第73行:非原子检查! + UART2_Print_Task(); // ← 第74行 + } +} +``` + +**风险分析**: +- **触发条件**:中断正好在 `__enable_irq()` 之后、`UART2_Print_Task()` 调用之前发生 +- **触发场景**: + 1. 线程A调用 `UART2_Print_Send`,数据已写入缓冲区 + 2. `is_sending = false`,进入 if 块 + 3. 中断触发,`HAL_UART_TxCpltCallback` 执行,设置 `is_sending = true`,调用 `UART2_Print_Task` 发送一字节 + 4. `UART2_Print_Task` 再次设置 `is_sending = true` + 5. 线程A继续执行,调用 `UART2_Print_Task()`(但此时 `is_sending = true`,直接返回) + 6. **结果**:新写入的字节不会被发送,直到后续再次有数据写入 + +**后果**:调试信息丢失,尤其在高频日志输出时部分数据"静默消失" + +--- + +#### 🔴 **[高危-2] UART2_Print_Task 完全缺乏中断保护** + +**代码位置**:`uart2_print.c` 第107-122行 + +```c +void UART2_Print_Task(void) +{ + if (tx_ring.is_sending) { // ← 非原子读取 + return; + } + + if (tx_ring.tail == tx_ring.head) { // ← 非原子读取 + return; + } + + uint8_t byte = tx_ring.buffer[tx_ring.tail]; // ← 读取数据 + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; // ← 更新索引(无保护) + tx_ring.is_sending = true; // ← 非原子写入 + + HAL_UART_Transmit_IT(&huart2, &byte, 1); +} +``` + +**风险分析**: +- **触发条件**:`UART2_Print_Task` 在主循环中被调用,同时 UART TX 中断发生 +- **触发场景**: + 1. 主循环调用 `UART2_Print_Task`,通过所有检查 + 2. 读取 `byte = buffer[tail]`,`tail` 已更新,但 `is_sending` 尚未置位 + 3. UART TX 完成中断触发,`HAL_UART_TxCpltCallback` 执行 + 4. 回调检查 `tail != head`(已变化),调用 `UART2_Print_Task` + 5. 同一字节被重复发送 + +**后果**:数据重复发送,接收方收到重复字符;严重时可能导致协议解析错误 + +--- + +#### 🔴 **[高危-3] 环形缓冲区容量计算错误 - 差一错误 (Off-by-one)** + +**代码位置**: +- `uart2_print.c` 第142-148行 - `Available` 函数 +- `uart2_print.h` 第26行 - 缓冲区大小定义 + +```c +uint16_t UART2_Print_Available(void) +{ + uint16_t used; + + if (tx_ring.head >= tx_ring.tail) { + used = tx_ring.head - tx_ring.tail; + } else { + used = UART2_TX_BUFFER_SIZE - tx_ring.tail + tx_ring.head; + } + + return UART2_TX_BUFFER_SIZE - used - 1; // ← 这里减1了! +} +``` + +**问题**:当 `head = tail` 时,`used = 0`,返回 `256 - 0 - 1 = 255`。但环形缓冲区的空状态和满状态都是 `head == tail`,无法区分! + +**正确做法**:存储一个 `count` 变量,或使用 `head` 和 `tail` 之间的固定一个空位来区分满/空状态。 + +--- + +#### 🟡 **[中危-4] UART2_Print_Printf 返回值处理缺陷** + +**代码位置**:`uart2_print.c` 第96-104行 + +```c +int len = vsnprintf(buffer, sizeof(buffer), fmt, args); +va_end(args); + +if (len > 0) { // ← 问题在这里 + if (len >= (int)sizeof(buffer)) { + len = sizeof(buffer) - 1; + } + UART2_Print_Send((const uint8_t *)buffer, len); +} +``` + +**问题**:`vsnprintf` 返回值 `> 0` 表示需要写入的字符数(不包括 null)。但如果格式化结果为空字符串(返回0),则不会发送。虽然这通常不是问题,但逻辑上应使用 `len >= 0` 或 `len != -1`。 + +**风险**:低 - 基本不会触发,但不够健壮 + +--- + +### 2.2 io_monitor 模块 + +#### 🟡 **[中危-5] 去抖初始化可能遗漏第一帧变化检测** + +**代码位置**:`io_monitor.c` 第74-89行 + +```c +void IO_Monitor_Init(void) +{ + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + io_channel_t *ch = &di_channels[i]; + + ch->current_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; + ch->last_raw_state = ch->current_state; + ch->debounce_counter = IO_DEBOUNCE_COUNT; // ← 初始化为3 + ch->change_count = 0; + } + // ... +} +``` + +**风险分析**: +- `debounce_counter = IO_DEBOUNCE_COUNT (3)` +- 在第一次 `IO_Monitor_Task` 调用时,如果 `raw_state != last_raw_state` + - `debounce_counter` 被设为 0 + - 需要再检测到连续 3 次相同状态才会确认变化 +- **问题**:初始化时如果IO状态刚好处于变化沿附近,可能导致第一次变化事件被延迟最多 30ms(3×10ms)才上报 + +**风险**:低 - 仅影响初始化后第一次变化检测的响应速度 + +--- + +#### 🟢 **[建议-1] send_di_event 可被中断安全调用但存在嵌套风险** + +**代码位置**:`io_monitor.c` 第58-72行 + +`send_di_event` 调用 `UART2_Print_String`,而 `UART2_Print_String` 调用 `UART2_Print_Send`,后者使用 `__disable_irq()`。 + +**潜在问题**:如果 `IO_Monitor_Task` 在中断中调用,而此时 UART 发送中断发生,可能导致死锁(虽然STM32F103不太可能发生,因为UART中断优先级通常较高)。 + +--- + +### 2.3 cmd_parser 模块 + +#### 🔴 **[高危-6] 状态机边界条件处理不完善 - 逗号/星号丢失** + +**代码位置**:`cmd_parser.c` 第231-272行 + +```c +case PARSE_PARAM1: + if (byte == ',') { + ctx.frame.param1[ctx.field_index] = '\0'; + ctx.state = PARSE_PARAM2; + ctx.field_index = 0; + } else if (byte == '*') { + // ... 类似处理 ... + } else if (is_valid_param_char(byte)) { + if (ctx.field_index < PARAM_MAX_LEN - 1) { // ← 检查的是 field_index + ctx.frame.param1[ctx.field_index++] = byte; + // ... + } else { + ctx.error_count++; + reset_parser(); + } + } +``` + +**问题分析**: +- `PARAM_MAX_LEN = 32`,数组大小确实是 32 字节 +- 但检查条件是 `ctx.field_index < PARAM_MAX_LEN - 1` (即 < 31) +- **当 `field_index = 31` 时**,下一个字符如果是逗号或星号: + - 不是有效参数字符,进入 else 分支 + - `error_count++` 并重置解析器 +- **触发条件**:发送格式为 `$DI,ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*XX\r\n`(31个字符的参数) + +**风险**:长度接近31的参数帧会被错误拒绝,虽然这种长参数在实际应用中罕见。 + +--- + +#### 🟡 **[中危-7] 超时检测逻辑存在边界情况** + +**代码位置**:`cmd_parser.c` 第189-197行 + +```c +void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) +{ + if (ctx.state != PARSE_IDLE) { + if (current_tick - ctx.last_rx_tick > PARSE_TIMEOUT_MS) { // ← 严格大于 + ctx.error_count++; + DEBUG_LOG("Timeout, reset parser"); + reset_parser(); + return; + } + } + ctx.last_rx_tick = current_tick; // ← 每个字节都更新 +``` + +**问题**: +- 如果正好在 `timeout_ms + 1` 时刻收到字节,减去 `last_rx_tick` 等于 `timeout_ms + 1`,会被判定为超时 +- 然后 `reset_parser()` 被调用,`last_rx_tick` 不会被更新为当前时刻 +- 如果下一个字节在 `timeout_ms` 内到来,超时计数可能不准确 + +**风险**:低 - 仅在精确的时序边界触发 + +--- + +#### 🟡 **[中危-8] DI指令参数校验不完善** + +**代码位置**:`cmd_parser.c` 第145-167行 + +```c +else if (strcmp(frame->cmd, "DI") == 0) { + int channel = atoi(frame->param1); // ← atoi 空字符串返回0 + + if (channel == 0) { + // 返回所有状态 + } + else if (channel >= 1 && channel <= 4) { + // 返回指定通道状态 + } + else { + send_response_err("PARAM"); + } +} +``` + +**问题**: +- `$DI,*` 会被解析为 `channel = 0`(空字符串传给 atoi) +- `$DI,0*` 也是 `channel = 0` +- 两种格式语义不同,但处理相同 + +**风险**:低 - 功能上可能符合预期,但语义不够清晰 + +--- + +### 2.4 relay_control 模块 + +#### 🟡 **[中危-9] 继电器ID检查与硬件配置不匹配** + +**代码位置**: +- `relay_control.c` 第43-69行 +- `relay_control.h` 第24行 + +```c +#define RELAY_COUNT 1 // ← 硬件只有一个继电器 +#define RELAY_MIN_INTERVAL 100 // ← 但允许ID 1-4 + +void Relay_SetState(uint8_t relay_id, bool state) +{ + if (relay_id < 1 || relay_id > RELAY_COUNT) { // ← 检查 > 1 会失败 + DEBUG_LOG("Invalid relay ID: %d", relay_id); + return; + } +``` + +**问题**: +- `RELAY_COUNT = 1`,但允许的 relay_id 范围是 1-4 +- 如果调用 `Relay_SetState(2, true)`,会被错误拒绝 +- 与 `cmd_parser.c` 中允许 1-4 的校验逻辑不一致 + +**风险**:如果将来扩展到4个继电器但忘记更新 `RELAY_COUNT`,会导致只有第1个继电器工作 + +--- + +#### 🟡 **[中危-10] current_state 只支持单个继电器** + +**代码位置**:`relay_control.c` 第29行 + +```c +static bool current_state = false; // ← 只有一个状态变量 +``` + +**问题**:如果将来扩展到多继电器,`current_state` 无法区分各继电器状态。 + +--- + +## 3. 关键案例详解 + +### 📌 案例一(最具代表性):UART2 环形缓冲区竞态条件 + +**修改前**(uart2_print.c 第50-76行): + +```c +void UART2_Print_Send(const uint8_t *data, uint16_t len) +{ + if (len == 0 || data == NULL) { + return; + } + + uint16_t written = 0; + + __disable_irq(); + for (uint16_t i = 0; i < len; i++) { + uint16_t next = (tx_ring.head + 1) % UART2_TX_BUFFER_SIZE; + + if (next == tx_ring.tail) { + tx_ring.overflow_count++; + break; + } + + tx_ring.buffer[tx_ring.head] = data[i]; + tx_ring.head = next; + written++; + } + __enable_irq(); // ← 保护区结束 + + if (written > 0 && !tx_ring.is_sending) { // ← 竞态窗口! + UART2_Print_Task(); + } +} +``` + +**修改后(推荐方案)**: + +```c +void UART2_Print_Send(const uint8_t *data, uint16_t len) +{ + if (len == 0 || data == NULL) { + return; + } + + uint16_t written = 0; + bool needs_kickoff = false; + + __disable_irq(); + for (uint16_t i = 0; i < len; i++) { + uint16_t next = (tx_ring.head + 1) % UART2_TX_BUFFER_SIZE; + + if (next == tx_ring.tail) { + tx_ring.overflow_count++; + break; + } + + tx_ring.buffer[tx_ring.head] = data[i]; + tx_ring.head = next; + written++; + } + + if (written > 0 && !tx_ring.is_sending) { + tx_ring.is_sending = true; // ← 在保护区内设置,避免竞态 + needs_kickoff = true; + } + __enable_irq(); + + if (needs_kickoff) { + HAL_UART_Transmit_IT(&huart2, &tx_ring.buffer[tx_ring.tail], 1); + } +} +``` + +**消除的隐患**: +- 将 `is_sending` 标志的设置纳入临界区 +- 避免了中断和主循环之间的状态检查竞态 +- 数据发送的"启动"操作完全在主循环侧,中断回调只负责推进 `tail` + +--- + +### 📌 案例二:UART2_Print_Task 中断保护 + +**修改前**(uart2_print.c 第107-122行): + +```c +void UART2_Print_Task(void) +{ + if (tx_ring.is_sending) { + return; + } + + if (tx_ring.tail == tx_ring.head) { + return; + } + + uint8_t byte = tx_ring.buffer[tx_ring.tail]; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.is_sending = true; + + HAL_UART_Transmit_IT(&huart2, &byte, 1); +} +``` + +**修改后**: + +```c +void UART2_Print_Task(void) +{ + uint8_t byte; + uint16_t current_tail; + + __disable_irq(); + if (tx_ring.is_sending || tx_ring.tail == tx_ring.head) { + __enable_irq(); + return; + } + + current_tail = tx_ring.tail; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.is_sending = true; + byte = tx_ring.buffer[current_tail]; + __enable_irq(); + + HAL_UART_Transmit_IT(&huart2, &byte, 1); +} +``` + +**消除的隐患**: +- `tail` 的读取和更新在同一个临界区内完成 +- 避免了中断回调读取到"部分更新"状态的 `tail` 值 +- `is_sending` 的设置和 `byte` 的读取分离,确保中断回调不会重复触发发送 + +--- + +## 4. 总结与建议 + +### 整体代码质量评估 + +| 维度 | 评分 | 说明 | +|------|------|------| +| 功能完整性 | ⭐⭐⭐⭐ | 基本功能完整,指令解析逻辑清晰 | +| 中断安全 | ⭐⭐ | **存在严重竞态条件,必须修复** | +| 边界检查 | ⭐⭐⭐ | 大部分边界有检查,但存在遗漏 | +| 可维护性 | ⭐⭐⭐⭐ | 代码结构清晰,注释完善 | +| 防御性编程 | ⭐⭐⭐ | 有基本防护,但关键路径需加强 | + +### 必须立即修复的问题(高优先级) + +1. **[高危-1] uart2_print.c `UART2_Print_Send` 竞态条件** - 直接影响数据可靠性和调试能力 +2. **[高危-2] uart2_print.c `UART2_Print_Task` 缺乏中断保护** - 可能导致数据重复 +3. **[高危-3] uart2_print.c 环形缓冲区容量计算** - 差一错误影响缓冲区利用率 +4. **[高危-6] cmd_parser.c 状态机边界处理** - 可能拒绝合法长参数帧 + +### 建议后续优化的问题 + +5. **[中危-4] UART2_Print_Printf 返回值处理** - 改为 `len >= 0` +6. **[中危-5] io_monitor 去抖初始化** - 考虑从 1 而非 DEBOUNCE_COUNT 开始 +7. **[中危-9] relay_control RELAY_COUNT 宏定义** - 与实际校验逻辑对齐 +8. **[建议-1] 考虑使用 CMSIS_OS2 或 FreeRTOS** - 如果系统复杂度增加 + +### 最重要的3-5条改进建议 + +1. **为环形缓冲区操作引入完整的临界区保护**:所有涉及 `head`、`tail`、`is_sending` 的读写操作必须放在同一个 `__disable_irq()/__enable_irq()` 保护块内。 + +2. **重新设计环形缓冲区满/空判断机制**:使用显式的 `count` 变量或"保留一位"策略来区分 `head == tail` 的两种语义。 + +3. **为 `cmd_parser.c` 的 `vsnprintf` 缓冲区添加保护**:校验和计算应使用固定长度,避免因消息格式变化导致截断。 + +4. **增加运行时诊断接口**:如 `UART2_Print_GetOverflowCount()` 已有,建议为各模块添加更多诊断计数器,帮助现场定位问题。 + +5. **考虑使用 RTOS 的队列/信号量机制**:如果项目复杂度增加,当前这种裸机共享资源方案的可维护性会下降。 + +--- + +*审查完成。关键问题已在代码注释中标注,建议优先修复高危问题后再进行功能验证测试。* diff --git a/docs/application_development_plan.md b/docs/application_development_plan.md new file mode 100644 index 0000000..18edb26 --- /dev/null +++ b/docs/application_development_plan.md @@ -0,0 +1,994 @@ +# E32-433TBH-SC 应用层软件开发计划 + +## 项目概述 + +| 项目属性 | 描述 | +| --------- | -------------------------------- | +| **目标MCU** | STM32F103C8T6 (Cortex-M3, 72MHz) | +| **开发环境** | Keil MDK-ARM V5.32 | +| **架构模式** | 裸机轮询 + 中断驱动 | +| **当前状态** | HAL层就绪,基础通信验证通过 | + +*** + +## 一、整体架构设计 + +### 1.1 硬件资源映射 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 硬件连接关系 │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ UART1 (PA9/PA10) ◄────► RF433无线模块 (9600bps) │ +│ │ +│ UART2 (PA2/PA3) ◄────► 调试串口/上位机 (115200bps) │ +│ │ +│ UART3 (PB10/PB11) ◄────► 预留串口 (9600bps) │ +│ │ +│ MCU_DI1 (PB4) ◄────► 数字输入1 │ +│ MCU_DI2 (PB5) ◄────► 数字输入2 │ +│ MCU_DI3 (PB6) ◄────► 数字输入3 │ +│ MCU_DI4 (PB7) ◄────► 数字输入4 │ +│ │ +│ RL_Control (PA15) ◄────► 继电器控制输出 │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +### 1.2 软件分层架构 + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ 应用层 (Application) │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │ +│ │ UART2_Print │ │ 指令解析器 │ │ IO状态监控 │ │ 继电器控制 │ │ +│ │ (调试输出) │ │ (ASCII指令) │ │ (DI1-4) │ │ (RL_Control)│ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │ +├─────────────────────────────────────────────────────────────────────┤ +│ 服务层 (Service) │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ RingBuffer │ │ CmdParser │ │ Debounce │ │ +│ │ (环形缓冲区) │ │ (指令解析) │ │ (软件去抖) │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +├─────────────────────────────────────────────────────────────────────┤ +│ 驱动层 (Driver) │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ UART Driver │ │ GPIO Driver │ │ RF433 Driver │ │ +│ │ (usart.c) │ │ (gpio.c) │ │ (rf433.c) │ │ +│ └──────────────┘ └──────────────┘ └──────────────┘ │ +├─────────────────────────────────────────────────────────────────────┤ +│ 硬件抽象层 (HAL - STM32) │ +│ STM32F1xx_HAL_Driver / CMSIS │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### 1.3 核心模块交互关系 + +``` + ┌─────────────────┐ + │ UART2_Print │ + │ (调试输出) │ + └────────▲────────┘ + │ 日志/响应输出 + │ +┌──────────────┐ ┌────────┴────────┐ ┌──────────────┐ +│ UART1 │◄──►│ 指令解析器 │◄──►│ UART2 │ +│ (RF433) │ │ (CmdParser) │ │ (调试/上位机) │ +└──────────────┘ └────────┬────────┘ └──────────────┘ + │ + ┌──────────────┼──────────────┐ + │ │ │ + ▼ ▼ ▼ + ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ + │ IO状态监控 │ │ 继电器控制 │ │ RF433通信 │ + │ (DI1-4) │ │ (RL_Control)│ │ (透传模式) │ + └─────────────┘ └─────────────┘ └─────────────┘ +``` + +### 1.4 任务调度模型 + +基于现有裸机架构,采用**时间片轮询**模型: + +```c +void main(void) +{ + system_init(); + + while(1) + { + UART2_Print_Task(); // 发送缓冲区处理 + IO_Monitor_Task(); // IO扫描与去抖 + CmdParser_Task(); // 指令解析处理 + + __WFI(); // 等待中断,降低功耗 + } +} +``` + +**调度周期设计**: + +| 任务 | 执行周期 | 说明 | +| ----------------- | ---- | ----------------- | +| `UART2_Print_Task` | 1ms | 发送缓冲区数据处理 | +| `IO_Monitor_Task` | 10ms | IO扫描与去抖,足够采样间隔 | +| `CmdParser_Task` | 每轮 | 指令解析,响应无需微秒级 | + +*** + +## 二、模块详细设计 + +### 2.1 UART2_Print 模块 + +#### 2.1.1 模块职责 + +- 提供调试信息输出接口 +- 支持 `printf` 风格的格式化输出 +- 支持中断安全调用(通过环形缓冲区) + +#### 2.1.2 头文件设计 (`uart2_print.h`) + +```c +#ifndef __UART2_PRINT_H +#define __UART2_PRINT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define UART2_TX_BUFFER_SIZE 256 + +void UART2_Print_Init(void); +void UART2_Print_Send(const uint8_t *data, uint16_t len); +void UART2_Print_String(const char *str); +void UART2_Print_Printf(const char *fmt, ...); +void UART2_Print_Task(void); +bool UART2_Print_IsBusy(void); + +#ifdef __cplusplus +} +#endif + +#endif +``` + +#### 2.1.3 环形缓冲区实现 + +```c +#include "uart2_print.h" +#include "usart.h" + +typedef struct { + uint8_t buffer[UART2_TX_BUFFER_SIZE]; + volatile uint16_t head; + volatile uint16_t tail; + volatile bool is_sending; +} ring_buffer_t; + +static ring_buffer_t tx_ring = {0}; + +void UART2_Print_Init(void) +{ + tx_ring.head = 0; + tx_ring.tail = 0; + tx_ring.is_sending = false; +} + +void UART2_Print_Send(const uint8_t *data, uint16_t len) +{ + if (len == 0) return; + + __disable_irq(); + for (uint16_t i = 0; i < len; i++) { + uint16_t next = (tx_ring.head + 1) % UART2_TX_BUFFER_SIZE; + if (next == tx_ring.tail) { + break; + } + tx_ring.buffer[tx_ring.head] = data[i]; + tx_ring.head = next; + } + __enable_irq(); + + if (!tx_ring.is_sending) { + UART2_Print_Task(); + } +} + +void UART2_Print_String(const char *str) +{ + UART2_Print_Send((const uint8_t *)str, strlen(str)); +} + +void UART2_Print_Task(void) +{ + if (tx_ring.is_sending || tx_ring.tail == tx_ring.head) { + return; + } + + uint8_t byte = tx_ring.buffer[tx_ring.tail]; + tx_ring.tail = (tx_ring.tail + 1) % UART2_TX_BUFFER_SIZE; + tx_ring.is_sending = true; + + HAL_UART_Transmit_IT(&huart2, &byte, 1); +} + +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART2) { + tx_ring.is_sending = false; + if (tx_ring.tail != tx_ring.head) { + UART2_Print_Task(); + } + } +} +``` + +#### 2.1.4 printf 重定向 + +```c +#include + +#if defined(__CC_ARM) || defined(__ARMCC_VERSION) +int fputc(int ch, FILE *f) +{ + UART2_Print_Send((uint8_t *)&ch, 1); + return ch; +} +#endif +``` + +*** + +### 2.2 ASCII文本指令协议 + +#### 2.2.1 指令格式设计 + +**设计原则**: +- 人类可读,方便调试 +- 格式简单,易于解析 +- 兼容常见串口调试工具 +- **调试友好**:校验和FF为特权后门,跳过校验 + +**指令格式**: + +``` +$CMD,param1,param2*CS\r\n + +$ - 帧起始符 +CMD - 指令名称(2-4字符) +, - 参数分隔符 +param - 参数(可选) +* - 校验和起始符 +CS - 校验和(2位十六进制,从$到*之间所有字符的异或值) + 特权后门: CS=FF 时强制跳过校验,用于人工调试 +\r\n - 帧结束符 +``` + +#### 2.2.2 指令定义 + +| 指令 | 参数1 | 参数2 | 功能说明 | 示例 | +| ----- | ------------ | --------- | -------------- | ----------------------- | +| `RL` | 继电器号(1) | 0/1 | 继电器控制 | `$RL,1,1*FF\r\n` | +| `DI` | 通道号(0-4) | (无) | 查询IO状态 | `$DI,1*FF\r\n` | +| `FWD` | 目标端口(1) | 数据 | 数据转发 | `$FWD,1,Hello*FF\r\n` | +| `ECHO`| (无) | (无) | 心跳测试 | `$ECHO*FF\r\n` | + +**参数说明**: +- `RL` 指令:参数2为 `0`=关闭,`1`=打开 +- `DI` 指令:参数1为 `0`=查询所有,`1-4`=查询指定通道 + +#### 2.2.3 完整指令示例 + +**示例1:控制继电器1打开** + +``` +指令: $RL,1,1*FF\r\n + +解析: +- RL: 继电器控制指令 +- 参数1=1: 继电器编号1 +- 参数2=1: 打开 +- CS=FF: 跳过校验(调试模式) +``` + +**示例2:控制继电器1关闭** + +``` +指令: $RL,1,0*FF\r\n + +解析: +- 参数2=0: 关闭 +``` + +**示例3:查询DI1状态** + +``` +指令: $DI,1*FF\r\n + +响应: $OK,DI,1,1*XX\r\n (DI1=HIGH) +或: $OK,DI,1,0*XX\r\n (DI1=LOW) +``` + +**示例4:查询所有DI状态** + +``` +指令: $DI,0*FF\r\n + +响应: $OK,DI,1010*XX\r\n (DI1=1, DI2=0, DI3=1, DI4=0) +``` + +**示例5:转发数据到RF433** + +``` +指令: $FWD,1,Hello RF433*FF\r\n + +说明: 将"Hello RF433"转发到UART1(RF433模块) +``` + +**示例6:带校验和的正式指令** + +``` +指令: $RL,1,1*4C\r\n + +校验和计算: '$' ^ 'R' ^ 'L' ^ ',' ^ '1' ^ ',' ^ '1' + = 0x24 ^ 0x52 ^ 0x4C ^ 0x2C ^ 0x31 ^ 0x2C ^ 0x31 + = 0x4C +``` + +#### 2.2.4 响应格式 + +**成功响应**: + +``` +$OK,RL,1,1*XX\r\n (继电器1已打开) +$OK,DI,1,1*XX\r\n (DI1当前为HIGH) +$OK,DI,1010*XX\r\n (所有DI状态) +``` + +**失败响应**: + +``` +$ERR,CMD*XX\r\n (未知指令) +$ERR,CS*XX\r\n (校验和错误) +$ERR,PARAM*XX\r\n (参数错误) +``` + +**IO状态上报(主动上报)**: + +``` +$DI_EVENT,1,1*XX\r\n (DI1变为HIGH) +$DI_EVENT,3,0*XX\r\n (DI3变为LOW) +``` + +#### 2.2.5 安全防护设计 + +**防护目标**:防止畸形数据导致单片机死机(HardFault) + +**防护措施**: + +| 风险场景 | 防护措施 | 实现方式 | +| -------- | -------- | -------- | +| 缓冲区溢出 | 边界检查 | 写入前检查索引是否越界 | +| 超长数据帧 | 超时重置 | 长时间未收到完整帧则重置状态机 | +| 非法字符 | 字符过滤 | 只接受合法ASCII字符 | +| 内存越界 | 固定长度 | 使用固定大小缓冲区,拒绝超长数据 | + +#### 2.2.6 指令解析器实现(带安全防护) + +```c +#include +#include + +#define CMD_BUFFER_SIZE 64 +#define CMD_MAX_LEN 8 +#define PARAM_MAX_LEN 32 +#define PARSE_TIMEOUT_MS 1000 + +typedef enum { + PARSE_IDLE, + PARSE_CMD, + PARSE_PARAM1, + PARSE_PARAM2, + PARSE_CHECKSUM, + PARSE_COMPLETE +} parse_state_t; + +typedef struct { + char cmd[CMD_MAX_LEN]; + char param1[PARAM_MAX_LEN]; + char param2[PARAM_MAX_LEN]; + uint8_t received_cs; + uint8_t calculated_cs; + bool valid; + bool skip_checksum; +} cmd_frame_t; + +static parse_state_t parse_state = PARSE_IDLE; +static cmd_frame_t current_frame; +static uint8_t field_index = 0; +static uint8_t checksum_acc = 0; +static uint32_t last_rx_tick = 0; + +static void reset_parser(void) +{ + parse_state = PARSE_IDLE; + field_index = 0; + checksum_acc = 0; + memset(¤t_frame, 0, sizeof(current_frame)); +} + +static bool is_valid_cmd_char(char c) +{ + return isupper(c) || isdigit(c); +} + +static bool is_valid_param_char(char c) +{ + return isprint(c) && c != '*' && c != '\r' && c != '\n'; +} + +static uint8_t hex_to_byte(char high, char low) +{ + uint8_t val = 0; + + if (high >= '0' && high <= '9') val = (high - '0') << 4; + else if (high >= 'A' && high <= 'F') val = (high - 'A' + 10) << 4; + else if (high >= 'a' && high <= 'f') val = (high - 'a' + 10) << 4; + + if (low >= '0' && low <= '9') val |= (low - '0'); + else if (low >= 'A' && low <= 'F') val |= (low - 'A' + 10); + else if (low >= 'a' && low <= 'f') val |= (low - 'a' + 10); + + return val; +} + +void CmdParser_FeedByte(uint8_t byte, uint32_t current_tick) +{ + if (parse_state != PARSE_IDLE) { + if (current_tick - last_rx_tick > PARSE_TIMEOUT_MS) { + reset_parser(); + return; + } + } + last_rx_tick = current_tick; + + switch (parse_state) { + case PARSE_IDLE: + if (byte == '$') { + reset_parser(); + parse_state = PARSE_CMD; + } + break; + + case PARSE_CMD: + if (byte == ',') { + current_frame.cmd[field_index] = '\0'; + parse_state = PARSE_PARAM1; + field_index = 0; + } else if (byte == '*') { + current_frame.cmd[field_index] = '\0'; + parse_state = PARSE_CHECKSUM; + field_index = 0; + } else if (is_valid_cmd_char(byte)) { + if (field_index < CMD_MAX_LEN - 1) { + current_frame.cmd[field_index++] = byte; + checksum_acc ^= byte; + } else { + reset_parser(); + } + } else { + reset_parser(); + } + break; + + case PARSE_PARAM1: + if (byte == ',') { + current_frame.param1[field_index] = '\0'; + parse_state = PARSE_PARAM2; + field_index = 0; + } else if (byte == '*') { + current_frame.param1[field_index] = '\0'; + parse_state = PARSE_CHECKSUM; + field_index = 0; + } else if (is_valid_param_char(byte)) { + if (field_index < PARAM_MAX_LEN - 1) { + current_frame.param1[field_index++] = byte; + checksum_acc ^= byte; + } else { + reset_parser(); + } + } else { + reset_parser(); + } + break; + + case PARSE_PARAM2: + if (byte == '*') { + current_frame.param2[field_index] = '\0'; + parse_state = PARSE_CHECKSUM; + field_index = 0; + } else if (is_valid_param_char(byte)) { + if (field_index < PARAM_MAX_LEN - 1) { + current_frame.param2[field_index++] = byte; + checksum_acc ^= byte; + } else { + reset_parser(); + } + } else { + reset_parser(); + } + break; + + case PARSE_CHECKSUM: + if (byte == '\n') { + current_frame.received_cs = hex_to_byte( + current_frame.cmd[0], + current_frame.cmd[1] + ); + current_frame.calculated_cs = checksum_acc; + current_frame.skip_checksum = (current_frame.received_cs == 0xFF); + + if (current_frame.skip_checksum || + current_frame.received_cs == current_frame.calculated_cs) { + current_frame.valid = true; + parse_state = PARSE_COMPLETE; + } else { + reset_parser(); + } + } else if (byte != '\r') { + if (field_index < 2) { + current_frame.cmd[field_index++] = byte; + } + } + break; + + case PARSE_COMPLETE: + reset_parser(); + if (byte == '$') { + parse_state = PARSE_CMD; + } + break; + } +} + +bool CmdParser_HasCompleteFrame(cmd_frame_t *frame) +{ + if (parse_state == PARSE_COMPLETE && current_frame.valid) { + if (frame) { + memcpy(frame, ¤t_frame, sizeof(cmd_frame_t)); + } + return true; + } + return false; +} + +void CmdParser_Acknowledge(void) +{ + reset_parser(); +} +``` + +**安全防护要点说明**: + +1. **缓冲区边界检查**:每次写入前检查 `field_index < MAX_LEN` +2. **超时重置**:超过1秒未收到完整帧,自动重置状态机 +3. **字符过滤**:只接受合法字符,非法字符触发重置 +4. **固定长度缓冲区**:不使用动态内存分配,避免内存碎片 +5. **校验和特权**:`CS=FF` 时跳过校验,方便人工调试 + +*** + +### 2.3 IO状态监控模块 + +#### 2.3.1 检测方式 + +**推荐方案:定时扫描 + 软件去抖** + +| 方案 | 优点 | 缺点 | 适用场景 | +| ---- | --------- | --------------- | ------ | +| 外部中断 | 响应快 | 需要额外中断资源,硬件去抖复杂 | 低频事件 | +| 定时扫描 | 简单可靠,统一管理 | 有扫描延迟 | 多路IO监控 | + +#### 2.3.2 软件去抖实现 + +```c +#define DEBOUNCE_COUNT 3 +#define IO_CHANNEL_COUNT 4 + +typedef struct { + GPIO_TypeDef *port; + uint16_t pin; + uint8_t current_state; + uint8_t debounce_counter; + uint8_t last_raw_state; +} io_channel_t; + +static io_channel_t di_channels[IO_CHANNEL_COUNT] = { + {GPIOB, GPIO_PIN_4, 0, 0, 0}, + {GPIOB, GPIO_PIN_5, 0, 0, 0}, + {GPIOB, GPIO_PIN_6, 0, 0, 0}, + {GPIOB, GPIO_PIN_7, 0, 0, 0} +}; + +static uint32_t last_scan_tick = 0; + +void IO_Monitor_Task(void) +{ + if (HAL_GetTick() - last_scan_tick < 10) { + return; + } + last_scan_tick = HAL_GetTick(); + + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + io_channel_t *ch = &di_channels[i]; + + uint8_t raw_state = HAL_GPIO_ReadPin(ch->port, ch->pin) ? 1 : 0; + + if (raw_state != ch->last_raw_state) { + ch->debounce_counter = 0; + ch->last_raw_state = raw_state; + } else { + if (ch->debounce_counter < DEBOUNCE_COUNT) { + ch->debounce_counter++; + } else if (ch->current_state != raw_state) { + ch->current_state = raw_state; + IO_StateChangeHandler(i, raw_state); + } + } + } +} + +void IO_StateChangeHandler(uint8_t channel, uint8_t state) +{ + UART2_Print_Printf("$DI_EVENT,%d,%d*XX\r\n", + channel + 1, + state); +} + +uint8_t IO_Monitor_GetAllStates(void) +{ + uint8_t states = 0; + for (int i = 0; i < IO_CHANNEL_COUNT; i++) { + if (di_channels[i].current_state) { + states |= (1 << i); + } + } + return states; +} +``` + +#### 2.3.3 IO监控模块接口 + +```c +#ifndef __IO_MONITOR_H +#define __IO_MONITOR_H + +#include + +void IO_Monitor_Init(void); +void IO_Monitor_Task(void); +uint8_t IO_Monitor_GetState(uint8_t channel); +uint8_t IO_Monitor_GetAllStates(void); + +#endif +``` + +*** + +### 2.4 继电器控制模块 + +#### 2.4.1 模块接口 + +```c +#ifndef __RELAY_CONTROL_H +#define __RELAY_CONTROL_H + +#include +#include + +void Relay_Init(void); +void Relay_SetState(uint8_t relay_id, bool state); +bool Relay_GetState(uint8_t relay_id); +void Relay_Toggle(uint8_t relay_id); + +#endif +``` + +#### 2.4.2 实现代码 + +```c +#include "relay_control.h" +#include "main.h" + +void Relay_Init(void) +{ + HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, GPIO_PIN_RESET); +} + +void Relay_SetState(uint8_t relay_id, bool state) +{ + if (relay_id == 1) { + HAL_GPIO_WritePin(RL_Control_GPIO_Port, RL_Control_Pin, + state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} + +bool Relay_GetState(uint8_t relay_id) +{ + if (relay_id == 1) { + return HAL_GPIO_ReadPin(RL_Control_GPIO_Port, RL_Control_Pin) ? true : false; + } + return false; +} + +void Relay_Toggle(uint8_t relay_id) +{ + if (relay_id == 1) { + HAL_GPIO_TogglePin(RL_Control_GPIO_Port, RL_Control_Pin); + } +} +``` + +*** + +## 三、关键数据结构与接口 + +### 3.1 简化的数据结构 + +```c +#ifndef __APP_TYPES_H +#define __APP_TYPES_H + +#include +#include + +#define IO_CHANNEL_COUNT 4 + +typedef enum { + UART_PORT_1 = 1, + UART_PORT_2 = 2, + UART_PORT_3 = 3 +} uart_port_t; + +typedef struct { + char cmd[8]; + char param1[16]; + char param2[32]; + uart_port_t source; + bool valid; +} cmd_frame_t; + +#endif +``` + +### 3.2 设计说明 + +| 数据结构 | 用途 | 设计理由 | +| -------- | ---- | -------- | +| `uart_port_t` | 标识串口 | 简单枚举,UART1=RF433,UART2=调试口,UART3=预留 | +| `cmd_frame_t` | 存储解析后的指令 | 固定长度字符数组,避免动态内存分配 | + +**为什么不需要复杂的数据结构?** + +1. **ASCII指令格式**:人类可读,直接用字符串处理即可 +2. **裸机轮询架构**:不需要消息队列,直接在主循环处理 +3. **单一职责**:每个模块功能单一,不需要复杂的抽象 + +*** + +## 四、实施路线图 + +### 4.1 分阶段开发计划 + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ 开发阶段时间线 │ +├─────────────────────────────────────────────────────────────────────────┤ +│ │ +│ 第一阶段 (基础框架) 第二阶段 (核心功能) 第三阶段 (扩展) │ +│ ├─ UART2_Print ├─ ASCII指令解析 ├─ RF433透传 │ +│ ├─ IO监控模块 ├─ 继电器控制 ├─ UART3扩展 │ +│ └─ 基础日志输出 └─ 指令响应 └─ 配置存储 │ +│ │ +│ 验证点: 验证点: 验证点: │ +│ · 串口输出正常 · 指令响应正确 · 无线通信正常 │ +│ · IO状态上报 · 继电器动作 · 长时间稳定性 │ +│ │ +└─────────────────────────────────────────────────────────────────────────┘ +``` + +### 4.2 第一阶段:基础框架搭建 + +**目标**:实现调试输出能力和IO状态监控 + +**任务清单**: + +| 序号 | 任务 | 预计工作量 | 依赖 | +| --- | --- | --- | --- | +| 1.1 | 实现 `UART2_Print` 模块 | 1.5h | 无 | +| 1.2 | 实现 `printf` 重定向 | 0.5h | 1.1 | +| 1.3 | 实现 `IO_Monitor` 模块 | 1.5h | 无 | +| 1.4 | 集成到 `main.c` 主循环 | 0.5h | 1.1, 1.3 | +| 1.5 | 编写测试代码验证 | 0.5h | 1.4 | + +**验证方法**: + +```c +void phase1_test(void) +{ + UART2_Print_Init(); + IO_Monitor_Init(); + + printf("Phase 1 Test Start\r\n"); + printf("System Clock: %d MHz\r\n", SystemCoreClock / 1000000); + + while (1) { + IO_Monitor_Task(); + UART2_Print_Task(); + + static uint32_t last_tick = 0; + if (HAL_GetTick() - last_tick > 5000) { + last_tick = HAL_GetTick(); + uint8_t states = IO_Monitor_GetAllStates(); + printf("DI States: 0x%02X\r\n", states); + } + } +} +``` + +**验收标准**: + +- [ ] UART2能正常输出调试信息 +- [ ] `printf` 函数可用 +- [ ] DI1-DI4状态变化能实时上报 +- [ ] 软件去抖功能正常 + +*** + +### 4.3 第二阶段:指令解析与继电器控制 + +**目标**:实现ASCII指令解析和继电器控制 + +**任务清单**: + +| 序号 | 任务 | 预计工作量 | 依赖 | +| --- | --- | --- | --- | +| 2.1 | 实现ASCII指令解析器 | 2h | 第一阶段 | +| 2.2 | 实现继电器控制模块 | 0.5h | 无 | +| 2.3 | 实现指令响应机制 | 1h | 2.1, 2.2 | +| 2.4 | UART2接收中断集成 | 0.5h | 2.1 | +| 2.5 | 端到端测试 | 0.5h | 2.4 | + +**验证方法**: + +```c +void phase2_test(void) +{ + UART2_Print_Init(); + IO_Monitor_Init(); + CmdParser_Init(); + Relay_Init(); + + printf("Phase 2 Test Start\r\n"); + + while (1) { + IO_Monitor_Task(); + UART2_Print_Task(); + CmdParser_Task(); + } + + // 手动测试:通过串口发送指令 + // 打开继电器1: $RL,1,1*FF\r\n + // 关闭继电器1: $RL,1,0*FF\r\n + // 查询DI1状态: $DI,1*FF\r\n + // 查询所有DI: $DI,0*FF\r\n +} +``` + +**验收标准**: + +- [ ] 能正确解析ASCII指令 +- [ ] 校验和验证正常 +- [ ] 继电器能按指令开关 +- [ ] 指令执行后有响应输出 +- [ ] 错误指令能被识别并返回错误信息 + +*** + +### 4.4 第三阶段:RF433透传与扩展 + +**目标**:实现RF433无线透传功能 + +**任务清单**: + +| 序号 | 任务 | 预计工作量 | 依赖 | +| --- | --- | --- | --- | +| 3.1 | 实现FWD转发指令处理 | 1h | 第二阶段 | +| 3.2 | 集成RF433模块驱动 | 1h | 3.1 | +| 3.3 | 实现双向透传 | 1h | 3.2 | +| 3.4 | 压力测试与优化 | 1h | 3.3 | + +**验证方法**: + +```c +// 测试场景: +// 1. UART2发送: $FWD,1,Hello RF433*FF\r\n +// 验证UART1(RF433)是否收到 "Hello RF433" +// +// 2. RF433接收数据后,自动转发到UART2 +// 验证UART2是否收到RF433的数据 +``` + +**验收标准**: + +- [ ] UART2→RF433转发正常 +- [ ] RF433→UART2转发正常 +- [ ] 连续转发100次无丢包 +- [ ] 长时间运行稳定(>30分钟) + +*** + +### 4.5 文件组织 + +``` +Core/ +├── Inc/ +│ ├── uart2_print.h # 调试打印模块 +│ ├── io_monitor.h # IO监控模块 +│ ├── cmd_parser.h # 指令解析模块 +│ ├── relay_control.h # 继电器控制模块 +│ └── app_types.h # 公共类型定义 +├── Src/ +│ ├── main.c # 主程序(修改) +│ ├── uart2_print.c # 调试打印实现 +│ ├── io_monitor.c # IO监控实现 +│ ├── cmd_parser.c # 指令解析实现 +│ └── relay_control.c # 继电器控制实现 +``` + +*** + +### 4.6 风险与缓解措施 + +| 风险 | 影响 | 缓解措施 | +| --- | --- | --- | +| 环形缓冲区溢出 | 数据丢失 | 增加缓冲区大小,添加溢出检测 | +| 指令解析错误 | 功能异常 | 完善状态机,添加超时重置机制 | +| 继电器控制时序 | 硬件损坏 | 添加最小间隔限制 | + +*** + +## 五、总结 + +### 架构设计要点 + +1. **简化分层**:应用层 → 服务层 → 驱动层,职责清晰 +2. **ASCII指令**:人类可读,方便调试,易于扩展 +3. **时间片轮询**:基于现有裸机架构,无需RTOS + +### 协议设计亮点 + +1. **ASCII文本格式**:`$CMD,param1,param2*CS\r\n`,简单直观 +2. **异或校验**:计算简单,适合嵌入式系统 +3. **统一响应格式**:`$OK,...` 或 `$ERR,...` + +### 关键技术决策 + +| 决策点 | 选择 | 理由 | +| --- | --- | --- | +| 指令格式 | ASCII文本 | 人类可读,方便调试,兼容串口工具 | +| IO检测方式 | 定时扫描 | 4路统一管理,软件去抖灵活 | +| 打印缓冲 | 环形缓冲区 | ISR安全,非阻塞发送 | + +### 下一步行动 + +建议按照以下顺序开始编码: + +1. 实现 `UART2_Print` 模块,验证调试输出 +2. 实现 `IO_Monitor` 模块,验证IO监控 +3. 实现 `CmdParser` 模块,验证指令解析 +4. 实现 `Relay_Control` 模块,验证继电器控制 diff --git a/docs/integration_guide.md b/docs/integration_guide.md new file mode 100644 index 0000000..977fc0d --- /dev/null +++ b/docs/integration_guide.md @@ -0,0 +1,274 @@ +/** + ****************************************************************************** + * @file integration_guide.md + * @brief 应用层模块集成指南 + * @author Application Layer + * @version 1.0 + ****************************************************************************** + * @attention + * 本文档说明如何将uart2_print、io_monitor、cmd_parser、relay_control + * 四个模块集成到现有工程中。 + ****************************************************************************** + */ + +# 应用层模块集成指南 + +## 一、文件清单 + +### 新增文件 + +| 文件路径 | 说明 | +|---------|------| +| `Core/Inc/uart2_print.h` | UART2打印模块头文件 | +| `Core/Src/uart2_print.c` | UART2打印模块实现 | +| `Core/Inc/io_monitor.h` | IO监控模块头文件 | +| `Core/Src/io_monitor.c` | IO监控模块实现 | +| `Core/Inc/cmd_parser.h` | 指令解析模块头文件 | +| `Core/Src/cmd_parser.c` | 指令解析模块实现 | +| `Core/Inc/relay_control.h` | 继电器控制模块头文件 | +| `Core/Src/relay_control.c` | 继电器控制模块实现 | + +### 需要修改的文件 + +| 文件路径 | 修改内容 | +|---------|---------| +| `Core/Src/main.c` | 添加头文件引用、初始化调用、主循环任务 | +| `Core/Src/usart.c` | 添加UART2接收中断处理 | +| `Core/Src/stm32f1xx_it.c` | 添加UART2接收缓冲变量 | + +--- + +## 二、main.c 修改说明 + +### 2.1 在 `USER CODE BEGIN Includes` 区域添加 + +```c +/* USER CODE BEGIN Includes */ +#include "rf433.h" +#include "rf433_config.h" +#include "rf433_hal.h" + +/* 应用层模块头文件 */ +#include "uart2_print.h" +#include "io_monitor.h" +#include "cmd_parser.h" +#include "relay_control.h" + +#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) +#include "rf433_tx_app.h" +#endif + +#if (RF433_MODE == RF433_MODE_RX) || (RF433_MODE == RF433_MODE_BOTH) +#include "rf433_rx_app.h" +#endif + +/* USER CODE END Includes */ +``` + +### 2.2 在 `USER CODE BEGIN PV` 区域添加 + +```c +/* USER CODE BEGIN PV */ +static uint8_t uart2_rx_byte = 0; +/* USER CODE END PV */ +``` + +### 2.3 在 `USER CODE BEGIN 2` 区域修改 + +```c + /* USER CODE BEGIN 2 */ + + /* 初始化应用层模块 */ + UART2_Print_Init(); + IO_Monitor_Init(); + CmdParser_Init(); + Relay_Init(); + + /* 启动UART2接收中断 */ + HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + + /* 初始化RF433模块 - 使用默认配置 */ + rf433_init(NULL); + + /* 启动UART接收 - 使用rf433_hal中的临时变量 */ + HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1); + + /* 根据配置模式初始化TX/RX应用层 */ +#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) + /* TX模式初始化 */ + rf433_tx_app_init(NULL); + rf433_tx_app_start(RF433_DEFAULT_TX_COUNT, RF433_DEFAULT_TX_INTERVAL); +#endif + +#if (RF433_MODE == RF433_MODE_RX) || (RF433_MODE == RF433_MODE_BOTH) + /* RX模式初始化 */ + rf433_rx_app_init(NULL); + rf433_rx_app_start(); +#endif + + /* 打印启动信息 */ + UART2_Print_Printf("\r\n========================================\r\n"); + UART2_Print_Printf("E32-433TBH-SC Application Started\r\n"); + UART2_Print_Printf("System Clock: %d MHz\r\n", SystemCoreClock / 1000000); + UART2_Print_Printf("========================================\r\n"); + + /* USER CODE END 2 */ +``` + +### 2.4 在 `USER CODE BEGIN 3` 区域修改 + +```c + /* USER CODE BEGIN 3 */ + + /* 应用层任务处理 */ + UART2_Print_Task(); + IO_Monitor_Task(); + CmdParser_Task(); + +#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH) + /* TX任务 */ + rf433_tx_app_task(); +#endif + +#if (RF433_MODE == RF433_MODE_RX) || (RF433_MODE == RF433_MODE_BOTH) + /* RX任务 */ + rf433_rx_app_task(); +#endif + + /* USER CODE END 3 */ +``` + +### 2.5 在 `USER CODE BEGIN 4` 区域添加 + +```c +/* USER CODE BEGIN 4 */ + +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART1) + { + /* 调用RF433模块的UART接收回调 */ + rf433_hal_uart_rxcplt_callback(); + } + else if (huart->Instance == USART2) + { + /* 喂入指令解析器 */ + CmdParser_FeedByte(uart2_rx_byte, HAL_GetTick()); + + /* 重新启动接收 */ + HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); + } +} + +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +{ + if (huart->Instance == USART2) + { + /* 调用UART2打印模块的发送完成回调 */ + UART2_Print_TxCpltCallback(); + } +} + +/* USER CODE END 4 */ +``` + +--- + +## 三、usart.c 修改说明 + +### 3.1 删除原有的 `HAL_UART_RxCpltCallback` 函数 + +原有的回调函数在 `USER CODE BEGIN 1` 区域,需要删除: + +```c +/* USER CODE BEGIN 1 */ +// 删除以下代码 +// void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +// { +// if (huart->Instance == USART1) +// { +// rf433_hal_uart_rxcplt_callback(); +// } +// } +/* USER CODE END 1 */ +``` + +改为: + +```c +/* USER CODE BEGIN 1 */ +/* UART回调函数已移至main.c统一管理 */ +/* USER CODE END 1 */ +``` + +--- + +## 四、Keil工程配置 + +### 4.1 添加源文件到工程 + +1. 打开Keil工程 `MDK-ARM/project.uvprojx` +2. 在Project窗口中,右键点击 `Application/User/Core` 分组 +3. 选择 `Add Existing Files...` +4. 添加以下文件: + - `Core/Src/uart2_print.c` + - `Core/Src/io_monitor.c` + - `Core/Src/cmd_parser.c` + - `Core/Src/relay_control.c` + +### 4.2 添加头文件路径 + +1. 点击工程设置图标(魔术棒) +2. 切换到 `C/C++` 标签页 +3. 在 `Include Paths` 中确认 `Core/Inc` 已在路径中 + +--- + +## 五、测试验证 + +### 5.1 编译工程 + +编译应无错误,如有警告请检查: +- 头文件路径是否正确 +- 源文件是否已添加到工程 + +### 5.2 下载运行 + +下载程序后,通过串口调试助手连接UART2(115200bps),应看到: + +``` +======================================== +E32-433TBH-SC Application Started +System Clock: 72 MHz +======================================== +[UART2] Init OK, buffer size: 256 +[IO] Init OK, initial states: 0x00 +[CMD] Init OK +[RELAY] Init OK, state=OFF +``` + +### 5.3 指令测试 + +发送以下指令测试: + +``` +$RL,1,1*FF\r\n 打开继电器1 +$RL,1,0*FF\r\n 关闭继电器1 +$DI,0*FF\r\n 查询所有DI状态 +$DI,1*FF\r\n 查询DI1状态 +$ECHO*FF\r\n 心跳测试 +``` + +--- + +## 六、注意事项 + +1. **不要修改HAL初始化代码**:`MX_GPIO_Init`、`MX_USARTx_UART_Init` 等函数由CubeMX生成,不应手动修改 + +2. **中断优先级**:UART1优先级为0,UART2优先级为1,UART3优先级为2,已按计划配置 + +3. **调试开关**:各模块开头有 `DEBUG_xxx` 宏,设为1启用调试日志,设为0禁用 + +4. **缓冲区大小**:`UART2_TX_BUFFER_SIZE` 默认256字节,可根据需要调整 + +5. **去抖参数**:`IO_DEBOUNCE_COUNT` 默认3次,`IO_SCAN_PERIOD_MS` 默认10ms diff --git a/indexed-jingling-puffin.md b/readme.md similarity index 99% rename from indexed-jingling-puffin.md rename to readme.md index 9adc317..9231bd8 100644 --- a/indexed-jingling-puffin.md +++ b/readme.md @@ -1,16 +1,3 @@ -# Driver_RF433 技术README文档生成计划 - -## 项目概述 - -为基于STM32F103的E32-433TBH-SC无线通信模块驱动项目生成详细的技术README文档,涵盖架构分析、API接口、配置指南和集成示例。 - ---- - -## 完整README文档内容 - -以下是将要生成的README.md文档的完整内容: - -```markdown # Driver_RF433 技术文档 ## 项目概述