STM32学习之:stm32中C语言的数据类型

发布者:陈风102最新更新时间:2018-10-21 来源: eefocus关键字:STM32  C语言  数据类型 手机看文章 扫描二维码
随时随地手机看文章

在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。


(一)C语言中的种类数据


整型:int short long


实型:float double


STM32中的数据类型非常的多,常用的变量,文件中的定义如下:


    /* 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;


typedef int32_t s32;

typedef int16_t s16;

typedef int8_t s8;


typedef uint32_t u32;

typedef uint16_t u16;

typedef uint8_t u8;


还有float int编译器中不能看到其定义(估计已编译了)。


因此在STM32编程中,常用的数据类型有:char(字符型),u8,u16 ,u32,但是在一些计算中,涉及到负数,小数,因此要用到:int   float doulbe 型。


其中u8——1个字节,无符号型(不能表达负数,如果用来当作负数的话,就出错了);


     u16 ——2个字节,无符号型(参看前边STM32f10x.h中的定义);


     u32——4个字节,无符号型;


    int——4个字节,有符号型,可以表达负整数;


    float ——4个字节,有符号型,可以表达负数/小数;


   double——8个字节,有符号弄,可以表达负数/小数;


(二)不同类型数据的混合运算


在C语言中,不同类型的数据间是可以混合运算的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如下:



注意:箭头的方向只表示数据类型级别的高低,由低向高转换,这个转换过程是一步到位的。


(三)数据类型转换规则


各类数据类型的转换,分为两种方式:隐式(编译软件自动完成),显式(程序强制转换)


隐式转换规则:


字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用) 

   short型转换为int型(同属于整型) 

   float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型) 

   赋值时,一律是右部值转换为左部类型 

[注] 

     当整型数据和双精度数据进行运算时,C先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型数据 

     当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据


显式转换规则:


例:(int)(x+y);


注:强制类型转换时,得到一个所需要的中间变量,原来变量的类型未发生变化。


关键字:STM32  C语言  数据类型 引用地址:STM32学习之:stm32中C语言的数据类型

上一篇:STM32学习之:定时器时间计算
下一篇:STM32学习之:读取芯片的唯一标识ID

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

STM32中DMA模块的使用
DMA(Direct Memory Access)常译为“存储器直接存取”。早在Intel的8086平台上就有了DMA应用了。 一个完整的微控制器通常由CPU、存储器和外设等组件构成。这些组件一般在结构和功能上都是独立的,而各个组件的协调和交互就由CPU完成。如此一来,CPU作为整个芯片的核心,其处理的工作量是很大的。如果CPU先从A外设拿到一个数据送给B外设使用,同时C外设又需要D外设提供一个数据。。。这样的数据搬运工作将使CPU的负荷显得相当繁重。 严格的说,搬运数据只是CPU的比较不重要的一种工作。CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CPU还需要负责复杂的中断
[单片机]
<font color='red'>STM32</font>中DMA模块的使用
STM32单片机寄存器的功能解析
“大神”叫你先上STM32,51是小朋友玩的,所以你就不学51了 初学者建议从51单片机开始,虽然很多人建议直接上STM32,但本人还是建议先学习51单片机,简单且不容易打消积极性,很多人都是在积极性消退之后就会半途而废,等熟悉了LED、串口、SPI、按键、中断、IIC等这些基础之后,如果对单片机还有兴趣,不妨再去晋升学习STM32单片机,有了51单片机作为基础,这时候学习STM32也是可以非常快的就能上手。 一般的寄存器的定制是从0开始定义,0000这个寄存器地址存放的是温度的一个数据,然后0001这个采用的是湿度的数据,它们两个数据的范围都是0到65535,并且都是只读的,所以它适用于的是03这个功能,组态地址就不用关心了
[单片机]
<font color='red'>STM32</font>单片机寄存器的功能解析
labview 变体数据类型
  变体数据类型是LabVIEW中多种数据类型的容器。将其它数据转换为变体时,变体将存储数据和数据的原始类型,保证日后可将变体数据反向转换。 例如,如将字符串数据转换为变体,变体将存储字符串的文本,以及说明该数据是从字符串(而不是路径、字节数组或其它LabVIEW数据类型)转换而来的信息。 变体函数可用于创建和操作变体数据。可将平化数据和LabVIEW数据转化为变体数据,或将变体数据转化为LabVIEW数据。 变体数据类型可存储数据的属性。属性是定义的数据及变体数据类型所存储的数据的信息。   例如,如需知道某个数据的创建时间,可将该数据存储为变体数据并添加一个属性 时间,用于存储时间字符串。 属性数据可以是任意数据类型
[测试测量]
STM32之独立看门狗 学习笔记
一、独立看门狗概述: 独立看门狗其实就是一个独立于主时钟的定时复位狗。一旦开启独立看门狗,它就会根据自己设定的时间不断倒数,倒数到0后就开始复位。 二、关于喂狗: 喂狗就是让狗去吃东西,分心后,这只狗就得重新倒数。 三、stm32看门狗示例程序: #include led.h #include delay.h #include key.h #include sys.h #include usart.h void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使
[单片机]
STM32学习笔记—片内FLASH读写失败问题分析
FLASH,指Flash Memory,是一种非易失性存储器(闪存),掉电能正常保存数据。 STM32的存储器通常包含内部SRAM、内部FLASH,部分系列还包含EEPROM。其中FLASH通常用于存储代码或数据,可被读写访问。 STM32 FLASH 基础内容 STM32的FLASH组织结构,可能因不同系列、型号略有不同。比如大家熟悉的STM32F1中小容量一页大小只有1K,而F1大容量一页有2K。 还比如有些系列以扇区为最小单元,有的扇区最小16K,有的128K不等。 本文主要结合F4系列来描述关于FLASH的相关内容。 1.Flash 结构 通常Flash包含几大块,这里以F40x为例: 主存储器:用来存放用户
[单片机]
<font color='red'>STM32</font>学习笔记—片内FLASH读写失败问题分析
STM32:DAC配置以及使用
DAC简介 DAC顾名思义即数模转换,DAC模块由三个部分组成,分别为“触发选择”“控制逻辑” ‘数模转换器’。其中“触发选择”和“数模转化器”是DAC转换的必要模块,“控制逻辑”模块中包含有噪声发生器需要的LFSR寄存器,以及三角波发生器需要的计数器。 第一部分:DAC噪声生成 DAC噪声生成器是由两部分组成,一部分是线性反馈移位寄存器LFSR产生伪随机数,另一部分是数模转换器,将数字转换成对应的电压(DAC输出 = Vref x (DOR/4095))。 每次进行LFSR算法的位数由MAMPx 的数值来决定,屏蔽位从高位往低位进行。每触发一次会进行一次LFSR算法,进过LFSR得到的数值与DAC_DH
[单片机]
<font color='red'>STM32</font>:DAC配置以及使用
stm32 GPIO口配置操作
stm32里面最基本的思路就是使用外设相应寄存器之前,必须开启控制对应寄存器的时钟,读者可到技术手册中查询相应的时钟控制的相应的寄存器。 这里首先开启stm32普通io口的时钟。 GPIO 作为通用输入输出口使用时,当有外部中断设置时才需要开启AFIO时钟,否则不需要开启AFIO 时钟。 然后就是进行gpio结构体的初始化设置 GPIO 常用设置里包括三个结构体的使用如下: 1、GPIO_InitTypeDef为GPIO的基本参数设置结构体,其中GPIO_Pin表示引脚号,GPIO_Speed表示引脚的速度,GPIO_Mode表示引脚的输入输出模式选择。通过这三个基本设置实现了
[单片机]
单片机定时器中断原理和C语言代码详解
我之前都是用ARM7,单片机基本不会。但一个项目要用到51,所以克了一下51还是有点模糊,今天调了这个代码之后,对51定时器中断有些心得,拿来和大家共享。废话不说了,上代码。 #define _1231_C_ #include reg51.h #include 1231.h //sbit OE=P2^3; unsigned int SystemTime; void timer0(void) interrupt 1 using 3 //中断部分代码,见下文的释疑 { TH0 = 0xdb; TL0 = 0xff; // TF0 = 0; SystemTime++; } void m
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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