TI中文支持网
TI专业的中文技术问题搜集分享网站

【问题】在TI enet_s2e 例程基础上,做简单浮点运算,使用CCS编译器烧录到TM4C1294芯片中,发现不能做浮点运算?

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){}
}

赞(0)
未经允许不得转载:TI中文支持网 » 【问题】在TI enet_s2e 例程基础上,做简单浮点运算,使用CCS编译器烧录到TM4C1294芯片中,发现不能做浮点运算?
分享到: 更多 (0)