stm32 数据类型的定义

发布者:数字驿站最新更新时间:2017-11-01 来源: eefocus关键字:stm32  数据类型 手机看文章 扫描二维码
随时随地手机看文章

在Keil MDK 开发环境里,比如一个 无符号32位整形数据会有很多种表示方法:1,unsigned int 32 (C语言标准表达方法) 2,uint32_t ;  3 ,u32;  这三种方式都是在表达同一个意思,可为什么ST的开发人员要搞的这么乱呢? 还有其他好多你可能看起来很陌生 ,很不好理解的表达方式,如:_IO  int32_t  他等同于vs32(这个你同样很陌生),不过他还等同于 volatile int32_t,  还等同于 volatile  signed int 32;最后这种表达方式才是C语言的标准表达方式,够乱吧,能把初学者弄的晕头转向。



其实ST 搞这么多花样,无非是想开发人员在写代码时定义数据类型能少写几个符号,然后又因为前后版本升级,为了兼容旧版本(主要是V2.0)才会出现这么多表示方法。不管他怎么换,都是基于标准C来的,看清楚以下几个文件你就OK了:core_cm3.h   ;stm32f10x.h;   stdint.h;  其中每个文件大概作用如下:

stdint.h 这里放着C语言的标准表达方式

   //第36行开始


typedef   signed          char int8_t;  //  标准表达方式 signed char 被等同于 int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;//在32位环境里,int代表4个字节32位!!
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;



core_cm3.h 文件主要针对动态 静态 变量修饰符做出类型扩展
#ifdef __cplusplus
  #define   __I     volatile            
#else
  #define   __I     volatile const      
#endif
#define     __O     volatile            
#define     __IO    volatile



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; 

关键字:stm32  数据类型 引用地址:stm32 数据类型的定义

上一篇:STM32缩写解释
下一篇:stm32中assert_param的用法说明

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

STM32 使用Cube的心得(一)
最近做了一个项目使用Cube自动生成代码,然后利用HAL库进行编程。芯片为STM32F103C8T6进行编程。 I2C读写 1. 地址需要自己左移1位(stm32中需要,但是NXP中不需要),LPC系列的以前用过一款,函数内部自动左移了。 2. SCL,SDA通信时需要接上拉电阻,然后接到高电平,否则通信不同,显示I2C处于busy状态。 FLASH读写 1. 注意Flash保存数据的起始地址,还要注意内存大小,是1KB,还是2KB,还是128KB 2. Flash擦除时有方法,不要统一擦除,比如:128KB,可以分为128个1KB的区域,每次写1KB,写满后再统一擦除。而且写入Flash时第一个地址要写入
[单片机]
<font color='red'>STM32</font> 使用Cube的心得(一)
stm32之TIM-高级定时器应用实例二(测量频率和占空比)
实验二:PWM输入捕捉实验 实验要求: 高级定时器TIM1接收TIM2产生的PWM,TIM1测量PWM的频率和占空比,并将数据从UART1上发送到上位机,同时上位机通过发送命令改变PWM的占空比和频率。 硬件设计: 用杜邦线连接TIM2通道一(PA.0)引脚与TIM1通道一(PA.8)引脚。PA.9是USART1的输出引脚,PA.10是USART1的接收引脚,分别接到串口转接板的RXD、TXD。 实验步骤: 初始化USART1,用于与PC端通信 初始化通用定时器TIM2和高级定时器TIM1,前者产生PWM,后者捕获PWM,杜邦线桥接。 初始化SysTick系统滴答计时器,用于任务周期管理 创建一个数据接收队列,接收
[单片机]
<font color='red'>stm32</font>之TIM-高级定时器应用实例二(测量频率和占空比)
STM32 ADC的规则通道和注入通道有什么区别
STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。 有2种划分转换组的方式:规则通道组和注入通道组。通常规则通道组中可以安排最多16个通道,而注入通道组可以安排最多4个通道。 在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。 一个不太恰当的比喻是:规则通道组的转换好比是程序的正常执行,而注入通道组的转换则好比是程序正常执行之外的一个中断处理程序。 再举一个不一定使用的例子: 假如你在家里的院子内放了5个温度探头,室内放了3个温度探头;你需要时刻监视室
[单片机]
STM32的USB多包数据传送
因为我看到STM32的USB都没有对发送状态进行检测,当多于传送缓冲器的数据要传送时,估计就会出错了,所以找下这篇文章,但没有找到原始作者,但也在此谢过了! STM32的多包数据传送(转贴) SMT32F103,根据例程 Custom_HID 修改,利用 EP1 以 EP_INTERRUPT 的方式发送包, 原来的例程每次发送 2 个字节,现在修改后包的长度不超过 64 字节时发送是正常的,但当 一个包长超过 64 字节时就发送失败,没有数据出来(程序没有死机),该改的地方都已经修 改了,不知道哪个地方还没有改到位,谢谢! 现 象 就 是 超 过 63 字 节 的 包 死 活 也 发 不 出 去 , 而 且 发 送 包
[单片机]
基于STM32微控制器处理先进电机控制方法
   变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。     首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明交流电机
[嵌入式]
stm32专题二十:FSMC
STM32F1 系列芯片使用 FSMC 外设来管理扩展的存储器,FSMC 是 Flexible Static Memory Controller 的缩写,译为灵活的静态存储控制器。它可以用于驱动包括 SRAM、NOR FLASH 以及 NAND FLSAH 类型的存储器,不能驱动如 SDRAM这种动态的存储器而在 STM32F429 系列的控制器中,它具有 FMC 外设,支持控制 SDRAM存储器。 中文参考手册对FSMC的描述: 接下来是FSMC的结构框图: 在框图的右侧是 FSMC 外设相关的控制引脚,由于控制不同类型存储器的时候会有一些不同的引脚,看起来有非常多,其中地址线 FSMC_A和数据线 FSMC_D是所
[单片机]
<font color='red'>stm32</font>专题二十:FSMC
ST联手Fieldscale为基于STM32的智能设备带来简单直观的触控体验
半导体供应商意法半导体(STMicroelectronics,简称ST; 纽约证券交易所代码:STM)与ST授权合作伙伴、仿真软件提供商Fieldscale合作,简化基于STM32微控制器(MCU)的智能设备的触控用户界面开发过程。 触控功能方便省事,对最终用户很有吸引力,并且可以提高产品的可靠性、入口防护级别和成本效益。另一方面,触控界面开发具有挑战性。当采用常规的迭代设计方法时,优化系统,消除意外影响并确保触控响应性在任何操作条件下都保持一致,用户可能需要开发多个原型。 现在,意法半导体和Fieldscale公司合作,让Fieldscale的SENSE开发平台支持意法半导体的Arm® Cortex®-32位MCU
[单片机]
ST联手Fieldscale为基于<font color='red'>STM32</font>的智能设备带来简单直观的触控体验
STM32 AT24C128简单读写程序
目前个人测试过AT24C02-AT24C128,感觉还可以。里面没有页写函数,有兴趣的伙伴可以补充一下,该程序仅供参考 单片机源程序如下: #include led.h #include delay.h #include sys.h #include usart.h #include key.h #include 24cxx.h #include myiic.h //要写入到24c128的字符串数组 const u8 TEXT_Buffer ={ STM32 AT24c128 }; #define SIZE sizeof(TEXT_Buffer) #define ADDRESS 163 //读
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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