0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32中数据类型

分享:

STM32 嵌入式开发中,常用的数据类型可以分为以下几类(基于C语言和STM32库的定义):


1. 标准C语言基础类型

  • 字符型
    • char:8位字符/整数(范围:-128 ~ 127 或 0 ~ 255)。
    • unsigned char:8位无符号整数(0 ~ 255),常用于字节操作。
  • 整型
    • short / int16_t:16位整数(-32768 ~ 32767)。
    • int / int32_t:32位整数(默认长度,范围:-2^31 ~ 2^31-1)。
    • unsigned int / uint32_t:32位无符号整数(0 ~ 4,294,967,295)。
    • long:通常为32位(与int相同)。
  • 布尔型
    • bool:需包含 <stdbool.h>,取值为 truefalse(底层为1或0)。

2. STM32库定义的类型

STM32标准库(如HAL库或标准外设库)中定义了以下常用类型:

  • 固定位宽整数(需包含 <stdint.h>):
    • uint8_t:8位无符号整数(等同于unsigned char)。
    • uint16_t:16位无符号整数(等同于unsigned short)。
    • uint32_t:32位无符号整数(等同于unsigned int)。
    • int8_tint16_tint32_t:对应的有符号类型。
  • 外设寄存器相关类型
    • GPIO_PinState:表示GPIO引脚状态(如 GPIO_PIN_SETGPIO_PIN_RESET)。
    • HAL_StatusTypeDef:HAL库函数返回状态(如 HAL_OKHAL_ERROR)。
  • 结构体类型(用于配置外设):
    • GPIO_InitTypeDef:GPIO初始化配置结构体。
    • UART_InitTypeDef:串口初始化配置结构体。

3. STM32硬件相关类型

  • 指针类型
    • 用于直接操作寄存器的指针(如 __IO uint32_t*)。
  • 位操作类型
    • 使用位域(Bit-field)或位掩码(如 #define GPIO_PIN_0 (0x0001U))。

4. 特殊类型

  • 枚举类型
    • 用于状态或模式选择(如 GPIO_Mode_TypeDef)。
  • 联合体(Union)
    • 用于寄存器位段的灵活访问(如 FLASH_TypeDef)。

示例代码片段

#include <stdint.h>
#include "stm32f1xx_hal.h"

uint32_t counter = 0;        // 32位无符号整数
GPIO_InitTypeDef GPIO_Config; // GPIO配置结构体
HAL_StatusTypeDef status;     // HAL函数返回状态

// 直接操作寄存器
#define MY_REGISTER (*(__IO uint32_t*)0x20000000)

注意事项

  1. 位宽一致性:在操作寄存器或硬件外设时,务必使用 uintX_t 类型确保位宽匹配。
  2. 跨平台兼容性:避免直接依赖 intlong 的默认长度,优先使用 stdint.h 的类型。
  3. 内存优化:在资源受限的嵌入式系统中,选择最小位宽的类型以节省内存。

这些类型是STM32开发的基础,合理使用能提升代码可读性、可维护性和硬件兼容性。

STM32数据类型定义的解释说明

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

2023-03-26 11:49:05

STM32数据类型定义的解释说明

u8 最大255 , u16最大65535 , 就这个意思u8 a=255 a+1=0 , u16 b=255 b+1=256

2023-01-03 15:46:59

plc数据类型怎么理解和应用

PLC(可编程逻辑控制器)是一种工业自动化设备,用于控制机械和工业过程。在PLC编程数据类型是非常重要的概念,因为它决定了程序数据的存储和处理方式。正确理解和应用PLC数据类型是编写有效、可靠

2023-12-19 11:39:27

SQL 通用数据类型

SQL 通用数据类型 数据库表的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a

2025-08-18 09:46:40

ARRAY 数据类型的变量

要求 全局数据块已打开。 操作步骤 要声明一个 ARRAY 数据类型的变量,请按以下步骤操作: 在“名称”(Name) 列,输入变量的名称。 在“数据类型”列输入“Array”数据类型。在此步骤

2023-07-06 11:08:02

定义数据类型

在运算之前我们必须首先定义出数据类型,定义出脚本支持的数据类型,这是运算的基础。 这一小节我们将定义出数据类型,在这里我们暂时定义四个数据类型:

2023-03-03 10:10:41

F型PLC数据类型与标准PLC数据类型(UDT)之间的差别在哪?

可以像使用标准 PLC 数据类型 (UDT) 那样,声明和使用 F 型 PLC 数据类型 (UDT) 。可以在安全程序以及标准用户程序中使用 F 型 PLC 数据类型 (UDT) 。

2023-08-27 09:54:26

什么是数据类型转换

常用的3种数据类型:1、Python数据类型第一种:字符串(str)。 2、Python数据类型第二种:整数(int)。 3、Python数据类型第三种:浮点数(float)。

2023-02-23 15:21:18

结构数据类型(Struct)及应用案例

Struct数据类型使用非常灵活,随时可以使用,但是相对于PLC数据类型 (UDT) 有以下缺点,所以建议需要使用Struct类型时,可以使用PLC数据类型(UDT)代替。

2022-07-27 16:10:55

Struct结构数据类型

Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struct、数组等复杂数据类型以及PLC数据类型(UDT)等。

2022-07-25 17:02:04

Redis的数据类型有哪些

Redis的数据类型有哪些?有五种常用数据类型:String、Hash、Set、List、SortedSet。以及三种特殊的数据类型:Bitmap、HyperLogLog、Geospatial

2023-10-09 10:51:05

编程语言SCLANY数据类型

ANY数据类型 在编程语言 SCL 和 STL ,如果在块参数设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递。 但是,ANY 指针不能存储有关存储器结构的任何信息。例如,ANY

2021-05-25 11:02:33

SpinalHDLBundle数据类型的转换

SpinalHDLBundle与SystemVerilog的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBits来实现。

2022-10-17 09:51:40

GaussDB 数据类型介绍

进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。  数据类型概念及特点 数据类型是一组值的集合以及定义在这个值集上的一组操作。GaussDB 数据库是由表的集合组成的,而各表的列定义了该表,每一列都属于一种数据类型,Gauss

2023-06-05 16:40:06

1.2FreeRTOS数据类型

1.2FreeRTOS数据类型2017.2.1书zzwFreeRTOS 主要自定义了以下四种数据类型:TickType_t如果用户使能了宏定义configUSE_16_BIT_TICKS,那么

wdc596933938 2020-07-22 23:27:38

Verilog的基本数据类型

本文将讨论 verilog 中常用的数据类型,包括对数据表示、线网类型、变量类型和数组,分享一下使用方法和注意事项。

2023-05-12 17:43:13

西门子博途:使用PLC数据类型 (UDT)

PLC 数据类型 (UDT) 是可自行定义且在程序可以多次使用的数据结构。 此结构可包含不同数据类型的多个元素。 声明 PLC 数据类型期间,可以定义各个元素的数据类型

2023-07-12 17:36:05

oracle的数据类型有哪些

Oracle数据库中有许多数据类型可供选择,每种数据类型都有其各自的特点和适用场景。下面是对Oracle数据库中最常用的数据类型的详尽说明,包括数值类型、字符类型、日期类型、大对象类型和其他类型

2023-12-05 16:45:16

西门子博途F型PLC数据类型与标准PLC数据类型的差别

可以像使用标准 PLC 数据类型 (UDT) 那样,声明和使用 F 型 PLC 数据类型 (UDT) 。可以在安全程序以及标准用户程序中使用 F 型 PLC 数据类型 (UDT) 。

2022-07-08 10:15:37

GaussDB数据类型转换介绍

数据类型转换在实际应用中非常常见。GaussDB 作为一款企业级分布式关系型数据库,在实际业务场景使用,也会避免不了数据类型的转换。以下是一些数据类型转换的应用场景。

2023-06-05 16:29:11

基本数据类型分享

基本数据类型 基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型,请参见文档String与WString。 1.位和位序列 2.整数数据类型 3.浮点型实数数据类型

2023-06-13 14:14:16

结构数据类型Struct介绍

Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struct、数组等复杂数据类型以及PLC数据类型(UDT)等。

2023-01-30 10:15:18

浅谈PLC定义数据类型的应用

PLC定义数据类型以下用一个例子介绍PLC定义数据类型的应用,以便进一步理解PLC定义数据类型

2023-07-24 16:07:11

Verilog基本语法之数据类型

数据类型是用来表示数字电路数据存储和传送单元

2023-06-18 10:52:33

S71500 硬件数据类型的常量

硬件数据类型:硬件数据类型由 CPU 提供。可用硬件数据类型的数目取决于 CPU。 根据硬件配置设置的模块存储特定硬件数据类型的常量。在用户程序插入用于控制或激活已组态模块的指令时,可将这些可用常量用作参数。

2023-05-16 09:24:55

type( ) 函数查询数据类型是什么

常用的3种数据类型: Python数据类型第一种:字符串(str)。 Python数据类型第二种:整数(int)。 Python数据类型第三种:浮点数(float)。

2023-02-23 14:59:36

PLC 数据类型 (UDT) 的基本知识

说明 PLC 数据类型 (UDT) 是一种复杂的用户自定义数据类型,用于声明一个变量。这种数据类型是一个由多个不同数据类型元素组成的数据结构。其中,各元素可源自其它 PLC 数据类型、ARRAY,也

2023-09-10 09:46:05

SystemC数据类型概念

引起一个事件,要使用通知函数notify( ),语法如下: event_name. notify (参数); 或 notify (参数,event_name); SystemC数据类型 作为C++

2023-11-02 15:44:43

MATLAB变量和数据类型的基本介绍

在MATLAB,变量和数据类型是非常重要的概念。

2023-07-05 09:44:34

Windows -编程-数据类型

Windows -编程-数据类型Rust 的每个值都有特定的数据类型,它告诉 Rust 指定了什么样的数据,以便它知道如何处理这些数据。我们将研究两种数据类型子集:标量和复合。诚接Windows

h1654156006.5038 2021-08-24 14:30:05

加载更多