单片机如何能运行如飞?一种高效实现数学函数的方式!
💡
原文中文,约7800字,阅读约需19分钟。
📝
内容提要
本文介绍了在资源紧张、算力较低的单片机上如何实现三角函数的算法。通过查表法,将sin和cos的值存储到数组中,需要用的时候,访问数组即可得到具体的数据。文章还介绍了具体的实现方法和Q格式的知识。
🎯
关键要点
- 在资源紧张、算力较低的单片机上实现三角函数算法的思路。
- 使用查表法将sin和cos的值存储到数组中以节省计算资源。
- 正弦函数的波形分析,利用四分之一周期的数据表示整个周期。
- 量纲统一,使用归一化形式表示sin和cos的值。
- 避免使用浮点运算、除法和乘法,提高运算效率。
- Q格式的知识用于定点运算,使用左移和右移代替乘法和除法。
- 将[0, 2π]细分为1024等份,仅选择前四分之一周期的数据。
- 将浮点数据转换为Q1.15格式以适应定点运算。
- 代码实现部分参考ST的mcsdk,分析每个部分的作用。
- 通过有符号和无符号整数的比较,理解Q格式的数值范围。
- 实现正余弦函数的具体算法,利用象限映射关系计算sin和cos值。
- 总结了正余弦函数的实现方法,并鼓励读者提出更好的方案。
➡️