From 92c6bbf189133504fadaccf8ffa29b23b9a2daaa Mon Sep 17 00:00:00 2001 From: RB Date: Sun, 27 Apr 2025 15:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MRobot.py | 39 +++++++++++++++++++++------------- User/task/task.c.template | 5 +---- User/task/user_task.c.template | 2 +- User/task/user_task.h.template | 6 +----- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/MRobot.py b/MRobot.py index 734ed6c..ea515f8 100644 --- a/MRobot.py +++ b/MRobot.py @@ -151,6 +151,7 @@ class MRobotApp: except Exception as e: print(f"创建目录时出错: {e}") + # 更新 FreeRTOS 状态标签 def update_freertos_status(self, label): if self.ioc_data: @@ -199,11 +200,12 @@ class MRobotApp: self.header_files_frame = header_files_frame self.update_header_files() - # 任务管理框 - task_frame = tk.LabelFrame(module_task_frame, text="任务管理", padx=10, pady=10, font=("Arial", 10, "bold")) - task_frame.pack(side="left", fill="both", expand=True, padx=5) - self.task_frame = task_frame - self.update_task_ui() + + if self.ioc_data and self.check_freertos_enabled(self.ioc_data): + task_frame = tk.LabelFrame(module_task_frame, text="任务管理", padx=10, pady=10, font=("Arial", 10, "bold")) + task_frame.pack(side="left", fill="both", expand=True, padx=5) + self.task_frame = task_frame + self.update_task_ui() # 生成按钮和 .gitignore 选项 button_frame = tk.Frame(main_frame) @@ -476,17 +478,21 @@ class MRobotApp: print(f"生成 init.c 文件时出错: {e}") # 修改 generate_action 方法 + def generate_action(self): def task(): - # 检查并创建目录 + # 检查并创建目录(与 FreeRTOS 状态无关的模块始终创建) self.create_directories() + # 复制 .gitignore 文件 if self.add_gitignore_var.get(): self.copy_file_from_repo(".gitignore", ".gitignore") + + # 如果启用了 FreeRTOS,复制相关文件 if self.ioc_data and self.check_freertos_enabled(self.ioc_data): self.copy_file_from_repo("src/freertos.c", os.path.join("Core", "Src", "freertos.c")) - # 定义需要处理的文件夹 + # 定义需要处理的文件夹(与 FreeRTOS 状态无关) folders = ["bsp", "component", "device", "module"] # 遍历每个文件夹,复制选中的 .h 和 .c 文件 @@ -514,20 +520,23 @@ class MRobotApp: dest_path = os.path.join("User", folder, file_name) self.copy_file_from_repo(src_path, dest_path) - # 修改 user_task.c 文件 - self.modify_user_task_file() + # 如果启用了 FreeRTOS,执行任务相关的生成逻辑 + if self.ioc_data and self.check_freertos_enabled(self.ioc_data): + # 修改 user_task.c 文件 + self.modify_user_task_file() - # 生成 user_task.h 文件 - self.generate_user_task_header() + # 生成 user_task.h 文件 + self.generate_user_task_header() - # 生成 init.c 文件 - self.generate_init_file() + # 生成 init.c 文件 + self.generate_init_file() - # 生成 task.c 文件 - self.generate_task_files() + # 生成 task.c 文件 + self.generate_task_files() threading.Thread(target=task).start() + # 程序关闭时清理 def on_closing(self, root): self.delete_repo() diff --git a/User/task/task.c.template b/User/task/task.c.template index 71af011..78b32bb 100644 --- a/User/task/task.c.template +++ b/User/task/task.c.template @@ -27,9 +27,6 @@ void {{task_function}}(void *argument) { uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ while (1) { - /* 记录任务所使用的的栈空间 */ - task_runtime.stack_water_mark.{{task_variable}} = osThreadGetStackSpace(osThreadGetId()); - tick += delay_tick; /* 计算下一个唤醒时刻 */ /*User code begin*/ @@ -38,4 +35,4 @@ void {{task_function}}(void *argument) { osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ } -} \ No newline at end of file +} diff --git a/User/task/user_task.c.template b/User/task/user_task.c.template index 0e4ee69..31f25e0 100644 --- a/User/task/user_task.c.template +++ b/User/task/user_task.c.template @@ -9,4 +9,4 @@ const osThreadAttr_t attr_init = { }; // 用户自定义任务 -{{task_attr_definitions}} \ No newline at end of file +{{task_attr_definitions}} diff --git a/User/task/user_task.h.template b/User/task/user_task.h.template index 29abbe2..56259ff 100644 --- a/User/task/user_task.h.template +++ b/User/task/user_task.h.template @@ -19,10 +19,6 @@ typedef struct { osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */ } msgq; - struct { -{{heap_water_mark_definitions}} - } heap_water_mark; /* heap使用 */ - struct { {{freq_definitions}} } freq; /* 任务运行频率 */ @@ -56,4 +52,4 @@ void Task_Init(void *argument); #ifdef __cplusplus } -#endif \ No newline at end of file +#endif