你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32数据类型

[复制链接]
攻城狮Melo 发布时间:2023-5-14 15:34

stm32编程过程经常定义变量类型,经常担心数据运算过程中 超过变量类型范围。因为在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。所以下面列出常见数据类型:


2 h. y( @" i. K% H$ t; I

一、C语言数据类型

stm32使用的数据类型定义在 stm32f30x.h中

  1.   This file contains all the peripheral registers definitions, bits   Y2 {- m. N% x9 \. D4 a
  2.   *          definitions and memory mapping for STM32F30x devices.
复制代码


, j0 x; k+ o) P& x1 I

整型定义:

  1. #include "core_cm4.h" /* Cortex-M4 processor and core peripherals */* l6 Z: Y; |  e( b" n. ]
  2. # x, X* q5 `6 Q2 E( i1 m
  3. #include "system_stm32f4xx.h"/ w5 i5 C. H# m5 Z

  4. 7 A' k% P7 m0 h. U
  5. #include <stdint.h>) e, s4 f& l) J
  6. 7 K' z4 w" l8 x. ?

  7. 5 w( L; \9 j* i8 q: n9 z
  8. /** @addtogroup Exported_types8 p6 r( q6 u! y1 f
  9. ( t3 q/ ^! E' w0 E9 ?
  10. * @{& T8 B3 L- ]/ W- S, p& L
  11. . A5 P5 [' q9 H
  12. */* i( p. j- R2 t4 x# }4 b; D6 h

  13. ' ]0 `0 ^4 k8 J  h$ P
  14. /*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */1 ~; ?# o& a- t+ f: a3 `& I  a

  15. 4 o7 ?6 a! `/ c$ i+ `6 q, V/ _0 H
  16. typedef int32_t s32;
    & H2 M7 e. B- E5 @

  17.   L9 m$ K$ C; E: {
  18. typedef int16_t s16;( S' l% g  B2 y

  19. ) T2 V# B! Y! H! p. E' K
  20. typedef int8_t s8;8 k6 }. T- B3 x
  21. - e! s0 _( p" [$ y! r* S
  22. . ?8 ]# d% P. @9 Z  D
  23. typedef const int32_t sc32; /*!< Read Only */# |( {  a, r  N9 R

  24. 5 Z% ^  ], ]0 s( ^7 `8 @
  25. typedef const int16_t sc16; /*!< Read Only */
    : j- x( u# Y8 V

  26. ; o. P/ r6 q$ l# }4 O) Y. C* V
  27. typedef const int8_t sc8; /*!< Read Only */: [" W: K. X' Q' n# r: v0 j
  28. 7 c. \! h; b' Y6 Q4 j6 ]" v

  29. 2 I* X8 {, n9 d, X, b
  30. typedef __IO int32_t vs32;
    8 M4 p7 X, X' y  D

  31. ( B2 {3 R5 S* J  c" x9 g7 f
  32. typedef __IO int16_t vs16;6 q8 a9 u. _7 I, j
  33. , O/ O; r# O# P! ~2 D8 y/ f8 h
  34. typedef __IO int8_t vs8;
    ' G& s" t$ O; |9 v5 p

  35. 2 U& L& x- f0 Y8 k

  36. : k# I( p( L8 E" n/ D
  37. typedef __I int32_t vsc32; /*!< Read Only */( q  j# V$ v  R- J! |8 ^

  38. 0 E# Z9 o' m/ m. t8 f" v  ?: V8 @5 }
  39. typedef __I int16_t vsc16; /*!< Read Only */
    ' a, }2 U* K! d0 g5 K+ U0 T1 _8 Q
  40. ( i4 M: [* e% h) w! v, \) M! Z: O
  41. typedef __I int8_t vsc8; /*!< Read Only */( E) Y- g8 }8 S, W7 H
  42. / H  u1 N5 {/ X! d, N+ n

  43. + J4 P4 o" r7 H9 u( r
  44. <span style="color:#ff6666;">typedef uint32_t u32; /*常用类型*/
    ! F- n  o% {3 X2 @

  45. 6 w' _/ {2 Z' I! o  R* H3 ]
  46. typedef uint16_t u16;+ E* h3 `/ }6 w2 G/ o8 n" }

  47. ! |+ f) J6 d. r  }+ U4 j
  48. typedef uint8_t u8;</span>
    / A6 A6 L  i9 z
  49. ! H7 Z9 I* D) L$ W  n: g+ G5 `( i
  50. $ R# P; P9 }# H" ]1 X% B, f6 }
  51. typedef const uint32_t uc32; /*!< Read Only */
    / C: F$ ?" X' e
  52. 6 j+ t0 ?: ?) D+ B
  53. typedef const uint16_t uc16; /*!< Read Only */
    & t! `9 {0 @' f% X, G
  54. + U% \. X- }. T1 r* p# ?5 L! r2 C
  55. typedef const uint8_t uc8; /*!< Read Only */
    + O  x* i3 J, e9 Z$ I! x
  56. 7 D2 u6 u0 t0 ?* a0 ?

  57. 3 T' b, N- ^1 l+ O  R6 X
  58. typedef __IO uint32_t vu32;3 l6 `: Y8 I/ p4 R1 z

  59. . P: @5 m+ c" ]! d6 J; }
  60. typedef __IO uint16_t vu16;
    # k: h2 D7 B9 J( A1 `

  61. / n# ~% N+ ?: y# I, N' S1 I3 Z; [( E
  62. typedef __IO uint8_t vu8;$ @5 G, W7 s( M$ f
  63. 9 G' f/ G4 W& ?& q

  64. . \# `" T3 \5 q5 t. n
  65. typedef __I uint32_t vuc32; /*!< Read Only */
    # K0 Q( b8 j" P! v0 |; \$ `2 i
  66. 1 w* K, A, a2 R0 Q( d; ]( Y. V
  67. typedef __I uint16_t vuc16; /*!< Read Only */
    2 t4 [! K( \1 b3 T/ |# g& i

  68. 1 _+ w5 Q, d4 h/ b# A( L& q
  69. typedef __I uint8_t vuc8; /*!< Read Only *
复制代码

( m6 d) L& S. U. N/ Q0 g; f( }


1 S3 j- F9 Z# t/ M( ]1 `

浮点型:

  1. #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH)$ j  p6 C: g  a
  2. - Q2 A2 z8 [7 K
  3. /* C99 additions */- u. H5 q' ?' T8 J/ K, D, c' j

  4. + [/ Z$ C. G) V- O8 h
  5. typedef float float_t;2 k7 K& W( {, `$ t$ g
  6. / ?3 ^  H9 ~% a# [
  7. typedef double double_t;
复制代码

8 s: W/ G5 Y* N( Y# Q3 Z7 U% ?) |

注:还有float 浮点型 编译器中不能看到其定义(估计已编译了)。

而uint32_t 、uint16_t、uint8_t在哪里定义?在stdint.h文件中,详见下面:

  1. /* exact-width signed integer types */
    $ L; h; [2 b  u( w; J7 h

  2. ; K' q* C9 c' J( m4 @/ u
  3. typedef signed char int8_t;! M" ]" D& Z8 j& w: R

  4. ) z2 M+ k& y" K$ p6 p% x
  5. typedef signed short int int16_t;! h: O* U' I$ O. J' U
  6. * D, `4 t6 Y  y1 i2 |: z6 U
  7. typedef signed int int32_t;
    2 X1 a: f, n$ U1 \
  8. ( @9 y3 v, N# W  j1 O
  9. typedef signed __int64 int64_t;
    & r& [6 }  g( f# t$ f, I6 n
  10. ; ?6 M3 N, l' E3 V$ _
  11. " k; q' R. n  R1 u# ^# |- K. W
  12. /* exact-width unsigned integer types */) ?7 j9 {9 P' C5 j" t7 n- k
  13. : g4 o% A! [' K6 P
  14. typedef unsigned char uint8_t;, K( N- a6 k5 X0 S% U* H# @
  15. $ I  U# d. ^* S3 y0 t% f
  16. typedef unsigned short int uint16_t;
    " r( V7 j# ^9 m$ c* i
  17. $ I) {0 d1 s' h- }1 f' `
  18. typedef unsigned int uint32_t;8 u$ X: Q- x) u
  19. " y& W9 T+ ^" U! k( u2 N$ x
  20. typedef unsigned __int64 uint64_t;, C1 P) J+ L. ~. S* S

  21. & u1 |, ^- e) e6 J& k# x
  22. ! ]  y! R, C" Q$ B# e: Z, l/ A/ {, G5 F
  23. /* minimum values of exact-width signed integer types */
    . |# A, g' J! e9 R: l" j

  24. % j$ S; v7 i& n' F) _7 Q. D
  25. #define INT8_MIN -128 /* s8 占用1个byte,数据范围 -2^7 到 (2^7-1) */& u( L; {1 ~: y" J( H! A
  26. & P# T' c2 R3 j9 i$ a, m3 {
  27. #define INT16_MIN -32768 /* s16 占用2个byte,数据范围 -2^15 到 (2^15-1) */; d0 `$ W1 Y, @8 K: X9 J
  28. , i& w/ i0 O, L/ Q
  29. #define INT32_MIN (~0x7fffffff) /* -2147483648 is unsigned s32 占用 4个byte,数据范围 -2^31 到 (2^31-1) */, K8 B; @' {3 Q2 C" ~, G8 ?0 i
  30. 5 z  z3 [% q" d3 n8 H
  31. #define INT64_MIN __ESCAPE__(~0x7fffffffffffffffll) /* -9223372036854775808 is unsigned int64_t占用8个byte,数据范围 -2^63 到 (2^63-1) */" Q1 j0 G7 I0 A3 A
  32. 6 V% l  S; |/ r$ N/ C) o$ ]
  33. + ^& X1 S7 V5 ]6 E8 \* E3 J/ }' k. a
  34. /* maximum values of exact-width signed integer types */4 f% C; ^/ Z5 Z$ s/ D; G6 ]% X. |
  35. ! l- @1 Y) b8 W2 s% o' B
  36. #define INT8_MAX 1270 y9 V, ?% S$ G  s# Y8 y
  37. 7 e  n: O& ~; C) x4 ?7 j( N
  38. #define INT16_MAX 32767
    " ?3 |2 o2 x" H8 u  f
  39. ' W9 a. A+ \9 l! X( D
  40. #define INT32_MAX 2147483647: m/ B; a+ A% e! ~/ ~1 H
  41. " G5 f* k) J/ R( w' p0 C& M0 e
  42. #define INT64_MAX __ESCAPE__(9223372036854775807ll)
    ) ?( m3 b2 ]9 i

  43. + g- N- G! G  z( s% {( Q" G2 v

  44. / J! w/ a. U8 _- |) u! I  C
  45. /* maximum values of exact-width unsigned integer types */
    # a9 P  i0 |8 B
  46. + W2 B+ U) L  d
  47. #define UINT8_MAX 255 /* u8 占用1个byte, 数据范围 0 - 2^8*/& L  f/ \% h4 k0 Y; R
  48. # S$ v9 G# D0 g; ]  s/ R1 r7 [$ _
  49. #define UINT16_MAX 65535 /* u16 占用2个byte, 数据范围 0 - 2^16*/
    2 ]" Q. U0 B! W3 K; p; t4 @5 q7 G% R

  50. ; M- z$ ^9 I+ s: H6 F
  51. #define UINT32_MAX 4294967295u /* u32 占用4个byte, 数据范围 0 - 2^32*/
    ( s- x8 `8 ^  G* U$ ~9 E

  52. ! ]$ k+ T# a+ q  [1 W
  53. #define UINT64_MAX __ESCAPE__(18446744073709551615ull)
复制代码

4 Z- |( W8 E& O+ V2 G

* b' U. Y7 S/ O5 l( h

由上述可知:

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
    1 v5 {* X: E+ i% P( [/ N

' j* B5 c1 H9 [! M
4 L& c# l" ?  B8 `$ X, @: f

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, @  ]6 s, [4 ~: j
3 M* @6 F' ]# i6 G* S
' U( v# N9 X6 n! E( G1 j

3、浮点型

  •     float ——4个byte,有符号型,可以表达负数/小数; Float 类型至少要能精确表示到小数点后6位。
  •    double——8个byte,有符号型,可以表达负数/小数;Double 类型至少要能精确到小数点后 10 位。1 \3 k3 S! N1 ^: C, Y0 ~

; v& t! M) @! E! r7 V% F

+ C+ ]! G: K, n5 e1 [4 S: S转载自:路途…: |) ]3 D1 K" B' ]% G% N4 n
如有侵权请联系删除5 F) V' y' L3 K

& o) e, ?0 S0 i( e) H* M
% {4 [7 `2 a6 O6 M. m9 e2 \

  @) U% N8 g$ H1 h  Y: a
收藏 评论0 发布时间:2023-5-14 15:34

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版