OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2489|回复: 3

keil中 int uint16_t 数据类型的一点问题

[复制链接]

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2016-11-25
在线时间
37 小时
发表于 2016-11-25 23:02:22 | 显示全部楼层 |阅读模式
    之前在C2000 用的modbus程序 移植到 cortex M0\M3核的芯片上后,遇到向寄存器写入的时候程序偶尔会跑飞。
    直到有一天,忽然注意到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语言教科书有提到:不同的系统数据类型的长度也许是不一样的!








正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-10-8
在线时间
32 小时
发表于 2016-11-25 23:23:49 | 显示全部楼层
这个就是基础知识,     整形   短整形  长整形    都不一定 是谁长谁短,      这种不同MCU  不同编译器的,   同个声明 代表不同字长   很正常.   
回复 支持 反对

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-29 14:40:17 | 显示全部楼层
16位也要分有没有符号的类型呀~
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-11-29 18:30:41 | 显示全部楼层
所以我都是直接u16,u8,u32这样啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 18:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表