STM32 调用math库中的cos和sin函数时程序卡死,采用以下解决方案,自定义cos和sin函数。

/* includes ------------------------------------------------------------------*//* typedef -------------------------------------------------------------------*/
/* define --------------------------------------------------------------------*/
/* variables -----------------------------------------------------------------*//* 取0~90度的结果,其他角度可以通过对称性和周期性推算出 */
float _fast_cos[91] = { 1,
0.999848,0.999391,0.99863,0.997564,0.996195,0.994522,0.992546,0.990268,0.987688,0.984808,
0.981627,0.978148,0.97437,0.970296,0.965926,0.961262,0.956305,0.951057,0.945519,0.939693,
0.93358,0.927184,0.920505,0.913545,0.906308,0.898794,0.891007,0.882948,0.87462,0.866025,
0.857167,0.848048,0.838671,0.829038,0.819152,0.809017,0.798635,0.788011,0.777146,0.766044,
0.75471,0.743145,0.731354,0.71934,0.707107,0.694658,0.681998,0.669131,0.656059,0.642788,
0.62932,0.615661,0.601815,0.587785,0.573576,0.559193,0.544639,0.529919,0.515038,0.5,
0.48481,0.469471,0.45399,0.438371,0.422618,0.406737,0.390731,0.374606,0.358368,0.34202,
0.325568,0.309017,0.292372,0.275637,0.258819,0.241922,0.224951,0.207912,0.190809,0.173648,
0.156434,0.139173,0.121869,0.104528,0.0871556,0.0697563,0.0523358,0.0348993,0.0174522,-1.73205e-07};float _fast_sin[91] = { 0,
0.0174524,0.0348995,0.052336,0.0697565,0.0871558,0.104528,0.121869,0.139173,0.156434,0.173648,
0.190809,0.207912,0.224951,0.241922,0.258819,0.275637,0.292372,0.309017,0.325568,0.34202,
0.358368,0.374607,0.390731,0.406737,0.422618,0.438371,0.453991,0.469472,0.48481,0.5,
0.515038,0.529919,0.544639,0.559193,0.573576,0.587785,0.601815,0.615662,0.62932,0.642788,
0.656059,0.669131,0.681998,0.694658,0.707107,0.71934,0.731354,0.743145,0.75471,0.766045,
0.777146,0.788011,0.798636,0.809017,0.819152,0.829038,0.838671,0.848048,0.857167,0.866025,
0.87462,0.882948,0.891007,0.898794,0.906308,0.913546,0.920505,0.927184,0.93358,0.939693,
0.945519,0.951057,0.956305,0.961262,0.965926,0.970296,0.97437,0.978148,0.981627,0.984808,
0.987688,0.990268,0.992546,0.994522,0.996195,0.997564,0.99863,0.999391,0.999848,1};float fast_cos(int16_t angle)
{if (angle>=0 && angle <= 90){return _fast_cos[angle];}else if (angle > 90 && angle <=180){return -(_fast_cos[180-angle]);}else if (angle > 180 && angle <=360){return fast_cos(360-angle);}else if (angle > 360){return fast_cos(angle - 360);}else if (angle < 0){return (fast_cos(-angle));}
}float fast_sin(int16_t angle)
{if (angle>=0 && angle <= 90){return _fast_sin[angle];}else if (angle > 90 && angle <=180){return _fast_sin[180-angle];}else if (angle > 180 && angle <=360){return -(fast_sin(360-angle));}else if (angle > 360){return fast_sin(angle - 360);}else if (angle < 0){return -(fast_sin(-angle));}
}

C语言 单片机 快速计算COS SIN相关推荐

  1. 用C语言编写程序计算cos x 的近似值,输入精度 e 和 x,用下列公式求cos(x)的近似值...

    C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。 #include  //头文件置顶#include double fact(int n){\ C语言编写 ...

  2. dsp输出正弦波 c语言,快速计算正弦波 - DSP 与 ARM 处理器 - 电子工程世界-论坛...

    快速计算正弦波 [复制链接] 在DSP运用中,经常需要产生正弦波.如果直接用c的数学函数sin,当然可以产生正弦波,但是由于sin函数本身的效率很低,产生正弦波所需要的MIPS就会占去DSP处理能力的 ...

  3. 泰勒级数sinx c语言,C语言用泰勒级数计算sinx,计算sin1,sin2都正确,sin

    话题:C语言用泰勒级数计算sinx,计算sin1,sin2都正确,sin3不正确,不知回答:最好不要用这种算法,因为你的x=3的时候,time是9,就要计算17的阶乘,你可以用阶乘计算器试一下,17的 ...

  4. C++输入角度计算三角函数cos sin tan

    #include <iostream> #include <cmath> using namespace std; //const double pi (3.14159265) ...

  5. [Julia语言]使用Chudnovsky 算法快速计算圆周率 Pi (π) 值

    测试用的电脑是一台10年老电脑,CPU型号:E3 1230V2,3.3GHZ,4核8线程,8GB内存. 用下面的Julia程序,计算1万位的Pi值,耗时为0.26秒. 作为比较,用Julia实现的另一 ...

  6. C语言--用二分法快速计算指定整数的整数平方根

    题目:给定一个正整数,小于2的63次方.要求不是用pow,sqrt等算法库函数,快速计算指定正整数的平方根(保留整数部分). 普通办法是从1开始计算平方数,如果给定的正整数在相邻两个平方数之间,那么 ...

  7. 【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合

    目录 硬知识 Python代码 使用方法 串口收集数据 椭球拟合 验证 STC15F2K60S2 16.384MHz Keil uVision V5.29.0.0 PK51 Prof.Develope ...

  8. 【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

    目录 相关介绍 DMP库相关 DMP加载步骤: DMP设置数据写入 更新DMP DMP数据包结构 程序实现 DMP.c DMP.h 测试程序 四元数 实验现象 欧拉角的获取 普中51-单核-A2 ST ...

  9. c语言做快速傅里叶变换和快速逆傅里叶变换

    C语言做快速傅里叶变换和快速逆傅里叶变换 快速傅里叶变换(FFT)和快速逆傅里叶变换(IFFT)要求做傅里叶变换的数据点数只能是2的整数次幂,比如2,4,8,16,32,64,128,256,512, ...

最新文章

  1. 20180829-Java多线程编程
  2. 学习需要总结。。。。
  3. windows下sse性能对比
  4. android 点击网络图片大全,android查看网络图片的实现方法
  5. 【OCR技术系列之二】文字定位于切割
  6. 《ZEMAX光学设计超级学习手册》一一2.2 几何光学像质量评价
  7. CentOS常用到的查看系统命令
  8. Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata
  9. 网友半夜差点被沐浴露吓死,众人:原来不止我胆小....
  10. mysql直接生成excel_MYSQL 将excel里面的数据直接生成sql语句
  11. linux和cisco有关系吗,如何在Linux环境下安装Cisco RTMT
  12. Xilinx FPGA全局时钟和局部时钟
  13. java使用POI5.0生成简易Excel工作簿的一种方法
  14. LED、LCD背光源、CCFL
  15. 如何实现文件目录自动生成(Windows操作系统)
  16. QM4_Probability
  17. 奥鹏英语计算机统考时间2019,【真题及答案】2019年4月网络教育统考《大学英语B》考试试题及答案[适用于奥鹏、电大国开、网络教育学...
  18. 快速绘制流程图「GitHub 热点速览 v.22.47」
  19. “邀请码” - 诈骗类应用分析
  20. 服务器mtbf性能测试,云服务器 MTBF指标

热门文章

  1. 二进制补码是如何把减法转变为加法的
  2. nginx做反向代理和后端web服务器之间的交互
  3. Shell--如何定义及遍历数组、字符串数组【工作笔记】
  4. 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
  5. 计算机系统结构知识总结,计算机基础知识总结
  6. 强化学习gym的使用之Pendulum的训练
  7. 屏幕录像制作gif动态图
  8. 九章算法笔记D2-坐标型动态规划
  9. DirectShow编程(2)- 开始DirectShow旅程
  10. 把握出租车行驶的数据脉搏 :出租车轨迹数据给你答案!