TI工程师:
您好!
我在使用TMC1294NCPD评估版开发时,参考www.ti.com/…/spma072.pdf 文档,按照文档中所描述的步骤在加载enet_s2e例程,因为该例程移植好了FreeRTOS和TCP/IP协议栈,想在该例程基础上做开发,在例程中加入了浮点运算操作,Debug时发现程序会直接跳过浮点运算代码,不执行浮点运算,如下:
针对这个情况,又尝试软件使能FPU,发现还是不行:
一直在找资料调查这个问题,没有找到解决方法,所以在TI E2E社区里问一下TI的工程师们,是否该例程中对浮点运算做了配置?
能否帮忙看下,比较急!
谢谢!
Susan Yang:
理论上就是需要CCS内打开FPU,在程序内 从fpu.h文件中调用FPUEnable和FPULazyStackingEnable函数就可以了
我用下面的代码测试TM4C123是没有问题的
#include <stdint.h> #include <stdbool.h> #include <math.h> #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/fpu.h" #include "driverlib/sysctl.h" #include "driverlib/rom.h" #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #define SERIES_LENGTH 100 float gSeriesData[SERIES_LENGTH]; int32_t i32DataCount = 0; int main(void) {float fRadians;ROM_FPULazyStackingEnable();ROM_FPUEnable();ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);fRadians = ((2 * M_PI) / SERIES_LENGTH);while(i32DataCount < SERIES_LENGTH){gSeriesData[i32DataCount] = sinf(fRadians * i32DataCount);i32DataCount++;}while(1){} }