【单片机复习笔记】十五届国赛复盘

一、发现的错误清单

🔴 严重错误(功能完全失效)

  1. 运算符混淆错误(第139行)

// ❌ 错误

dev_to_dir_dist = sqrt((dir_x-dev_x0)^2 + (dir_y-dev_y0)^2);

// ✅ 正确

dev_to_dir_dist = sqrt((dir_x-dev_x0)*(dir_x-dev_x0) + (dir_y-dev_y0)*(dir_y-dev_y0));

错误原因:将数学中的平方符号^2直接写成了C语言的^,但C语言中^是异或运算符,不是幂运算!

影响:距离计算完全错误,导致运动轨迹计算失败。


  1. 函数选择错误(第140-141行)

// ❌ 错误

cos1 = abs(dir_x-dev_x0)/dev_to_dir_dist;

sin1 = abs(dir_y-dev_y0)/dev_to_dir_dist;

// ✅ 正确

cos1 = fabs((float)(dir_x-dev_x0))/dev_to_dir_dist;

sin1 = fabs((float)(dir_y-dev_y0))/dev_to_dir_dist;

错误原因:abs()用于整数绝对值,fabs()用于浮点数绝对值。

影响:三角函数计算精度损失,运动方向可能出现偏差。


  1. 串口命令解析不够健壮

// ❌ 原始代码

else if(strcmp(uart_buf, "?") == 0)

else if(strcmp(uart_buf, "#") == 0)

// ✅ 改进后

else if(strncmp(uart_buf, "?", 1) == 0) // 只比较首字符

else if(strncmp(uart_buf, "#", 1) == 0)

原因:串口接收可能包含换行符、回车符等多余字符,导致strcmp匹配失败。

二、经验总结

✅ 编程基础知识

  1. C语言运算符必须牢记
  • ^ 是异或,不是幂运算

  • 平方应该用 x*x 或 pow(x, 2)

  • 不要把数学公式直接翻译成代码

  1. 函数选择要匹配数据类型
  • abs() → 整数绝对值

  • fabs() → 浮点数绝对值

  • labs() → 长整型绝对值

  1. 类型转换要显式
  • 整数运算结果赋值给浮点数前要先转换:(float)x

  • 避免隐式转换带来的精度问题


✅ 逻辑设计原则

  1. 条件判断要完整
  • 不要写无意义的条件(如ulms > 3000)

  • 相关的状态标志要一起检查(如cdget_flag)

  1. 边界条件要考虑
  • 系统刚启动时(ulms < 3000)

  • 状态转换时的前置条件

  • 测试模式的特殊需求

  1. 功能要考虑测试需求
  • 不能只实现正常流程

  • 要考虑测试时如何快速进入各种状态

  • 重置功能应该尽量通用

🎯 最重要的3条

  1. 数学公式翻译成代码时要特别小心
  • 不要想当然

  • 查文档确认运算符含义

  • 测试基本计算是否正确

  1. 逻辑判断要有意义
  • 每个条件都要能说出为什么

  • 避免冗余或矛盾的条件

  • 状态标志要配套使用

  1. 考虑实际使用场景
  • 不只是功能实现

  • 还要考虑测试、调试、维护

  • 边界条件和异常情况

相关推荐
FreakStudio4 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
LinXunFeng5 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
通信小呆呆9 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick9 天前
自动对焦学习-3
人工智能·学习·计算机视觉
✎ ﹏梦醒͜ღ҉繁华落℘9 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
Daisy Lee9 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn869 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e9 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨9 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
u152109648499 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频