news 2026/6/8 9:28:00

109、代码优化:定点数运算与浮点数运算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
109、代码优化:定点数运算与浮点数运算

飞控算法从入门到精通 · 109 · 代码优化:定点数运算与浮点数运算

从一次炸机说起

去年夏天,我在调试一款自研的四旋翼飞控,MCU是STM32F405,主频168MHz。姿态解算用的Mahony互补滤波,全部float运算,跑在FreeRTOS上,任务周期1kHz。地面站看着一切正常,角度响应平滑,PID输出也稳。结果一上天,悬停不到三秒就开始抖,越抖越厉害,最后直接翻了过去。还好是在草地上试的,桨叶断了两根,机架没事。

查了一整天,最后定位到问题:浮点运算导致的任务超时。1kHz的周期,实际执行时间在中断里被拉长到了1.3ms左右,偶尔还会跳到1.5ms。姿态环和位置环都在同一个高优先级任务里,浮点运算的延迟让控制输出滞后了将近半个周期,系统自然就发散。

从那以后,我对飞控里的浮点数运算就格外敏感。不是说不能用,而是要知道什么时候该用,什么时候必须换成定点数。

浮点数的代价

很多人觉得STM32F4有FPU,浮点运算就是一条指令的事,快得很。这话对了一半。单精度浮点乘法确实是一条指令,但问题出在别的地方。

首先是寄存器上下文切换。飞控里跑RTOS,任务切换时要保存和恢复FPU寄存器。Cortex-M4的FPU有32个单精度寄存器,每个32位,加上FPSCR状态寄存器,一次切换就要保存132字节。如果任务切换频繁,这个开销会累积得很可观。我实测过,在FreeRTOS里开启FPU的LAZY STACKING和关闭它,任务切换时间差了将近40个时钟周期。40个周期看起来不多,但1kHz的任务切换,每秒就是4万周期,占掉168MHz主频的0.0

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 9:27:25

3倍推理加速与50%内存优化:Qwen大模型轻量化技术深度解析

3倍推理加速与50%内存优化:Qwen大模型轻量化技术深度解析 【免费下载链接】Qwen The official repo of Qwen (通义千问) chat & pretrained large language model proposed by Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen 当…

作者头像 李华
网站建设 2026/6/8 9:27:02

Claude Code 错误解决方案: Credit balance is too low

文章目录 一、问题描述 1.1 环境信息 1.2 报错现象 二、根因分析 2.1 错误链路追踪 2.2 可能原因列举 三、解决方案 方案一:添加信用并启用自动重新加载(推荐) 方案二:切换到订阅计划认证 方案三:设置并调整工作区支出上限 四、验证与回归测试 五、总结与预防 5.1 核心要点…

作者头像 李华
网站建设 2026/6/8 9:22:15

FRDM-KL25Z入门避坑指南:Kinetis Design Studio环境配置与驱动安装全解析

FRDM-KL25Z开发板零基础实战:从开箱到第一个LED程序当你第一次拿到FRDM-KL25Z这块小巧的开发板时,可能会被它简洁的外表所迷惑——两个USB接口、几个LED灯和一个触摸滑块,看起来并不复杂。但真正开始使用时,许多新手会在第一步环境…

作者头像 李华
网站建设 2026/6/8 9:20:14

Windows 11优化终极指南:用Win11Debloat一键清理系统臃肿

Windows 11优化终极指南:用Win11Debloat一键清理系统臃肿 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…

作者头像 李华
网站建设 2026/6/8 9:19:34

奥运数据分析:构建四维动态框架解剖体育生态系统

1. 项目概述:这不是一次简单的数据浏览,而是一场对现代体育文明的系统性解剖“Analyzing The Olympic Games”——这个标题乍看像大学统计课的期末作业,但实际操作中,它迅速演变成一场横跨历史学、社会学、经济学、运动科学与数据…

作者头像 李华