找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1883|回复: 0
打印 上一主题 下一主题
收起左侧

关于ucos不同单片机平台移植的数据类型修改原因

[复制链接]
跳转到指定楼层
楼主
ID:351097 发表于 2019-7-23 12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们研究ucos,会发现有一个定义数据类型定义的头文件。比如在STM32中,数据类型是这样定义的:typedef unsigned char  INT8U;   
typedef signed   char  INT8S;                  
typedef unsigned short INT16U;                  
typedef signed   short INT16S;                  
typedef unsigned int   INT32U;                  
typedef signed   int   INT32S;                  
typedef float          FP32;                    
typedef double         FP64;  

后面的大写BOOLENA、INT8U、INT8U、INT8S、INT16U、INT16S、INT32U、INT32S、FP32和FP64是ucos系统专用的数据类型,不能改动。数字是数据类型代表占多少bits,比如INT32U,是占用32个bits,无符号常整型。UCOS使用这些数据类型,位数一定要和数字一致,否则会出错。
在STM32中,用sizeof(signed   int )=4,; 即32bits。typedef signed   int   INT32S没问题。但是,在51单片机中,size of(signed   int )=2,即16bits。那为了兼容UCOS的INT32S的类型,需要51单片机也搞一个32bits的类型,刚好size of(signed   long )=4,即32bits。所以可以修改为typedef signed   long   INT32S。还有修改为typedef float    FP32;  修改为 typedef double    FP64。
     总之,就是移植不同平台的操作系统,需要注意不同平台的位宽,改动数据类型定义。多用size of()查看平台的数据类型长度,然后根据长度修改为兼容ucos系统的数据类型。这样,移植到51单片机后ucos就不会出现数据类型的错误了。


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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