关于STM32的变量定义
今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创!
今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创!
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中找到具体的定义,此部分定义如下。
CMSIS IO类型限定词
固件库与CMSIS数据类型对比
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数据类型对比
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数据类型对比