float temp = 0;
float temp1 = 0;
float temp_out;
float temp_out_sin;
float temp_out_sin1;
s16 SIN_Taile(s16 position)
{
s16 out = 0;
Taylor_D = Taylor_1/Taylor_8_9;
Taylor_Time1 = GetSysTime_us();
temp = (position*Base_180_PI/32768);//必须转化为弧度计算,这段代码在主频64MHZ下,执行时间为39us
temp1 = temp * temp;
temp_out = 1 - (temp1)/(72);
temp_out = 1 - temp_out *((temp1)/(42));
temp_out = 1 - temp_out *((temp1)/(20));
temp_out = 1 - temp_out *((temp1)/(6));
temp_out_sin = temp_out*temp;
Taylor_Time2 = GetSysTime_us();
Taylor_Time3 = Taylor_Time2 - Taylor_Time1;
/*********************************************************/
//注意一下几点:会影响到程序执行时间的
/*
1)类型强制转换,会导致时间增加;
2)一个表达式中如果括号很多的话,也会导致时间增加,不如分开多写几个表达式实现
3)程序中浮点型的乘除占用时间比32767或者2的倍数的乘除多很多
*/
return (temp_out_sin);
}
//参考 http://blog.youkuaiyun.com/yingxuexuan/article/details/6829744
//sin(nx) = 2*cos(x)*sin( (n-1)x ) - sin( (n-2)x )
//注意初始值,sin((n-1)x),a1 = 2*cos(x),a2 = -1;x = 2*pi*Frep/Fsample
s16 y[3] = {0,514,0}; // y(n), y(n-1), y(n-2)
s16 a1 = 32752;
s16 a2 = -16384; //Q14格式
s16 singen(void)
{
y[0]=((long)a1*(long)y[1]+(long)a2*(long)y[2])>>14;
y[2]=y[1];
y[1]=y[0];
return y[0];
}
float temp1 = 0;
float temp_out;
float temp_out_sin;
float temp_out_sin1;
s16 SIN_Taile(s16 position)
{
s16 out = 0;
Taylor_D = Taylor_1/Taylor_8_9;
Taylor_Time1 = GetSysTime_us();
temp = (position*Base_180_PI/32768);//必须转化为弧度计算,这段代码在主频64MHZ下,执行时间为39us
temp1 = temp * temp;
temp_out = 1 - (temp1)/(72);
temp_out = 1 - temp_out *((temp1)/(42));
temp_out = 1 - temp_out *((temp1)/(20));
temp_out = 1 - temp_out *((temp1)/(6));
temp_out_sin = temp_out*temp;
Taylor_Time2 = GetSysTime_us();
Taylor_Time3 = Taylor_Time2 - Taylor_Time1;
/*********************************************************/
//注意一下几点:会影响到程序执行时间的
/*
1)类型强制转换,会导致时间增加;
2)一个表达式中如果括号很多的话,也会导致时间增加,不如分开多写几个表达式实现
3)程序中浮点型的乘除占用时间比32767或者2的倍数的乘除多很多
*/
return (temp_out_sin);
}
//参考 http://blog.youkuaiyun.com/yingxuexuan/article/details/6829744
//sin(nx) = 2*cos(x)*sin( (n-1)x ) - sin( (n-2)x )
//注意初始值,sin((n-1)x),a1 = 2*cos(x),a2 = -1;x = 2*pi*Frep/Fsample
s16 y[3] = {0,514,0}; // y(n), y(n-1), y(n-2)
s16 a1 = 32752;
s16 a2 = -16384; //Q14格式
s16 singen(void)
{
y[0]=((long)a1*(long)y[1]+(long)a2*(long)y[2])>>14;
y[2]=y[1];
y[1]=y[0];
return y[0];
}