请选择 进入手机版 | 继续访问电脑版
搜索
专业IC版图外包服务 微信:drclvs
广告位:SY02 广告业务联系QQ:3173974412
无锡芯满微电子有限公司---专业研发电机驱动芯片
IC设计论坛----ictown.com
广告位:SY05 广告业务联系QQ:3173974412
查看: 312|回复: 0

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

[复制链接]

4

主题

4

帖子

21

E币

技术员

Rank: 2

积分
8
发表于 2019-11-29 22:18:45 | 显示全部楼层 |阅读模式
我们研究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就不会出现数据类型的错误了。
积分规则
回复

使用道具 举报

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

本版积分规则



版权所有:EDABOSS论坛 投诉受理:13816911948 合作热线:13816911948

备案信息:苏经营性ICP B2-20090218号 皖ICP备09697823号 电子公告服务许可文件号:皖通[2009]556号

Powered by EDABOSS X3.4 Tamplate By EDABOSS论坛  © 2001-2013 Comsenz Inc.

广告投放 微信:drclvs

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