请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 630|回复: 0

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

[复制链接]

4

主题

0

回帖

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就不会出现数据类型的错误了。
积分规则
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-16 15:15 , Processed in 0.049692 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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