您现在的位置: 主页 > MCU > 单片机技术应用 > 关于STM32的变量定义 -
本文所属标签:
为本文创立个标签吧:

关于STM32的变量定义 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

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

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

本文引用地址: http://www.21ic.com/app/mcu/201806/764486.htm


3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 5?7所示,CMSIS和STM32固件库的数据类型对比如表 5?8所示。这些数据类型可以在STM32F10x_StdPeriph_Lib_V3.4.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstm32f10x.h中找到具体的定义,此部分定义如下。

1/*!

CMSIS IO类型限定词

IO类限定词

#define

描述

_I

volatile const

只读访问

_O

volatile

只写访问

_IO

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;



不同版本的标准外设库的变量定义略有不同,如3.4版本中就没有之前版本的TRUE和FALSE的定义,用户也可以根据自己的需求按照上面的格式定义自己的布尔形变量。在使用标准外设库进行开发遇到相关的定义问题时应首先找到对应的头文件定义。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 关于STM32的变量定义 -
 

"关于STM32的变量定义 -"的相关文章

网站地图

围观()