历史上的今天

今天是:2024年11月18日(星期一)

2019年11月18日 | stm32数据类型

发布者:陈风102 来源: eefocus关键字:stm32  数据类型  变量类型 手机看文章 扫描二维码
随时随地手机看文章

stm32编程过程经常定义变量类型,经常担心数据运算过程中 超过变量类型范围。因为在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。所以下面列出常见数据类型:


一、C语言数据类型


stm32使用的数据类型定义在 stm32f30x.h中


This file contains all the peripheral registers definitions, bits 

  *          definitions and memory mapping for STM32F30x devices.

整型定义:


#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */

 

#include "system_stm32f4xx.h"

 

#include

 

 

/** @addtogroup Exported_types

* @{

*/

 

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

 

typedef int32_t s32;

 

typedef int16_t s16;

 

typedef int8_t s8;

 

 

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

 

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

 

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

 

 

typedef __IO int32_t vs32;

 

typedef __IO int16_t vs16;

 

typedef __IO int8_t vs8;

 

 

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

 

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

 

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

 

 

typedef uint32_t u32; /*常用类型*/

 

typedef uint16_t u16;

 

typedef uint8_t u8;

 

 

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

 

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

 

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

 

 

typedef __IO uint32_t vu32;

 

typedef __IO uint16_t vu16;

 

typedef __IO uint8_t vu8;

 

 

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

 

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

 

typedef __I uint8_t vuc8; /*!< Read Only */

浮点型:


#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH)

 

/* C99 additions */

 

typedef float float_t;

 

typedef double double_t;

注:还有float 浮点型 编译器中不能看到其定义(估计已编译了)。


而uint32_t 、uint16_t、uint8_t在哪里定义?在stdint.h文件中,详见下面:


 

/* exact-width signed integer types */

 

typedef signed char int8_t;

 

typedef signed short int int16_t;

 

typedef signed int int32_t;

 

typedef signed __int64 int64_t;

 

 

/* exact-width unsigned integer types */

 

typedef unsigned char uint8_t;

 

typedef unsigned short int uint16_t;

 

typedef unsigned int uint32_t;

 

typedef unsigned __int64 uint64_t;

 

 

/* minimum values of exact-width signed integer types */

 

#define INT8_MIN -128 /* s8 占用1个byte,数据范围 -2^7 到 (2^7-1) */

 

#define INT16_MIN -32768 /* s16 占用2个byte,数据范围 -2^15 到 (2^15-1) */

 

#define INT32_MIN (~0x7fffffff) /* -2147483648 is unsigned s32 占用 4个byte,数据范围 -2^31 到 (2^31-1) */

 

#define INT64_MIN __ESCAPE__(~0x7fffffffffffffffll) /* -9223372036854775808 is unsigned int64_t占用8个byte,数据范围 -2^63 到 (2^63-1) */

 

 

/* maximum values of exact-width signed integer types */

 

#define INT8_MAX 127

 

#define INT16_MAX 32767

 

#define INT32_MAX 2147483647

 

#define INT64_MAX __ESCAPE__(9223372036854775807ll)

 

/* maximum values of exact-width unsigned integer types */

 

#define UINT8_MAX 255 /* u8 占用1个byte, 数据范围 0 - 2^8*/

 

#define UINT16_MAX 65535 /* u16 占用2个byte, 数据范围 0 - 2^16*/

 

#define UINT32_MAX 4294967295u /* u32 占用4个byte, 数据范围 0 - 2^32*/

 

#define UINT64_MAX __ESCAPE__(18446744073709551615ull)

由上述可知:


1、有符号整型


s8 占用1个byte,数据范围 -2^7  到 (2^7-1)

s16 占用2个byte,数据范围 -2^15 到 (2^15-1)

s32 占用 4个byte,数据范围 -2^31 到 (2^31-1)2^31  = 2147483647

int64_t占用8个byte,数据范围 -2^63 到 (2^63-1)    2^63 = 9223372036854775807ll

 

2、无符号整型


u8  占用1个byte, 数据范围 0 - 2^8

u16 占用2个byte, 数据范围 0 - 2^16

u32 占用4个byte, 数据范围 0 - 2^32 2^32  = 4294967295

uint64_t 占用8个byte, 数据范围 0 - 2^64 2^64  = 18446744073709551615


3、浮点型


float ——4个byte,有符号型,可以表达负数/小数; Float 类型至少要能精确表示到小数点后6位。

double——8个byte,有符号型,可以表达负数/小数;Double 类型至少要能精确到小数点后 10 位。


关键字:stm32  数据类型  变量类型 引用地址:stm32数据类型

上一篇:stm32f0_GPIO
下一篇:stm32f4xx 加密

推荐阅读

  近日,神州控股旗下科捷物流在北京发布了“人机共舞2.0”立体高密度机器人智能仓,该技术采用“货到人”模式,将技术与现有物流业务流程充分融合,属国内首例。   神州控股科捷物流常务副总裁陈滔滔介绍,相较于业内传统地面机器人“货到人”系统,该机器人拣选系统运用天地轨运行自动控制技术,采取空中悬挂机器人模式,突破了传统机器人仅能在...
氧分析仪原理 常用的氧分析仪主要有热磁式和氧化锆式两种。氧分析仪、露点仪、氢分析仪、红外线分析仪、报警仪、焦炉煤气氧分析仪、水泥窑气体分析仪、电石炉尾气分析仪、高炉喷煤系统、半水煤气分析仪。(1)热磁式氧分析仪  其原理是利用烟气组分中氧气的磁化率特别高这一物理特性来测定烟气中含氧量。氧气为顺磁性气体(气体能被磁场所吸引的称为顺磁...
据韩联社报道,三星电子周三表示,在一名员工的冠状病毒检测呈阳性后,该公司已暂时关闭其位于韩国京畿道水原市的一个手机研究实验室。三星表示,已要求该大楼的所有工作人员在家办公,同时感染病毒的员工所在的楼层将关闭到周五。值得一提的是,三星总部就坐落于水原市。目前水原是三星在韩国国内的IT研发与半导体重镇,主要业务为产品研发,同时水原园区...
11月16日消息,据媒体报道,工信部信息通信管理局副局长王鹏表示,近年来,工信部聚焦人民群众反映强烈的APP违规处理用户个人信息、设置障碍、骚扰用户、欺骗误导用户等问题,截至目前已组织检测21批次共244万APP,累计通报2049款违规APP,下架540款拒不整改的APP。  王鹏表示,工信部不断强化应用商店关键责任链管理,督促应用商店加强自查清理...

史海拾趣

问答坊 | AI 解惑

大家ucos里面还用看门狗吗?

请问大家ucos写的程序里,还用看门狗吗?如果用的话,大家怎么喂狗?是每个任务里都喂吗?如果这样的话,因为ostimetick不停的在调度任务,那么即使一个任务死掉,其他的任务也会来喂狗,不就起不到狗的作用了吗?请教大家。…

查看全部问答∨

OLED资料

这是本次活动中将要使用到的OLED资料。请大家注意权利和使用范围。…

查看全部问答∨

求助:Wince实现超链接

就是有个窗口,上面有个文本,然后鼠标移动到文本上面时点击可以弹出浏览器然后浏览对应的地址。 以前做过MFC的,但是WINCE的怎么实现不太清楚,希望大家帮助~~~~谢谢~…

查看全部问答∨

www.kingofcoder.com 100MB 免费空间 + 100MB mysql 空间

www.kingofcoder.com 100MB 免费空间 + 100MB mysql 空间 大家快点来呀 JSP, PHP, oracle空间, 很快就会开通, 大家快点登记吧…

查看全部问答∨

可以改造电脑主板为开发板吗

想学嵌入式系统,比如linux内核,能否把主板当作开发板来用啊,如果可以的话,又需要注意什么?…

查看全部问答∨

张工谈怎样才能成为一位优秀的安防工程师?

对于刚入行的新人们来讲,常见的问题是对安放行业的发展和前景看不清楚、不知从何下手、如何下手、应该学习那些知识、掌握哪些技巧不知道,这也是很多同行经常向我咨询的问题。依据我的经验,不管从事那份工作、从事哪个职位,都需要严格、认真、仔 ...…

查看全部问答∨

6折转LPC2368开发板

本帖最后由 ddllxxrr 于 2016-1-7 17:10 编辑 手头有一块LPC2368开发板,9成新,超前电子的,现想转手换点现金买个2440或者6410, 原价469,现价240吧,联系qq 289916015 …

查看全部问答∨

本人新手,想交换块TI 原装LM3S8962学习一下

本人新手,看到这块主板,有些心动,本人手里有块英蓓特的em-stm3210e主板与ULINK2仿真器,基本全新,就用过一次,还有配套的开发板书籍(不是电子书),想换块TI 原装LM3S8962板子,有玩够的朋友可以QQ:16766496 注:开发板。 版主大大给行个方便, ...…

查看全部问答∨

双向IO口仿真测试

初学FPGA,我是用原理图设计的,其中存在IO双向口。仿真时写测试程序中相关的如下: wire [15:0] XDSP_DATA;//IO双向口 reg [15:0] XDSP_DATA_IN;//输入口 reg link;//三态控制 assign XDSP_DATA = link ? XDSP_DATA_IN : 16\'bz; 在测 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved