(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211458522.7
(22)申请日 2022.11.18
(71)申请人 苏州成科自控设备有限公司
地址 215000 江苏省苏州市相城区黄埭镇
春旺路10号咏春 工业坊南2幢
(72)发明人 郑勇 邰阳 叶义青
(74)专利代理 机构 上海微策知识产权代理事务
所(普通合伙) 31333
专利代理师 陶亮
(51)Int.Cl.
G06F 9/50(2006.01)
G06F 9/54(2006.01)
G06F 9/48(2006.01)
(54)发明名称
一种MCU后台任务池的设计方法
(57)摘要
本发明涉及数据库技术领域, 更具体地, 本
发明涉及一种MCU后台任务池的设计方法, 包括
下面步骤: (1) 创建任务池和子任务; (2) 注册子
任务; (3) 调度执行任务池中的子任务。 基于本发
明的软件框架, 提高了程序的内聚性, 降低了各
任务之间的耦合度, 由于把所有后台任务全部以
任务池、 子任务的结构实现, 所 以增强了代码的
结构性、 健壮性和可读性, 提升 了软件开发效率。
权利要求书1页 说明书3页 附图3页
CN 115495252 A
2022.12.20
CN 115495252 A
1.一种MCU后台任务池的设计方法, 其特征在于, 具体包括为每个任务创建一个任务池
结构, 再为每个任务池注册多个子任务结构, 所述的子任务结构中包含MCU 软件应用层要实
现的回调函数。
2.根据权利要求1所述MCU后台任务池的设计方法, 其特征在于, 所述回调函数用以实
现子任务的状态机, 所述的状态机根据指定的业务逻辑设计, 所述的回调函数为异步调用
方式。
3.根据权利要求2所述MCU后台任务池的设计方法, 其特征在于, 所述任务池结构包括
正在运行子任务 ID、 任务池状态、 任务池错 误码、 正在运行子任务指针、 子任务链 表指针。
4.根据权利要求3所述MCU后台任务池的设计方法, 其特征在于, 所述子任务结构包括
子任务ID、 子任务状态、 步骤编号、 步骤状态、 步骤 结果、 系统Tick、 循环 技数器、 自定义数据
指针、 子任务 函数指针、 任务池指针、 下一个子任务指针。
5.根据权利要求1 ‑4任一项所述MCU后 台任务池的设计方法, 其特征在于, 所述任务池
结构中, 各任务池的异 步调用关系为, 在MCU后台线程中触发新任务, 在MCU主循环中依次调
用执行各任务池结构中的TaskPoolRun, 再将执行结果反馈至MCU后台线程中形成闭环控
制。
6.根据权利要求5所述MCU后台任务池的设计方法, 其特征在于, 异步调用方式中, 如果
存在并行运行的子任务结构, 则需要创建两个 独立的任务池结构。
7.根据权利要求5所述MCU后台任务池的设计方法, 其特征在于, 所述TaskPoolRun调用
流程为: 当任务池中有正在运行的子任务时, 直接执行1次该子任务的回调函数, 如果任务
池没有正在运行 的子任务, 则根据子任务的注册顺序, 依 次检查任务池子任务链表中的子
任务状态, 当子任务状态为 “等待状态 ”时, 将该子任务设置为 “运行状态 ”并且执行一次该
子任务的回调函数。
8.根据权利要求5所述MCU后台任务池的设计方法, 其特征在于, 所述闭环控制中, 通过
在中断处设置 定时器, 用以进行子任务的精准时序控制。
9.根据权利要求6 ‑8任一项所述MCU后 台任务池的设计方法, 其特征在于, 为每个任务
创建一个任务池结构具体包括: 根据相关因素划分并使用 “任务池的结构 ”在各子系统、 模
块或接口文件中创建任务池内存实例; 如果存在N个并行运行的子任务, 则需要创建N个独
立的任务池; N≥2。
10.根据权利要求9所述MCU后台任务池的设计方法, 其特征在于, 为每个任务池注册多
个子任务结构具体包括: 将所有任务分解为多个子任务, 使用 “子任务的结构 ”创建子任务
内存实例, 并且为每一个子任务声明回调函数。权 利 要 求 书 1/1 页
2
CN 115495252 A
2一种MCU后台任务池的设计方 法
技术领域
[0001]本发明涉及数据库技术领域, 更具体地, 本发明涉及一种MCU后台任务池的设计方
法。
背景技术
[0002]对于没有使用操作系统的MCU嵌入式软件设计, 面临着资源有限的问题, 同时需要
执行的后台任务繁多, 且存在一个任务可能由多个子任务构成, 子任务又可能包含复杂状
态机的情况, 而目前没有一套成熟的M CU后台任务池的设计方法。
发明内容
[0003]针对现有技术中存在的一些问题, 本发明第一个方面提供了一种MCU后台任务池
的设计方法, 包括: 具体包括为每个任务创建一个任务池结构, 再为每个任务池注册多个子
任务结构, 所述的子任务结构中包 含MCU软件应用层要实现的回调函数。
[0004]本申请中所述回调函数用以实现子任务的状态机, 所述的状态机根据指定的业务
逻辑设计, 所述的回调函数为异步调用方式。
[0005]在本申请所述任务池结构中, 各任务池的异步调用关系为, 在MCU后台线程中触发
新任务, 在MCU主循环 中依次调用执行各任务池结构中的TaskPoolRun, 再将执行结果反馈
至MCU后台线程中形成闭环控制。 优选的, 所述闭环控制中, 通过在中 断处设置定时器, 用以
进行子任务的精准时序控制。
[0006]在一种实施方式 中, 所述M CU后台任务池的设计方法, 包括如下步骤:
(1) 创建任务池和子任务;
(2) 注册子任务;
(3) 调度执 行任务池中的子任务。
[0007]在一种实施方式 中, 所述步骤 (1) 包括如下流 程:
1) 创建任务池: 根据相关因素划分并使用 “任务池的结构 ”在各子系统、 模块或接
口文件中创建任务池内存实例 。 如果存在N个并行运行的子任务, 则需要创建N个独立的任
务池; N≥2。
[0008]2) 创建子任务: 将所有任务分解为多个子任务, 使用 “子任务 (SubTask) 的结构 ”创
建子任务内存实例, 并且为每一个子任务声明回调函数。
[0009]优选的, 在步骤1) 中根据业 务类别、 功能、 层级等因素进行划分任务池的结构。
[0010]进一步优选的, 所述任务池的结构包括正在运行子任务ID、 任务池状态、 任务池错
误码、 正在运行子任务指针、 子任务链 表指针, 见图1。
[0011]优选的, 子任务的结构包括子任务ID、 子任务状态、 步骤编号、 步骤状态、 步骤结
果、 系统Tick、 循环技数器、 自定义数据指针、 子任务函数指针、 任务池指针、 下一个子任务
指针。 其中, 子任务ID在注册子任务时自动生成; 子任务状态指的是初始、 等待、 运行、 完成
状态; 步骤编号指的是子任务正在运行步骤的编号; 步骤状态指的是子任务正在运行步骤说 明 书 1/3 页
3
CN 115495252 A
3
专利 一种MCU后台任务池的设计方法
文档预览
中文文档
8 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-24 01:00:24上传分享