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

TMS320F2809: CCS对于%运算符的支持怎样?

Part Number:TMS320F2809

CCS 6.2对于%运算符的支持怎样?采用%进行运算的时候,为什么程序运行不对?

Green Deng:

CCS支持%运算的,你是具体怎么编写代码的?程序运行不对是指什么不对?

,

NickTI:

Uint16 eshCNT = 0;Uint16 yu=0;

void Fun(){

yu=eshCNT%10;

if (yu == 0) { GpioDataRegs.GPASET.bit.GPIO10 = 1; DELAY_US(500); GpioDataRegs.GPACLEAR.bit.GPIO10 = 1; eshCNT=0; } if (yu == 1) { GpioDataRegs.GPASET.bit.GPIO10 = 1; DELAY_US(800); GpioDataRegs.GPACLEAR.bit.GPIO10 = 1; } if (yu == 2) { GpioDataRegs.GPASET.bit.GPIO10 = 1; DELAY_US(1000); GpioDataRegs.GPACLEAR.bit.GPIO10 = 1; } eshCNT++;

}

程序运行过程中,会丢掉800us的高电平,只有500和1000us的高电平出现?

补充内容:

1、在可以击中断点的情况下,以单次进入Fun()函数20次为例,前10次缺少2和6,剩下的0、1、3、4、5、7、8、9出现;后10次缺少4和8,剩下的0、1、2、3、5、6、7、9出现。

2、采用yu=eshCNT&0x000F;语句,则缺失4和8。

,

NickTI:

你好,已经补充了说明,还有需要补充内容么?

,

Green Deng:

有没有试过在其他版本的 CCS 中看到类似的情况?

CCS6.2对%运算没有特别操作。

% 操作由编译器 RTS 库中的函数执行。,它是用汇编写的,使用围绕 SUBCU 指令的循环。 自大约 20 年前编译器的第一个版本以来,它一直以这种方式工作。

尝试在 if (yu == 1) 内设置断点能停住吗?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2809: CCS对于%运算符的支持怎样?
分享到: 更多 (0)