之前在C2000 用的modbus程序 移植到 cortex M0M3核的芯片上后,遇到向寄存器写入的时候程序偶尔会跑飞。
直到有一天,忽然注意到keil里面默认的 unsigned int 、 int 类型是32位 而 uint16_t 是16位。CCS里面 int 、unsigned int 和 uint16_t 都是16位。
而我一直认为int 是16位的呀
在程序中有一步操作
int *p;
uint16_t reg ;
uint16_t temp;
p=(int *)®
*p=temp; //-----程序在这里跑飞啦----
后来数据类型全部改为一致,问题解决。
记得以前C语言教科书有提到:不同的系统数据类型的长度也许是不一样的!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>