stm32编程过程经常定义变量类型,经常担心数据运算过程中 超过变量类型范围。因为在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。所以下面列出常见数据类型:
一、C语言数据类型
stm32使用的数据类型定义在 stm32f4xx.h中
整型定义:
#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 位。 二、不同数据类型混合运算 在C语言中,不同类型的数据间是可以混合运算的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如下: 注意:箭头的方向只表示数据类型级别的高低,由低向高转换,这个转换过程是一步到位的。 (三)数据类型转换规则 各类数据类型的转换,分为两种方式:隐式(编译软件自动完成),显式(程序强制转换) 隐式转换规则: 字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) short型转换为int型(同属于整型) float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 赋值时,一律是右部值转换为左部类型 [注] 当整型数据和双精度数据进行运算时,C先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型数据 当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据 显式转换规则: 例:(int)(x+y); 注:强制类型转换时,得到一个所需要的中间变量,原来变量的类型未发生变化。
上一篇:使用Ulink2的JTAG与SWD 调试stm32 区别
下一篇:stm32常用数据类型 U8、U16、U32到底代表什么?
推荐阅读
史海拾趣
机顶盒,全称为数字视频变换盒,是现代家庭娱乐系统中的重要组成部分。从广义上讲,任何与电视机连接的网络终端设备均可称为机顶盒,它们能够接收并转换来自不同信号源的数字信号,使之成为适合在电视上播放的格式。从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。
数字机顶盒主要负责实现数模转换功能,让传统模拟电视机也能观看数字电视节目,包括有线电视、卫星电视和地面广播电视的数字机顶盒。它们通过内置的调谐器接收信号,经解调器和解码器处理后,将数字信号转化为电视可识别的视频和音频流。
而网络机顶盒则进一步扩展了机顶盒的功能,它不仅能接收电视信号,还能接入互联网,提供诸如在线视频、游戏、应用程序下载等多元化服务。网络机顶盒支持高清、甚至超高清视频播放,结合智能技术,还能实现语音控制、智能推荐等便捷功能。此外,网络机顶盒还具备强大的内容分发和管理能力,通过与各大内容提供商合作,为用户提供丰富多样的节目资源。
随着科技的进步,机顶盒的发展趋势将更加注重技术升级、内容创新和用户体验。未来,机顶盒将在家庭娱乐系统中扮演更加重要的角色,为用户带来更为优质、便捷、智能的观影体验。
背景:随着中国经济的快速发展和消费者对电子产品需求的不断增加,Galaxy公司敏锐地捕捉到这一市场机遇。
行动:在2003年初,Galaxy以缜密的市场调研为基础,全力部署进入大陆市场。同年6月,公司推出了以“影驰”命名的Geforce家族系列产品,迅速吸引了众多游戏发烧友和电子产品爱好者的关注。随后,公司又在多个城市设立了销售和服务网点,为消费者提供更加便捷的产品体验和服务。
成果:经过多年的深耕细作,Galaxy在大陆市场取得了显著成绩,品牌影响力不断增强,市场份额稳步提升。
背景:在21世纪初,Galaxy公司凭借其在电子产品领域的深厚积累,决定进一步拓展国际市场。通过详细的市场调研,公司发现欧洲市场潜力巨大,特别是对高质量电子产品的需求日益增长。
行动:于是,Galaxy在波兰Cracow成立了欧洲分公司,地处欧洲中部,这一地理位置使其能够很好地覆盖整个欧洲大陆,包括东部和西部的国家。该分公司不仅作为销售中心,还承担起返修件回收处理的重任,确保客户能够享受到无时区差别的销售和维修服务。
成果:这一战略部署显著提升了Galaxy在欧洲市场的知名度和竞争力,市场份额逐年攀升,为公司的全球化进程奠定了坚实基础。
启英泰伦凭借其在人工智能芯片领域的硬科技实力,连续四年入选“成都硬科技扑克牌榜单”。这一荣誉不仅肯定了公司在技术创新和产品研发方面的成就,也提升了公司在行业内的知名度和影响力。作为一家专注于人工智能芯片硬科技领域的公司,启英泰伦一直致力于推动芯片技术的创新和突破,为客户提供最优质的产品和服务。
在全球倡导绿色低碳的背景下,Henkel也积极投身于绿色材料的研发和应用中。在电子行业中,Henkel推出了多款环保型粘合剂产品,这些产品不仅具有优异的性能表现,还符合国际环保标准和法规要求。通过推广绿色材料和技术解决方案,Henkel不仅为电子行业的可持续发展做出了贡献,也进一步巩固了其在该领域的领先地位。
以上五个故事展示了Henkel公司在电子行业中的发展历程和成就。凭借其创新的技术、全面的解决方案以及对可持续发展的承诺,Henkel将继续在电子行业中发挥重要作用。
Pin:Input powerPout:Output powerIM3:3rd order intermodulation productIIP3:Input 3rd order intercept pointOIP3:Output 3rd order intercept pointG:GainP1dB:1dB&n ...… 查看全部问答∨ |
|
我主板的操作系统准备用WinCE 6.0,外接了一个GPRS模块,还有几个其他模块。怎么把外接模块的驱动加到WinCE中啊?是像XP中那样安装呢?还是必须在定制系统的时候就把驱动程序加入进去呢?如果是后者,定制过程中,怎么把驱动加进去啊?我现在的驱动 ...… 查看全部问答∨ |
|
前些帖子介绍了人脸检测的一些相关的资料,下面这个帖子就具体步骤进行介绍: 要实现人脸检测必须从硬件和软件入手: 硬件方面: 1、在开始菜单中启动xilinx platform studio 11.1(因为本实验板附带的edk就是11版本的,大家可以到xilinx官网中 ...… 查看全部问答∨ |
|
大家好 我用的stm32单片机,我已经做了其他可能的排除,最好确定 定时器使能后先进入一次中断。 我感觉应该是有些标志位没有清除,希望各位大侠帮我看看。 void TIM_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeB ...… 查看全部问答∨ |