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

一、发现的错误清单

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

  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. 考虑实际使用场景
  • 不只是功能实现

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

  • 边界条件和异常情况

相关推荐
lhbweilai1 小时前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
坏柠1 小时前
通信协议入门:单片机怎样把一个数字发送出去?
单片机·嵌入式硬件
Hotchip_MEMS2 小时前
当雾化器遇上MEMS:一场从交互到制造的全链路效率提升
人工智能·笔记·物联网·电脑·制造
是上好佳佳佳呀2 小时前
【深度学习|Day02】PyTorch 深度学习笔记(下):张量运算与自动微分
pytorch·笔记·深度学习
小僧景贤2 小时前
STM32 工程文件深度解析(Keil‑MDK + STM32CubeIDE)
stm32·单片机·stm32cubeide
国科安芯3 小时前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构
IT古董4 小时前
【MES学习笔记系列】05 - MES 数据库设计
笔记·学习·mes
小羊先生car4 小时前
RTOS-F429-HAL-Freertos内存管理(2026/8/5)
c语言·单片机·rtos
不瘦80斤不改名5 小时前
05-vibe-coding-向agentic-engineering演进
人工智能·笔记·python·prompt
九硕智慧建筑一体化厂家5 小时前
直流照明|无尘风淋室照明,高均匀无频闪,适配洁净车间高频合规工况
大数据·人工智能·笔记·智慧城市