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