代码如下
void cordic_test(void){
float result;
Cordic_InitTypeDef p_cordic_init;
p_cordic_init.agr1 = 3.14f/4.0f;
p_cordic_init.agr2 = 0.0f;
p_cordic_init.func = 1<<1; /* 正弦 */
p_cordic_init.prec = 4<<4; /* 迭代4x2=8次 */
Cordic_Init(CORDIC,&p_cordic_init);
Cordic_Get_Reslut(CORDIC,&result);
xprintf("sin(%f)=%f\r\n",p_cordic_init.agr1,sinf(p_cordic_init.agr1));
xprintf("result:%f\r\n",result);
}
测试结果如下
修改迭代次数
p_cordic_init.prec = 5<<4;
可以看到和软件计算偏差变小