STM32库变量与CMSIS变量对比

2020-06-17 11:24

今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创!

3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 5-7所示,CMSIS和STM32固件库的数据类型对比如表 5-8所示。这些数据类型可以在

STM32F10x_StdPeriph_Lib_V3.4.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x\\stm32f10x.h中找到具体的定义,此部分定义如下。

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

2

3 typedef int32_t s32; 4

5 typedef int16_t s16; 6

7 typedef int8_t s8; 8

9 typedef const int32_t sc32; /*!< Read Only */ 10

11 typedef const int16_t sc16; /*!< Read Only */ 12

13 typedef const int8_t sc8; /*!< Read Only */ 14

15 typedef __IO int32_t vs32; 16

17 typedef __IO int16_t vs16; 18

19 typedef __IO int8_t vs8; 20

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

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

25 typedef __I int8_t vsc8; /*!< Read Only */ 26

27 typedef uint32_t u32; 28

29 typedef uint16_t u16; 30

31 typedef uint8_t u8; 32

33 typedef const uint32_t uc32; /*!< Read Only */ 34

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

36

37 typedef const uint8_t uc8; /*!< Read Only */ 38

39 typedef __IO uint32_t vu32; 40

41 typedef __IO uint16_t vu16; 42

43 typedef __IO uint8_t vu8; 44

45 typedef __I uint32_t vuc32; /*!< Read Only */ 46

47 typedef __I uint16_t vuc16; /*!< Read Only */ 48

49 typedef __I uint8_t vuc8; /*!< Read Only */ CMSIS IO类型限定词

IO类限定词 #define volatile const 描述 _I 只读访问 _O _IO volatile volatile 只写访问 读和写访问 固件库与CMSIS数据类型对比 固件库类型 CMSIS类型 描述 s32 int32_t 易挥发只读有符号32位数据 s16 int16_t 易挥发只读有符号16位数据 s8 int8_t 易挥发只读有符号8位数据 sc32 const int32_t 只读有符号32位数据 sc16 const int16_t 只读有符号16位数据 sc8 const int8_t 只读有符号8位数据 vs32 _IO int32_t 易挥发读写访问有符号32位数据 vs16 _IO int16_t 易挥发读写访问有符号16位数据 vs8 _IO int8_t 易挥发读写访问有符号8位数据 vsc32 _I int32_t 易挥发只读有符号32位数据 vsc16 _I int16_t 易挥发只读有符号16位数据 vsc8 _I int8_t 易挥发只读有符号8位数据 u32 uint32_t 无符号32位数据 u16 uint16_t 无符号16位数据 u8 uint8_t 无符号8位数据 uc32 const uint32_t 只读无符号32位数据 uc16 const uint16_t 只读无符号16位数据 uc8 const uint8_t 只读无符号8位数据 vu32 _IO uint32_t 易挥发读写访问无符号32位数据 vu16 _IO uint16_t 易挥发读写访问无符号16位数据 vu8 _IO uint8_t 易挥发读写访问无符号8位数据 vuc32 _I uint32_t 易挥发只读无符号32位数据 vuc16 _I uint16_t 易挥发只读无符号16位数据 vuc8 _I uint8_t 易挥发只读无符号8位数据 stm32f10x.h文件中还包含了常用的布尔形变量定义,如: 1 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 2

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

5 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) 6

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


STM32库变量与CMSIS变量对比.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四信路由器配置-电信模版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: