MSP430G2553单片机sin()、cos()函数计算–错误笔记

之前一直没有用MSP430G2553计算过三角函数值,一直以为MSP430单片机计算三角函数的速度应该与linux嵌入式开发板的计算速度不会有太大差别,一直以为MSP430内部会有特殊硬件辅助计算。一直觉得,既然MSP430单片机支持C语言标准库math.h,就一定可以进行sqrt(),sin(),cos()等计算。
谁知,我需要紧急使用MSP430G2553计算一个比较复杂的公式的时候,才发现MSP430G2553这款神器居然计算不了cos(float)、sin(float)等。(博主使用CSS V5开发套件,也有可能MSP430G2553是可以计算的,但是博主搞错了,所以此片文章就先假设MSP430G2553计算不了三角函数吧。)

一、测试现象

编辑一下代码并进行编译:

编译器成功计算,但是将tmp换为比较复杂的公式的时候,CCS就会编译报错。

二、解决办法

既然MSP430G2553无法计算,那么就只能祭出大招来计算了。简单思维后就可以发现,cos()、sin()、可以通过简单计算相互转换、而且通过弧度值(0,PI/2)的cos()、sin()计算结果可以计算出其他弧度值得cos()、sin()值。

第一招:查表法

使用EXCLE计算出(0,PI/2)范围内sin()、cos()值,保存到二位数组内。
我从搞数学的同学那里乞讨来的cos()、sin()表。
此表将(0,PI/2)等分为238等分,使用程序计算cos()、sin(),并将计算激活存储于此const double数组中。
查询办法:cos(Angle)= Cos_Table[Angle/90*238][0],sin()异同

第二招:快速傅里叶级数分解法

学过高等数学的朋友应该会会有所了解,使用傅里叶级数知识变换后可以得到正弦级数和余弦级数,那么通过编程就可以借助简单数值计算三角函数。具体理论知识大家可以问一下度娘。

u=2879855201,4085649907&fm=21&gp=0

Print Friendly
赞 (0)
分享到:更多 ()

留言板 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. Vjenis楼主,傅里叶级数程序中的lt和gt好像没有定义额回复
    • Clave由于前期更换Code Highlight插件,导致大于、小于号出现问题,已经修正。回复