【求助】使用chv003f4u6开发项目过程中,已经引用math.h库文件,出现调用fmod、sin、cos函数报错,报错如下

float Get_MainAngle(float angle)

{

    float a;

    a = fmod_custom((float)angle,(float)(2*pi));

    return a >= 0? a:a+2*pi;

}


void Set_PhaseVolatge(float uq,float ud,float angle)

{

    angle = Get_MainAngle(angle+zero_electric_angle);


    //帕克逆变换

    ualpha=ud*cos(angle)-uq*sin(angle);


    ubeta=uq*cos(angle)+ud*sin(angle);

    //克拉克逆变换

    ua=ualpha+volatge_supply/2;


    ub=(sqrt(3)*ubeta-ualpha)/2+volatge_supply/2;


    uc=(-ualpha-sqrt(3)*ubeta)/2+volatge_supply/2;


    Set_PWM(ua, ub, uc);

}

报错如下:

d:/application/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./User/main.o: in function `Set_PhaseVolatge':

D:\Project\MRS_project\CH32V003\CH32V003F4U6_VISION1\obj/../User/main.c:141: undefined reference to `cos'

d:/application/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\Project\MRS_project\CH32V003\CH32V003F4U6_VISION1\obj/../User/main.c:141: undefined reference to `sin'

collect2.exe: error: ld returned 1 exit status

make: *** [makefile:56: CH32V003F4U6_VISION1.elf] Error 1

这样的错误在程序编写过程中无错误提示,一经编译才发现有错误,根据报告来看是没有引用函数,可是已经引用了math.h库,而且多次修改发现再帕克逆变换之前直接对angle赋值不会出现这样的问题。菜菜求救,可提供完整代码。

程序中 fmod_custom函数是自己写的浮点数取余,经过验证无问题。

完全相同的程序放在,ch32v307vct6的工程中编译却不报任何错误。。。。。。。。



您好,如图位置将数学库添加到链接过程。

image.png


只有登录才能回复,可以选择微信账号登录