- 博客(113)
- 收藏
- 关注
原创 设计模式组合应用:嵌入式通信协议栈
/ 通信接口类型枚举(新增接口时仅需在此添加枚举值)COMM_UART,COMM_SPI,COMM_I2C,COMM_MAX} CommType;// 协议类型枚举(新增协议时仅需在此添加枚举值)// 通信策略类型枚举(新增策略时仅需在此添加枚举值)STRATEGY_FAST, // 快速传输策略:优先效率,忽略非必要校验STRATEGY_RELIABLE,// 可靠传输策略:优先稳定,含CRC校验+重传机制// 统一业务数据结构(所有协议解析后最终转为该格式,业务层统一处理)
2026-02-01 21:28:12
原创 设计模式组合应用:智能硬件控制系统
本文分享的“单例+状态机+观察者”组合设计模式方案,精准适配智能硬件控制系统的开发需求:单例模式保证核心模块实例唯一,避免资源竞争和配置冲突;状态机模式理清复杂状态切换逻辑,让系统流程更清晰、易维护;观察者模式实现模块间解耦通信,提升系统扩展性。通过DSP C语言的工程化实现和实战验证,证明该方案资源占用低、实时性强、稳定性可靠,可直接移植到实际项目中。对嵌入式工程师来说,设计模式从来不是“炫技”的工具,而是解决实际问题、提升代码质量、降低开发和维护成本的“利器”。
2026-01-31 21:36:17
694
原创 巴特沃斯低通滤波器实现
本文围绕巴特沃斯低通滤波器的“最大平坦幅频响应”核心特性,按照“系数设计→代码编写→初始化”的工程化流程,完整实现了2/4阶滤波器的Python仿真验证与C语言落地部署,并通过工业PT100温度传感器的实战场景验证了方案的有效性。核心要点总结如下:① 利用Python快速生成并验证系数,降低手动计算误差;② 基于直接II型结构优化嵌入式实现,平衡性能与资源占用;③ 通过稳态初始化消除启动冲击,保障系统启动稳定性。如果本文的实现方案能解决你项目中的噪声滤波问题,别忘了备用!
2026-01-31 21:26:35
512
原创 行为型模式:状态模式——嵌入式状态管理的优雅解决方案
定义状态接口,明确Enter、Run、Exit三大核心行为;同时定义上下文结构体,封装当前状态指针和设备共享数据,供各状态访问修改。// 前置声明上下文结构体// 状态接口:统一行为规范// 进入状态初始化// 状态核心逻辑// 退出状态清理// 设备共享数据// 电量(0~100%)// 初始化完成标志// 空闲标志// 空闲计数器(100ms单位)// 上下文:状态与外部交互中间层// 当前状态指针// 共享数据// 全局上下文声明(嵌入式通常单实例)
2026-01-29 21:48:17
713
原创 IIR滤波器核心原理深化:从差分方程到工业级实现
/ 4阶IIR系数(Python设计结果)4// 输入系数a₀~a₄// 输出系数b₀~b₄// 直接II型滤波器结构体// 共享延迟缓冲区// 循环缓存索引// 滤波器实例总结:IIR滤波器是嵌入式DSP处理复杂噪声的核心工具,优势是“低阶数+强性能”,本质是“递推+反馈”。掌握三大关键即可落地:① 吃透N阶差分方程与递推逻辑;② 优先选直接II型省内存;③ 用Python scipy库设计工业级系数。本文代码可直接移植到主流MCU,覆盖多数传感器信号过滤场景。
2026-01-29 21:30:56
697
原创 行为型模式:观察者模式
首先定义观察者结构体,核心是一个更新函数指针,用于让不同观察者实现差异化的更新逻辑;接着定义主题结构体,包含观察者链表、链表当前长度、最大容量,以及注册、注销、通知三大核心接口的函数指针。// 前向声明主题结构体,观察者的更新函数需要用到// 观察者结构体:核心是统一的更新接口(函数指针)// 更新函数:参数为主题指针(可获取主题状态)和自定义数据// 用于区分不同观察者,方便注销int id;} Observer;// 主题结构体:维护观察者链表,提供注册/注销/通知接口。
2026-01-28 21:20:40
978
原创 一阶IIR低通滤波器:从原理到嵌入式实战
本文从RC低通电路的数字等效入手,完整推导了一阶IIR低通滤波器的差分方程,重点拆解了滤波系数计算、状态变量保存、定点数适配等工程化关键技术,最后通过电机转速平滑的实战场景,验证了方案的有效性。一阶IIR低通滤波器虽然结构简单,但在嵌入式场景中的性价比极高,掌握它的设计与实现方法,能解决大部分信号平滑的需求,是嵌入式工程师必备的基础技能。如果这篇文章帮你理清了一阶IIR低通滤波器的实现思路,欢迎,并关注我!后续我还会分享更多嵌入式信号处理、PID调节、硬件驱动开发的实战技巧。
2026-01-28 21:17:41
793
原创 行为型模式:策略模式的C语言实战指南
策略模式能“灵活切换”的前提是“接口统一”,C语言里就靠函数指针来定义这个统一标准。针对不同的策略类型,要单独定义对应的函数指针类型,把参数和返回值明确下来,确保所有具体策略都按这个标准来写。比如排序策略的函数指针,必须包含“待排序数组指针”和“数组长度”这两个参数;电源管理的函数指针,必须接收封装好的电源参数结构体。这里有个关键注意点:所有具体策略的函数指针,参数和返回值必须和接口定义完全一致!
2026-01-27 21:42:37
1083
原创 中值滤波器:嵌入式脉冲噪声去除实战指南
/ 窗口大小枚举:仅支持奇数窗口,适配嵌入式常用场景(可按需扩展)MEDIAN_WINDOW_3 = 3, // 窗口大小3(轻度噪声首选)MEDIAN_WINDOW_5 = 5, // 窗口大小5(平衡型首选)MEDIAN_WINDOW_7 = 7, // 窗口大小7(中度噪声适配)MEDIAN_WINDOW_9 = 9 // 窗口大小9(重度噪声适配)// 排序算法类型枚举:适配不同窗口大小需求SORT_BUBBLE_SIMPLE = 0, // 简化冒泡排序(新手友好、小窗口适配)
2026-01-27 21:26:16
765
原创 创建型模式:组合模式(C语言实现与嵌入式实战)
抽象组件是核心,定义公共接口(显示、增删子节点、销毁)与属性(名称)。无论文件、目录还是按钮、布局,均需名称标识,接口则统一操作逻辑。// 向前声明,因为抽象组件的函数指针需要用到容器节点结构体// 抽象组件结构体:定义公共接口和属性// 公共属性:名称// 函数指针:公共接口// 显示(depth:层级,用于树形展示)// 添加子节点// 删除子节点// 销毁资源// 区分节点类型:0-叶子节点,1-容器节点(C语言无RTTI,手动标记)
2026-01-26 20:37:43
1186
原创 移动平均滤波器:从原理到DSP ADC采样实战(C语言实现)
实现简单:代码逻辑清晰,核心函数仅几十行,新手容易理解和移植;资源占用低:仅需少量内存存储缓存数组和状态变量,计算仅含加减除法,CPU负担小,适配各类嵌入式/DSP芯片;高频滤波效果好:对ADC采样中常见的高频随机噪声,平滑效果显著,能快速提升数据稳定性。本文从实战角度出发,分三个核心环节带大家掌握移动平均滤波器:先通过简化推导理解核心原理,再通过“数据结构-核心函数-逐行解析”的步骤掌握C语言实现(重点解决边界处理和溢出问题),最后在DSP ADC采样场景中完成实战验证,同时总结优缺点和改进方向。
2026-01-26 20:15:03
1140
原创 创建型模式:装饰器模式(C语言实战指南)
include <stdlib.h> // 补充malloc/free所需头文件// 抽象组件:通信模块统一接口(核心功能:发送、接收数据)// 所有具体通信模块和装饰器都需遵循此接口// 发送数据:data-待发送数据缓冲区,len-数据长度;返回0成功,-1失败// 接收数据:buf-接收缓冲区,len-缓冲区最大长度;返回实际接收数据长度。
2026-01-25 21:27:49
1105
原创 连续系统离散化方法(嵌入式信号处理实战指南)
/ 离散化方法枚举DISCRETIZATION_BACKWARD_EULER = 0, // 后向欧拉法DISCRETIZATION_BILINEAR // 双线性变换法// 离散化滤波结构体:管理系数和历史状态// 离散化方法// 输入系数(x(n)、x(n-1))// 输出系数(y(n-1))// 输入历史值(x(n-1))// 输出历史值(y(n-1))方法核心优势核心局限适用场景前向欧拉法计算简单、资源占用极小精度低、稳定性差。
2026-01-25 21:16:45
747
原创 传递函数与系统特性(核心数学工具)
self.type = None # 滤波类型:'lowpass'/'highpass'/'notch'self.a0, self.a1, self.a2 = 0.0, 0.0, 0.0 # 输入系数self.b1, self.b2 = 0.0, 0.0 # 输出系数# 历史状态缓存(输入x(n-1)、x(n-2);输出y(n-1)、y(n-2))"""滤波器初始化:计算系数并重置状态:param filter_type: 滤波类型 'lowpass'/'highpass'/'notch'
2026-01-24 23:07:33
784
原创 结构型模式:适配器模式(C语言实现与底层实战)
目标接口是统一标准,所有适配器需实现。// 目标接口:新系统规定的传感器标准接口// 初始化传感器,返回0成功,-1失败// 读取传感器数据,参数为数据缓冲区指针,返回读取长度// 关闭传感器// 适配者:旧传感器驱动接口(需被适配)// 旧接口1:初始化传感器,参数为设备地址,返回1成功,0失败(与目标接口返回值不同)// 旧接口2:读取传感器数据,参数为数据指针、长度,无返回值(与目标接口返回值不同)// 旧接口3:关闭传感器,无参数无返回值。
2026-01-24 22:53:09
1124
原创 创建型模式:单例模式(C语言实现与实战)
特性饿汉式懒汉式创建时机启动时(main前)首次调用时线程安全天然安全需额外实现(锁/原子)内存占用启动即占,开销大按需占用,省内存实现难度简单复杂(需解决线程安全)适用场景轻量、启动必加载(配置)重量级、按需使用(日志)单例模式是C语言底层开发核心设计模式,解决“资源唯一”与“全局共享”问题,适配嵌入式场景,是日志器、配置管理器的首选方案。后续将更新工厂模式、建造者模式的C语言实现,关注我获取更多底层干货!实际项目遇问题,欢迎评论区讨论~
2026-01-23 22:33:08
1252
原创 常用数字滤波器的特性与适用场景
场景-滤波器”选型总结:①传感器零漂:高通滤波;②脉冲噪声:中值滤波;③随机噪声:移动平均;④工频/特定干扰:陷波滤波;⑤相位敏感场景:FIR滤波;⑥算力有限+高效抑噪:切比雪夫I/II型;⑦通带平坦要求高:巴特沃斯滤波。本文覆盖常用数字滤波器核心原理、特性、工程实现及选型逻辑,形成理论-实战闭环。关注我获取更多嵌入式信号处理干货,实际项目中遇问题欢迎评论区讨论~
2026-01-23 21:35:04
857
原创 创建型模式:工厂方法模式(C语言实现)
第一步定义“抽象产品”:统一传感器接口结构体,包含初始化、采集数据、销毁资源的函数指针,确保业务调用统一。// 传感器类型枚举SENSOR_DS18B20 = 0, // 温度传感器SENSOR_DHT11, // 湿度传感器SENSOR_BMP280, // 压力传感器SENSOR_MAX // 传感器类型数量// 传感器数据结构体(统一数据格式)// 传感器数值// 状态:0-正常,1-异常// 抽象产品:传感器接口// 初始化传感器// 采集传感器数据。
2026-01-22 21:36:16
1318
原创 数字滤波器核心概念
总结一下,这篇文章用大白话拆解了数字滤波器的核心概念,对比模拟滤波讲清了它的优势,把采样率、截止频率、阶数这三个关键参数的实际用法讲透了,也分清了IIR和FIR滤波器的区别,还分享了验证效果的方法和避坑技巧,这些都是后面用C语言写代码的基础。数字滤波器是嵌入式信号处理的核心技术,把这些基础概念搞明白,后面写C代码实现的时候就能顺风顺水。后面我会持续更新数字滤波器的C语言实现细节、实战案例这些干货内容,和大家一起从理论落地到实操,解决实际开发中的信号处理问题。
2026-01-22 21:22:08
885
原创 为什么要学数字滤波器与C语言实现
嵌入式开发中,你大概率遇到过这类问题:温度传感器数据跳变导致温控误动作、电机电流信号含高频噪声引发抖动、工业仪表测量值不稳定。这些均源于信号噪声干扰,而数字滤波器是解决这类问题的实用工具。有同学会问,直接用现成滤波库不行吗?但嵌入式场景下,通用库普遍存在资源占用高、适配性差、实时性不足等问题。C语言作为嵌入式开发“母语”,凭借高效性、可移植性和底层操控力,使其实现数字滤波器成为工程师核心技能。本文将讲清“为何学”与“如何学”。
2026-01-21 22:04:18
481
原创 创建型模式:简单工厂模式(C语言实现)
先抛开复杂的设计模式术语,用大白话解释:简单工厂模式就像一个“对象加工厂”。这个工厂里封装了所有对象的创建逻辑,调用者不需要知道对象是怎么被初始化、配置的,只需要向工厂传递一个“类型参数”(比如“温度传感器”“光照传感器”),工厂就会返回一个符合要求的、可以直接使用的对象。产品(Product):所有需要创建的对象的抽象统一接口。比如所有传感器都需要有“读取数据”“启动采集”的功能,我们就可以定义一个传感器抽象结构体,包含这些功能的函数指针。具体产品(Concrete Product)
2026-01-21 21:28:46
777
原创 Git在C项目中的分支策略和规范
Git分支策略核心不是“复杂规范”,而是“适配项目的合理隔离”。对C项目而言,简化版Git Flow的“主分支+开发分支+临时分支”模式,既能满足硬件适配、编译依赖、稳定性需求,又不增加过多管理成本。记住三个关键:① 分支隔离:功能、Bug修复用临时分支分开,避免干扰;② MR审核:聚焦C项目内存安全、编译兼容等核心要点;③ 流程闭环:严格遵循流转逻辑,确保代码不遗漏、不重复。后续将分享更多C项目工程化技巧(如代码评审规范、编译脚本优化),助力写出更规范稳定的C代码。
2026-01-20 22:11:51
1000
原创 C语言实现设计模式的核心基石
C语言实现设计模式的核心,是抓住其思想本质而非照搬OOP语法:“结构体+函数指针”模拟封装、继承、多态,是语法基础;内存管理是落地关键,确保构造/析构配对;模块化是最终目标,通过抽象接口降低耦合。设计模式不是“银弹”,但掌握C语言模拟OOP的核心技巧,就能在嵌入式、底层开发中写出更易维护、扩展的代码。
2026-01-20 21:56:39
726
原创 为什么C语言也需要设计模式
有人认为小项目用设计模式是小题大做,实则不然:小项目可通过简单模式(如简单工厂、适配器)解决冗余问题;大项目可组合多种模式(如单例+观察者+策略)构建稳定架构,无需过度设计。设计模式的核心是解决实际工程问题,而非堆砌模式数量。C语言开发者无需照搬OOP实现形式,只需理解“解耦、复用、可扩展”核心逻辑,用原生特性落地即可。若本文对你有帮助,欢迎并关注后续更新~ 你在C语言开发中遇到过哪些维护痛点?是否用设计模式解决过类似问题?欢迎评论区讨论!
2026-01-19 23:58:40
1149
原创 性能调试:用perf工具找C代码的“性能瓶颈”
perf工具的核心价值是“低侵入性精准定位性能瓶颈”,它能帮我们摆脱“凭感觉优化”的困境,让性能优化更高效、更可靠。对于C语言开发者来说,掌握perf工具,就相当于拥有了一把“性能调试利器”,无论是后台服务还是嵌入式程序的性能问题,都能快速解决。最后,如果你觉得本文对你有帮助,,关注我后续更多C语言、性能优化、嵌入式开发相关的技术干货!如果在实践过程中有任何问题,或者有其他想要了解的perf高级用法,也可以在评论区留言交流~
2026-01-18 18:30:00
1286
原创 C代码的日志埋点:生产环境的“黑匣子”
DEBUG(调试级):最详细的日志,用于开发阶段调试,记录函数调用细节、参数值、变量变化等(如“进入func_a函数,参数x=10”);INFO(信息级):记录程序正常运行的关键节点信息(如“程序启动成功,端口号8080”“用户登录成功,用户ID=123”);WARN(警告级):记录潜在风险,但不影响程序继续运行的异常(如“内存使用率超过80%”“连接数据库超时,正在重试”);ERROR(错误级):记录程序运行错误,可能导致功能异常,但程序未崩溃(如“读取配置文件失败”“接口调用返回错误码500”);
2026-01-18 08:30:00
1093
原创 GDB高级调试:条件断点+核心转储,快速定位偶现Bug
条件断点的核心价值是“精准命中特殊场景”,避免时序干扰;核心转储的核心价值是“冻结崩溃瞬间”,突破复现限制。两者结合,能解决大部分C语言程序(尤其是多线程、嵌入式程序)的偶现Bug调试难题,大幅提升调试效率。最后,如果你觉得本文对你有帮助,,关注我后续更多C语言、GDB调试、嵌入式开发相关的技术干货!如果在实践过程中有任何问题,或者有其他想要了解的GDB高级技巧,也可以在评论区留言交流~
2026-01-17 08:30:00
566
原创 Valgrind:C代码的“内存医生”
Valgrind的核心优势在于“无需修改代码、检测精准、功能全面”,是C语言开发者排查内存问题的必备工具。对于嵌入式/后台C项目维护者来说,将Valgrind纳入日常开发流程(如提交前检测、CI集成),能提前消除内存隐患,保障项目长期稳定运行;对于团队技术负责人来说,推广Valgrind能规范团队的内存管理习惯,提升整体代码质量。如果这篇文章对你的C项目内存调试和问题排查有帮助,别忘了,关注我后续更多C语言进阶、嵌入式开发、工程化落地的实战干货!
2026-01-16 08:30:00
1416
原创 Check框架:支持Mock的C单元测试工具
首先,在测试代码中定义与真实函数签名一致的函数指针,以及Mock函数的实现体;// 1. 定义函数指针,指向真实函数或Mock函数// 2. 全局变量:存储Mock函数的预设返回值和调用记录// reg_read的预设返回值// reg_read的调用地址记录// reg_write的调用地址记录// reg_write的调用值记录// 3. Mock函数实现:模拟reg_read// 记录调用参数// 返回预设值// 4. Mock函数实现:模拟reg_write。
2026-01-15 08:30:00
1733
原创 Unity框架:C语言单元测试的极简入门
Unity框架的核心优势在于“极简、轻量、可移植”,无需复杂配置就能快速集成到C项目中,尤其适合嵌入式和后台C项目。对于C语言开发者来说,掌握Unity框架能让你从“手动测试”升级到“自动化单元测试”,大幅提升开发效率和代码质量;对于团队技术负责人来说,推广单元测试能规范团队开发流程,降低项目维护成本。如果这篇文章对你的C项目开发和单元测试实践有帮助,别忘了,关注我后续更多C语言进阶、嵌入式开发、工程化落地的实战干货!
2026-01-14 08:30:00
1400
原创 工具链自动化:把Cppcheck+Clang-Tidy塞进Git提交钩子
Git默认使用.git/hooks目录下的钩子脚本,我们需要通过Git命令配置为自定义的.githooks# 配置当前项目使用自定义钩子目录 git config core.hooksPath .githooks # (可选)配置全局Git使用该钩子目录(所有项目通用) # git config --global core.hooksPath /path/to/your/.githooks在项目根目录创建。
2026-01-13 08:30:00
871
原创 嵌入式控制算法的仿真验证与快速迭代
联合仿真技术的核心价值是“降低硬件依赖、加速算法迭代”,它能帮我们在硬件准备就绪前就解决大部分算法问题,让硬件联调阶段仅需进行少量参数微调,从而提升开发效率、降低项目风险。对于嵌入式控制算法开发者来说,掌握联合仿真技术,就相当于拥有了一把“效率利器”,无论是简单的PID算法还是复杂的模型预测控制算法,都能快速实现从设计到落地的转化。最后,如果你觉得本文对你有帮助,,关注我后续更多嵌入式开发、控制算法、联合仿真相关的技术干货!
2026-01-12 22:28:35
1327
原创 代码复杂度分析:Lizard 工具告诉你“这段C代码太烂了”
问题:C项目中大量使用宏定义的条件编译(如#ifdef、#elif、#endif),Lizard会将这些预处理指令误判为判断语句,导致圈复杂度计算结果偏高,出现“误报警”。解决方案:通过Lizard的–exclude_macros参数手动排除条件编译宏,或在配置文件中自定义过滤规则,精准规避预处理指令的干扰。
2026-01-12 21:18:44
672
原创 实战2:基于STM32的工业温度恒温控制系统
/ 温度控制参数宏定义100.0f// 默认目标温度(℃)0.1f// 温度分辨率(℃)24// ADC分辨率(位)3.3f// 参考电压(V)0.385f// PT100温度系数(Ω/℃)100.0f// PT100在0℃时的电阻(Ω)100// 加热器最大功率(%)// 前馈-PID参数结构体// PID参数float kp;// 比例系数float ki;// 积分系数float kd;// 微分系数// 前馈参数float kf;// 前馈系数// 控制变量。
2026-01-11 11:39:13
913
原创 Clang-Tidy:比编译器更严格的C代码检查器
本文从原理拆解、工程化分析、简化实现、实战验证四个维度,全面剖析了Clang-Tidy这款“比编译器更严格”的C代码检查器。核心要点总结如下:核心原理:基于Clang的AST抽象语法树分析,实现代码质量的精准检查,支持“检查-报告-修复”全闭环。工程价值:提前发现代码缺陷,统一团队编码风格,大幅降低故障修复成本,减少技术债务堆积。实战重点:通过VSCode集成实现开发阶段实时检查;借助readability-identifier-naming规则统一命名风格,提升团队协作效率。
2026-01-11 11:22:33
1183
原创 实战1:基于DSP28335的智能小车速度与方向闭环控制系统
本文基于DSP28335实现了一套满足“速度精度±1km/h、转向角度±1°、实时响应”核心指标的智能小车闭环控制系统,完整覆盖“原理拆解→工程化分析→C语言实现→实战验证→问题解决”全技术链路。核心亮点在于采用双PID协同控制方案,结合编码器数据滤波、电机动态死区补偿、转向机械间隙消除、双重抗电磁干扰等关键技术,有效解决了智能小车控制中的典型痛点,实现了高精度、高稳定性控制。
2026-01-10 23:18:16
862
原创 Cppcheck:零成本入门的C代码静态扫描工具
原因:Cppcheck默认仅搜索系统头文件目录,自定义头文件目录未被纳入搜索范围,导致无法识别。解决方案:通过“-I”参数指定自定义头文件搜索目录。综上,Cppcheck作为零成本入门的C代码静态扫描工具,凭借轻量化、高效、精准的核心优势,已成为C语言开发者提升代码质量的必备工具。它无需运行代码即可提前识别内存泄漏、空指针、数组越界等隐性缺陷,大幅降低调试成本;同时支持无缝融入CI/CD流程,实现代码质量自动化管控——无论个人开发还是团队协作,都能显著提升效率与质量。
2026-01-10 22:54:43
559
原创 16_嵌入式C与控制理论入门:基于DSP的控制算法加速实现
嵌入式C与DSP的结合,是突破控制算法性能瓶颈的关键路径。DSP的MAC单元与专用乘加指令集,精准匹配了控制算法的乘加密集型计算特性;而“C语言+intrinsics函数”的技术路径,实现了“高效性”与“可维护性”的平衡,是工业级控制算法加速的最优选择。从原理拆解到实战验证不难发现:DSP的加速效果并非源于主频的提升,而是源于“硬件架构与算法特性的精准匹配”。
2026-01-09 22:04:46
1021
原创 C代码的“自解释性”:命名_注释的工业级标准
C代码的自解释性,本质是开发者对“代码可读性”和“团队协作效率”的敬畏,更是工业级C项目长期稳定运行的基础保障。命名的“动宾结构+业务语义”原则,注释的“what-why优先”原则,不仅是工业级标准的核心,更是开发者专业素养的直接体现。对于C语言开发者、嵌入式/后台C项目维护者和团队技术负责人而言,将这些标准落地到日常开发的每一行代码中,能显著降低项目维护成本、提升团队协作效率、减少线上bug率。请记住:好的代码不需要过多冗余解释,但必须通过精准的命名和必要的注释,清晰地“自我介绍”。
2026-01-09 21:48:33
711
原创 15_嵌入式C与控制理论入门:控制算法的定点数优化与精度平衡
结合前面的原理和实战,总结定点数优化的4个核心要点,直接用于指导开发:格式选型是基础:根据控制精度和MCU性能选Q格式,优先Q15或Q31;控制量范围超[-1,1]时,先做归一化或选用非对称Q格式;溢出处理是关键:必须在数据转换、运算过程中加入“事前裁剪、事中暂存、事后饱和”的处理逻辑,避免控制逻辑错乱;精度补偿是补充:四舍五入能有效减少截断误差,尤其在多次迭代的控制算法中,建议在乘法等涉及右移的运算中加入;
2026-01-08 20:37:39
1165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅