stm32变量的定义

发布者:CreativeMind最新更新时间:2017-10-29 来源: eefocus关键字:stm32  变量 手机看文章 扫描二维码
随时随地手机看文章

一、最近在玩stm32,用库(V3.5.0)开发,被 stm32的变量定义搞的晕头转向,决心将其弄清楚。

在 stdint.h 文件里,我们可以清楚的看到:

 

typedef   signed          char int8_t;

typedef   signed short     int int16_t;

typedef   signed           int int32_t;

typedef   signed       __int64 int64_t;

   

typedef unsigned          char uint8_t;

typedef unsigned short     int uint16_t;

typedef unsigned           int uint32_t;

typedef unsigned       __int64 uint64_t;

   

   

   

typedef   signed          char int_least8_t;

typedef   signed short     int int_least16_t;

typedef   signed           int int_least32_t;

typedef   signed       __int64 int_least64_t;

   

typedef unsigned          char uint_least8_t;

typedef unsigned short     int uint_least16_t;

typedef unsigned           int uint_least32_t;

typedef unsigned       __int64 uint_least64_t;

   

   

typedef   signed           int int_fast8_t;

typedef   signed           int int_fast16_t;

typedef   signed           int int_fast32_t;

typedef   signed       __int64 int_fast64_t;

   

typedef unsigned           int uint_fast8_t;

typedef unsigned           int uint_fast16_t;

typedef unsigned           int uint_fast32_t;

typedef unsigned       __int64 uint_fast64_t;

   

typedef   signed           int intptr_t;

typedef unsigned           int uintptr_t;

   

typedef   signed       __int64 intmax_t;

typedef unsigned       __int64 uintmax_t;

在百度百科中,我们可以看到 stdint.h 的作用:

[转载]stm32变量的定义(整理而得,并非原创)

二、在 core_cm3.h 文件里,有如下定义:

 #ifdef __cplusplus

  #define     __I     volatile      

#else

  #define     __I     volatile const    

#endif

#define     __O     volatile    

#define     __IO    volatile    

CMSIS IO类型限定词

IO类限定词

#define

描述

_I

volatile const

只读访问

_O

volatile

只写访问

_IO

volatile

读和写访问

表格摘自 http://forum.eepw.com.cn/thread/215752/1

其中,volatile 的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.

而 const 是一个C语言的关键字,它限定一个变量不允许被改变。

三、在 stm32f10x.h 文件里,有如下定义:

typedef int32_t  s32;

typedef int16_t s16;

typedef int8_t  s8;

typedef const int32_t sc32;  

typedef const int16_t sc16;  

typedef const int8_t sc8;  

typedef __IO int32_t  vs32;

typedef __IO int16_t  vs16;

typedef __IO int8_t   vs8;

typedef __I int32_t vsc32;  

typedef __I int16_t vsc16;  

typedef __I int8_t vsc8;  

typedef uint32_t  u32;

typedef uint16_t u16;

typedef uint8_t  u8;

typedef const uint32_t uc32;  

typedef const uint16_t uc16;  

typedef const uint8_t uc8;  

typedef __IO uint32_t  vu32;

typedef __IO uint16_t vu16;

typedef __IO uint8_t  vu8;

typedef __I uint32_t vuc32;  

typedef __I uint16_t vuc16;  

typedef __I uint8_t vuc8;  

固件库与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位数据

表格摘自 http://forum.eepw.com.cn/thread/215752/1

变量声明宏定义及重命名基本都在此了!


关键字:stm32  变量 引用地址:stm32变量的定义

上一篇:STM32 GPIO中GPIOMode_TypeDef枚举变量的解析
下一篇:STM32的时钟配置

推荐阅读最新更新时间:2024-03-16 15:42

STM32学习笔记之定时器输入捕获实验
实验目的: 在串口调试助手上打印出按键按下的时间 实验步骤: 实验程序: /*******************************timer.c********************************/ #include sys.h #include stm32f4xx.h extern u8 TIM5CHA1_CAPTURE_STA; extern u16 TIM5CHA1_CAPTURE_VAL; /* 本示例的作用就是, 当按键按下时,每次输入捕获的时间差, 然后从串口调试助手中打印出其时间差; */ /*
[单片机]
stm32_RFID_RCC522无线通信
#include spi.h #include sys.h //ϵͳ×Óº¯Êý #include delay.h //ÑÓʱ×Óº¯Êý #include MFRC522.h unsigned char CT ;//¿¨ÀàÐÍ unsigned char SN ; //¿¨ºÅ unsigned char RFID ; //´æ·ÅRFID u8 KEY ={0xff,0xff,0xff,0xff,0xff,0xff}; void test_rf552(void); int main(void) { SystemInit(); delay_init(72); /
[单片机]
STM32的ADC用法
AD采样在电路中是一种比较常见的功能,可以用于电池电压检测、传感器值读取、信号采集等。STM32的ADC,由于引入了DMA,以及多种触发源,功能自然强大,用法也多种多样。今天,我们简单说说在单通道情况下,AD采样的几种用法。 1、AD单次转换+软件启动 最基本的用法,通过程序启动AD,AD采集一次,我们就去读一次。这种情况,建议开启AD转换完成中断,在中断中读出AD值并做处理。 这种方式的优点是配置简单,缺点么,太T么简单~ 初始化的时候,启动一次。然后在主循环里,每隔一秒启动一次。 在中断回调函数里,进行相关处理: 电脑输出如下: 2、连续转换+软件启动 在方法1的基础上做调整,从单次转换,变成连续转换。
[单片机]
<font color='red'>STM32</font>的ADC用法
STM32 keil 添加.h文件方法
新建并添加.h文件,文件名称命名与引用相同。 即如引用led.h,则保存的.h文件也应命名为led.h 例如: 在main函数中,引用
[单片机]
<font color='red'>STM32</font> keil 添加.h文件方法
STM32的DMA控制器
  DMA(直接存储器存取)用来提供在外设和存储器之间或者存储器与存储器之间的高速数据传输。无须CPU干预,这就可以节省CPU的资源来做其它操作。   两个DMA控制器有12个通道(DMA1有7通道,DMA2有5通道),还有一个仲裁器协调各个DMA请求的估先权。   有关DMA控制器的特性、框图、寄存器地址及含义等参考STN32资料手册,在此就不多说了,只讲述具体的设置应用。   结构体(DMA_InitTypeDef)说明:   PeripheralBaseAddr:外设地址 CPAR   MemoryBaseAddr: 存储器地址 CMAR   DIR:        传输方向(从外设读/从存储器读)   Buffe
[单片机]
毕业设计| STM32物流搬运小车
# 硬件选型 # 车身 :使用平衡小车之家的一款自带车体和4个麦克纳姆轮的套餐。(不需要PS2手柄,巡线配置都不需要,麦轮直径60mm) 主控 :STM32F103ZET6最小系统板,不是很推荐我使用的这块,主要是颜值不高。(不加SRAM)电机驱动 :WINGXINE阿里风斯的一款H桥双驱,电机驱动超级好用。 无线串口:选择的逐飞科技的无线串口,半双工。主要是喜欢即插即用。机械臂:这个爪子真的超级不推荐,放出截图给大家避坑。(黑色B款爪子) # 硬件设计 # 值得一谈的就是电源部分的设计,其余主控和电机驱动部分的设计,本质上只是进行相应的线路连接,仅此而已。下面我好好聊一下这次的电源设计。 1)一开始的方案是,使用一块
[单片机]
毕业设计| <font color='red'>STM32</font>物流搬运小车
STM32的多个ADC模块如何同时采样转换详细应用实例说明
在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块。其中,通道数因不同的系列或型号多少不等,几个到几十个的都有。有时,我们可能需要多个ADC模块同时工作,比方3个ADC模块同时采样转换。这时如果芯片内含有3个ADC模块,并支持同时采样转换就很方便。比方STM32F4系列、STM32F7等其它系列都含有3个ADC模块,并支持同时AD采样转换。 这里就3个ADC模块同时进行采样转换应用,做个简单实现示例,以供有需要的用户参考。此时3个ADC模块会建立主从关系。以STM32F4芯片为例。内部大致框架如下: 采样转换时按如下图示操作,每次对分别属于3个ADC模块的3个通道进行AD
[单片机]
<font color='red'>STM32</font>的多个ADC模块如何同时采样转换详细应用实例说明
低失真、状态变量式2相振荡电路
低失真、状态变量式2相振荡电路 电路的功能 用于音响设备的放大器在进行试验时需要低失真率信号源。近来,用于音响电路的低失真率OP放大器的产品很多。振荡器有失真,测量就受到限制。状态变量电路用途有源滤波器的基本组成部分,如加正反馈,便可成为振荡器。 积分器由2级反相放大器组成,积分器本身产生的高频失真每级平均衰减6DB/OCT,这种电路运用于低失真振荡电路,积分器的输入、输出间相位差为90度,可获得2相振荡输出。 电路工作原理 如果没有正反馈,OP放大器A1只起到反相放大器的作用,积分器A2和A3各有90度的相移,整个电路便会产生360度的相位滞后,环路放大倍数大于1时,电路产生振荡,振荡频率为FO=1/π
[模拟电子]
低失真、状态<font color='red'>变量</font>式2相振荡电路
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved