stm32中的数据类型定义

2016-12-16 09:38:01来源: eefocus 关键字:stm32  数据类型定义

STM32F10X.H



 1 #include "core_cm3.h"

 2 #include "system_stm32f10x.h"

 3 #include

 4 

 5 /** @addtogroup Exported_types

 6   * @{

 7   */  

 8 

 9 /*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */

10 typedef int32_t  s32;

11 typedef int16_t s16;

12 typedef int8_t  s8;

13 

14 typedef const int32_t sc32;  /*!< Read Only */

15 typedef const int16_t sc16;  /*!< Read Only */

16 typedef const int8_t sc8;   /*!< Read Only */

17 

18 typedef __IO int32_t  vs32;

19 typedef __IO int16_t  vs16;

20 typedef __IO int8_t   vs8;

21 

22 typedef __I int32_t vsc32;  /*!< Read Only */

23 typedef __I int16_t vsc16;  /*!< Read Only */

24 typedef __I int8_t vsc8;   /*!< Read Only */

25 

26 typedef uint32_t  u32;

27 typedef uint16_t u16;

28 typedef uint8_t  u8;

29 

30 typedef const uint32_t uc32;  /*!< Read Only */

31 typedef const uint16_t uc16;  /*!< Read Only */

32 typedef const uint8_t uc8;   /*!< Read Only */

33 

34 typedef __IO uint32_t  vu32;

35 typedef __IO uint16_t vu16;

36 typedef __IO uint8_t  vu8;

37 

38 typedef __I uint32_t vuc32;  /*!< Read Only */

39 typedef __I uint16_t vuc16;  /*!< Read Only */

40 typedef __I uint8_t vuc8;   /*!< Read Only */

41 

42 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;

43 

44 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

45 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

46 

47 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;


源定义在#include


 1 /*

 2  * 'signed' is redundant below, except for 'signed char' and if

 3  * the typedef is used to declare a bitfield.

 4  */

 5 

 6     /* 7.18.1.1 */

 7 

 8     /* exact-width signed integer types */

 9 typedef   signed          char int8_t;

10 typedef   signed short     int int16_t;

11 typedef   signed           int int32_t;

12 typedef   signed       __INT64 int64_t;

13 

14     /* exact-width unsigned integer types */

15 typedef unsigned          char uint8_t;

16 typedef unsigned short     int uint16_t;

17 typedef unsigned           int uint32_t;

18 typedef unsigned       __INT64 uint64_t;

19 

20     /* 7.18.1.2 */

21 

22     /* smallest type of at least n bits */

23     /* minimum-width signed integer types */

24 typedef   signed          char int_least8_t;

25 typedef   signed short     int int_least16_t;

26 typedef   signed           int int_least32_t;

27 typedef   signed       __INT64 int_least64_t;

28 

29     /* minimum-width unsigned integer types */

30 typedef unsigned          char uint_least8_t;

31 typedef unsigned short     int uint_least16_t;

32 typedef unsigned           int uint_least32_t;

33 typedef unsigned       __INT64 uint_least64_t;

34 

35     /* 7.18.1.3 */

36 

37     /* fastest minimum-width signed integer types */

38 typedef   signed           int int_fast8_t;

39 typedef   signed           int int_fast16_t;

40 typedef   signed           int int_fast32_t;

41 typedef   signed       __INT64 int_fast64_t;

42 

43     /* fastest minimum-width unsigned integer types */

44 typedef unsigned           int uint_fast8_t;

45 typedef unsigned           int uint_fast16_t;

46 typedef unsigned           int uint_fast32_t;

47 typedef unsigned       __INT64 uint_fast64_t;

48 

49     /* 7.18.1.4 integer types capable of holding object pointers */

50 #if __sizeof_ptr == 8

51 typedef   signed       __INT64 intptr_t;

52 typedef unsigned       __INT64 uintptr_t;

53 #else

54 typedef   signed           int intptr_t;

55 typedef unsigned           int uintptr_t;

56 #endif

57 

58     /* 7.18.1.5 greatest-width integer types */

59 typedef   signed     __LONGLONG intmax_t;

60 typedef unsigned     __LONGLONG uintmax_t;


由上述可知:


1、有符号整型

 

  • s8 占用1个byte,数据范围 -2^7  到 (2^7-1)

  • s16 占用2个byte,数据范围 -2^15 到 (2^15-1)

  • s32 占用 4个byte,数据范围 -2^31 到 (2^31-1)2^31  = 2147483647

  • int64_t占用8个byte,数据范围 -2^63 到 (2^63-1)    2^63 = 9223372036854775807ll

 

2、无符号整型

 

  • u8  占用1个byte, 数据范围 0 - 2^8

  • u16 占用2个byte, 数据范围 0 - 2^16

  • u32 占用4个byte, 数据范围 0 - 2^32 2^32  = 4294967295

  • uint64_t 占用8个byte, 数据范围 0 - 2^64 2^64  = 18446744073709551615

3、浮点型

 

  •     float ——4个byte,有符号型,可以表达负数/小数; Float 类型至少要能精确表示到小数点后6位。

  •    double——8个byte,有符号型,可以表达负数/小数;Double 类型至少要能精确到小数点后 10 位。

 

二、不同数据类型混合运算

在C语言中,不同类型的数据间是可以混合运算的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如下:

注意:箭头的方向只表示数据类型级别的高低,由低向高转换,这个转换过程是一步到位的。

(三)数据类型转换规则

各类数据类型的转换,分为两种方式:隐式(编译软件自动完成),显式(程序强制转换)

隐式转换规则:

字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 
   short型转换为int型(同属于整型) 
   float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 
   赋值时,一律是右部值转换为左部类型 
[注] 
     当整型数据和双精度数据进行运算时,C先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型数据 
     当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据

显式转换规则:

例:(int)(x+y);

注:强制类型转换时,得到一个所需要的中间变量,原来变量的类型未发生变化。


关键字:stm32  数据类型定义

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2016121632404.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32 USB数据接收与数据发送程序流程分析
下一篇:最后一页

论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
stm32
数据类型定义

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved