大家好:
最近在做CC2530裸机开发,没有涉及协议栈,只是当做普通的射频芯片来用,但是配置文件(xcl后缀的文件)用的是TI 的配置文件,这些配置文件主要是一些Flash空间的分配,另外工程的配置和TI的TI_MAC协议栈配置是一样的,现在发现一个很诡异的问题:
比如:
void a(uint32 x)
{
uint32 b = 1;
b += x*(uint32)3000;
}
当调用这个函数 a(1)的时候,计算值正确的情况应该是3001,但是CC2530计算的却是一个很大的数,明显的是计算溢出……这种情况怎么会溢出呢?
但是在TI的官方协议栈里面却又是正常的…… 详细对比了两个工程的配置,没什么区别……
希望遇到这样问题的朋友能给个解决方法!
但是如果修改下图黄色区域中的配置后(把ROM mapped as data 选项改成RAM memory),就又能计算正确……(TI的配置是ROM mapped as data) |