STM32的数据类型基础介绍

发布时间:2024-03-08  

首先说一下编程过程中几个步骤吧

第一,选择一门语言,C语言或汇编语言,嵌入式编程一般目前流行还是C,这个需要基础与时间


第二读懂了解 MCU的寄存器各寄存器的功能,尤其是一些IO口设置,各模块时钟设置比如定时器,I2C,同步异步串口,PWM等等,以前的话51的话没有这样设置。而现在MCU基本上各模块时钟都分开了。这个可以看官方数据说明书就可以了。


其实程的目的就是设置一系列寄存器.并根据你设计程序流程去执行它,期间可能加入了你设计好的一些算法,和数学公式。进行计算,或执行。


第三,你有一块你的实验板就如这次STM32推的F429,你还需要下载程序的编程器。就是把编译器编译好的代码下载到你的目标实验板上,不过ST推的多数实验班都是自带USB串口的程序下载器。比如STM32F429就自带了


第四,你还需要了解的是编译器,编译器的数据类型一些定义,及有些编译器的可能自带内建函数,这个不必须了解。否则无法编程。


本文主要就介绍STM32的数据类型的基础知识。以及一些关键词的意义。

▲在KELI MDK数据类型中进了如下定义

char占用1个字节

short int占用2字节

int占用4字节

long占用4字节

long int占用4字节

float占用4字节

double占用8字节

即有如下宏定义

typedef unsigned char    uint8;      // 无符号8位字符型变量

typedef signed   char    int8;       // 有符号8位字符型变量
typedef unsigned short   uint16;     // 无符号16位短整型变量
typedef signed   short   int16;      // 有符号16位短整型变量
typedef unsigned int     uint32;     // 无符号32位整型变量
typedef signed   int     int32;      // 有符号32位整型变量

typedef float            fp32;       // 单精度浮点数(32位长度)

typedef double           fp64;       // 双精度浮点数(64位长度)

注:C语言中的种类数据:整型:int short long 实型:float, double 。

其中,Unsigned 为无符号, signed  有符号。

▲STM32的数据类型的宏定义

STM32采用了大量的固件库,其中在2.0库中有24个数据类型如下
typedef unsigned char u8;0~255一字节

typedef signed char s8;-128~127

typedef volatile unsigned char vu8;

typedef volatile signed char vs8;

typedef unsigned char const uc8;

typedef signed char const sc8;

typedef volatile unsigned char const vuc8;

typedef volatile signed char const vsc8;

typedef unsigned short u16; 0~65535两字节

typedef signed short s16; -32768~32767两字节

typedef volatile unsigned short vu16;

typedef volatile signed short vs16;

typedef unsigned short const uc16;

typedef signed short const sc16;

typedef signed short const sc16;

typedef volatile unsigned short const vuc16;

typedef volatile signed short const vsc16;

typedef unsigned long u32; 0~(2^32-1)四字节

typedef signed long s32;

typedef signed long const sc32;

typedef volatile unsigned long const vuc32;

typedef volatile signed long const vsc32;

对部分数据类型后面作了注释,其它类型类推。

▲ 关于两个关键词说明 volatile& const

(1)volatile :这个关键字,很多人只知道用,不知道其含义,有介绍解释是不易被编译器优

化的。在STM32资料中解释加了易挥发的变量。这些解释都是含糊不清的。

为此笔者专门查了下这个修饰关键字含义

通俗的解释:    随时会改变,并被多函数调用可以加volatile修饰。

简称易变变量或易挥发变量。

表示这个变量的真的很容易变。

进阶解释:  加了这个volatile意义就是在每次取这个变量值的时候,要求不是取它上次在某个 时候取的临时缓存变量(比如说暂存在某个寄存器中),而是直接到内存中取。

个人经验: 告诉编译器,volatile定义的变量必须RAM变量.不能是寄存器变量.

尤其是中断中用   全局变量一定要加volatile。

(2)const: 在定义变量时候,如果加上关键词const,则变量的值在程序运行期间不能改变,当然不能再赋值了。这种变量称为常变量(constant variable)或是只读变量(read-only-variable,这样觉得更恰当)。

▲  STM32F10x_StdPeriph_Driver 3.0以后的版本中使用了CMSIS数据类型

3.0以后版本与之前版本变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 3所示,CMSIS和STM32固件库的数据类型对比如表 5所示。这些数据类型可以在

STM32F10x_StdPeriph_Lib_V3.4.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x

stm32f10x.h中找到具体的定义。

▲ 数据类型和IO类型限定词Cortex-Mx HAL使用标准ANSI C头文件定义的标准类型。特别用类型限定词IO来访问外设的变量。      
   表3 数据类型限定词IO。

STM32的数据类型基础介绍

▲ ST从库包中移除了文件”stm32f10x_type.h”,新的库使用CMSIS和定义的数据类型。

表5展示了STM32F10xxx和之间数据类型的一一对应关系。表5  STM32F10xxx固件库V2.0.3与CMSIS数据类型对比

STM32的数据类型基础介绍

▲注意出于兼容旧版本的目的文件”stm32f10x.h”中仍然定义了STM32F10xxx固件库原有数据类型。

文件”stm32f10x.h”中也定义了STM32F10xxx固件库专用类型.

它们是:typedef enum {FALSE = 0, TRUE = !FALSE} bool;

typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;

typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    电路 2. C语言 3. 单片机 1. 基础电路 要熟悉常用的电子元器件、比如电阻电容、二极管、三极管等原理,熟悉串联并联电路原理等等。 2.C语言 前期通常只需要学习常用的一些数据类型......
    数据类型期间,可以定义各个元素的数据类型。 如果需要各种数据类型的组装数据记录,则会频繁使用 PLC 数据类型,并且将从程序中的不同点处理这些数据。 例如,这些数据可以是: 用于物料跟踪的数据......
    的收集需要政策制定者、汽车制造商和消费者的合作,尤其需要明确数据使用的限制。 Ma说:“政策制定者需要确定哪些数据将被汽车制造商使用,哪些数据不能使用,只能存储在本地,而哪些数据......
    unsigned           int uint32_t;   typedef unsigned       __INT64 uint64_t; 通过与上面对比,我们就可以知道,在MDK5中,对于MDK中的一些数据类型......
    。   以上是常见的PLC数据类型,不同的编程软件和PLC厂家可能会有特定的数据类型。   在PLC编程中,我们需要使用这些数据类型来定义变量,以便在程序中存储和处理数据。另外,在PLC编程中还需要注意数据类型......
    有很多后续的触发来覆盖波形毛刺。那么示波器余晖显示模式有哪些类型呢?MSO54示波器余晖模式如何调整? 示波器余晖显示模式有哪些类型? 以下是三种不同类型的余晖显示模式: 1、数字彩色模式 在这种模式下,示波......
    版本与之前版本变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 3所示,CMSIS和STM32固件库的数据类型对比如表 5所示。这些数据类型......
    可以是有符号和无符号字、半字或字节。这些数据类型的扩展是。-h或-sh用于半字,-b或-sb用于字节,而字则没有扩展。有符号和无符号数据类型之间的区别是。 有符号的数据类型......
    方舟编译器应用于华为手机上,有哪些性能优势?; 是华为推出的首个完全自主研发的编译器平台,于2019年8月31日正式上线。这个编译器平台是华为公司专门为软件厂商研发的统一编程平台,其中......
    机器视觉算法有哪些_机器视觉需要用到什么编程语言;  机器视觉算法有哪些   机器视觉算法有很多,以下是其中一些常见的算法:   边缘检测算法:用于检测图像中的边缘,如Sobel算法、Canny算法......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>