标题: 关于ucos不同单片机平台移植的数据类型修改原因 [打印本页]

作者: 没有你    时间: 2019-7-23 12:21
标题: 关于ucos不同单片机平台移植的数据类型修改原因
我们研究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就不会出现数据类型的错误了。







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1