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

原本程序中中断函数有浮点数运算,但我又在main函数的while加入代码后出问题,问题如下:

Part Number:TMS320F28027Other Parts Discussed in Thread:SFRA, C2000WARE

原本程序中中断函数有浮点数运算,但我又在main函数的while加入代码后出问题,问题如下:

1.在中断中加入浮点数的运算

开始时一RUN程序直接跑到ILLEGAL_ISR函数中

浮点数采用printf打印输出,但我把中断里面的涉及浮点数的代码删除就可以正常运行,这是怎么回事?

谢谢!

Green Deng:

这个问题,因为之前已经说过F28027是定点芯片,不支持浮点数运算。不知道你的程序里面是否有对浮点数做过处理?

如果上述问题已经处理,那么进入非法中断很有可能就是堆栈溢出了,因为printf函数占用的空间很大。试一下重新配置cmd和linker中的堆栈空间大小

,

jun liu:

如果有部分浮点数运算那怎么处理?一定要按照IQmath处理?

,

Green Deng:

应该说,最常见的方法就是按照IQmath来处理。

,

jun liu:

可我按IQmath处理发现结果不对 差很多  那需要注意什么地方才不会导致结果误差大?谢谢!

,

Green Deng:

是计算的结果差很多还是printf输出的结果差很多?

,

jun liu:

printf打印的是计算的结果 打印的结果差很多 

,

jun liu:

另外还有个问题,主循环while里面有个printf("\r\n %d 次转换输出!!",adc_cnt);adc_cnt为int类型发现打印结果只输出数字 中文没输出 但在程序开头初始化的时候中文是可以打印出了  这是为什么?谢谢!

,

Green Deng:

建议先确认一下是计算的结果还是printf输出的结果差很多,因为printf有时候也会出问题,可能跟计算没关系。

,

jun liu:

printf官方有没有现成的例子?我这个代码是买的开发板带的 估计没官方的好用  另外SFRA的问题国外论坛回复没?谢谢!

,

Green Deng:

有一个例程:C:\ti\c2000\C2000Ware\device_support\f2802x\examples\drivers\C2kLaunchPadDemo

另外可以看一下这个帖子:e2echina.ti.com/…/tms320f28035-c2000-printf

赞(0)
未经允许不得转载:TI中文支持网 » 原本程序中中断函数有浮点数运算,但我又在main函数的while加入代码后出问题,问题如下:
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1