4.物联网射频识别,RFID开发【智能门禁项目】

news2024/10/6 4:14:08

补充:学习路径

一。项目介绍及需求分析

1.酒店智能门禁使用场景介绍

1.客人入住

        客人在前台办理入住手续,前台管理员通过门禁管理系统为客户开一张门禁卡
        客户持卡到相应客房,用IC 卡刷卡开门
        客人过了入住时间后,卡自动失效,刷卡不能再次开门

2.酒店管理

        客房服务需要一张没有时间限制,且能打开多个房门的卡
        酒店经理需要一张没有时间限制,且能打开所有房间的卡

2.酒店智能门禁需求

        需要两个器件,客房门禁读写器需求、前台读写器分析需求。

1.客房门禁读写器需求分析
        普通客房卡:根据房间号和时间判断是否允许开锁
        客房服务卡:所在楼层所有房门允许开锁
        酒店经理卡:所有房门无条件开锁
        开锁超过一定时间,房门关闭状态下,自动上锁
        开锁后,检测到门打开又关闭后,自动上锁
        读写器的房间号(含楼层)由授权卡和普通客房卡设置
        读写器的时间由时间卡设置
        黑名单:由黑名单设置卡设置,对名单中的卡一律不响应(可选)
        低功耗的需求
2.前台读写器需求分析
        可以发出带房号和入住截至时间的普通客房卡
        可以发出酒店经理卡、客房服务卡等管理卡
        可以发出门锁时间设置卡、授权卡、黑名单设置卡等功能卡
        所有发卡信息均来自上位机

二。项目实现方案(门禁读写器)

1.硬件实现方案

        首先需要读写器(天线,对鞋芯片),需要实时时钟(RTC),需要存储数据(flash存储),需要一些响应(指示灯,蜂鸣器),需要一些差错的管理(闭门检测)。

        嵌入式MCU 选主流的通用 MCU 即可,比如 STM32F103 STM3F051 系列等,内部带 RTC , FLASH,如果考虑电池供电特点,最理想的是 STM32 的低功耗系列。
        RFID读写芯片,有很多选择,比如 NXP RC531 RC522 CLRC663 PN532 等, ST 公司的 ST25R3911B,国产的 FM17550 Si522 等,因为卡使用的是 NXP Mifare S50 ,选性价比比较高 的RC522 Si522 即可,结合课程提供的硬件,选用 RC522 ,天线使用 PCB 板载天线。
        开锁装置为驱动舵机实现,0 度上锁, 90 度开锁。
        闭门检测,使用一个到位开关即可,结合课程提供的硬件,使用使用一个按键模拟。

2.软件实现方案(方案流程图)

(1)主流程

(2)读写任务流程(对卡的读写)

(3)门锁控制任务流程(门应答卡的操作)

三。项目实现方案(前台读写器)

1.硬件实现方案

2.软件实现方案

3.前台读写器串口通信协议(通信约定)

1.通信约定

(1)波特率:115200bps

(2)数据格式:8,n,1

2.数据基本格式

帧头: PC 到读写器为 55h ,读写器应答为 AAh
长度:长度字段之后所有数据字节数
ECC 校验:前面所有字节异或和
3.PC机先发送,读写器应答
4.命令列表
块数据解析
        房间编号:6 字节 ASCII 码格式,前 2 字节为楼层号,后 4 字节为房间号,比如 3 18 号房间, “030018”,对应 ASCII 码: 303330303138h
        时间:BCD( 二进制编码的十进制 ) 码,格式: YYMMDDhhmmss ,例如 2030 5 24 15:32:00
        编码为:300524153200h
        授权卡默认密码:FFh FFh FFh FFh
        校验和:前面15 字节的异或和

4.S50卡存储规划

        存储区:第1 扇区的第 0 块,块编号: 04
        密钥使用方案:KeyA 认证,将块 7 的控制字修改成 011b KeyB 可修改, ( 实验保险起见, KeyB 仍 保持默认)
        修改密钥和存取权限
        统一密钥方案:KeyA 统一修改为一个固定密钥,如 75767778797Ah( 实验中采用的方式 )
        一卡一密方案:KeyA 统一使用 4 字节卡 UID 扩展成 6 字节与特殊 6 字节数按字节异或
        块7 控制字: 75767778797A 7F078869 FFFFFFFFFFFF

四。RC522驱动(我对驱动的了解不多,目前只能对寄存器做一些操作)

1.RC522简介

(1)MFRC522 是一款高度集成的 13.56MHz 非接触通信读写 IC
       1.支持ISO/IEC 14443 A/MIFARE NTAG
       2.典型的操作距离可达50 mm
       3.支持I2C, SPI, UART 三种接口
       4.与卡最高的传输速率可达848kbps
       5.有64 字节 FIFO 缓冲区用于收发
       6.内部灵活的中断模式
       7.硬件复位和低功耗模式
       8.有软件模式的低功耗
       9.可编程的定时器
       10.CRC协处理器
       11.2.5V到 3.3V 供电
(2)硬件结构图

2.RC522Demo板接口介绍

硬件原理图
PB15 对应SPI2_MISO
PB14 对应SPI2_MOSI
PB13 对应SPI2_SCK
PB12 对应SPI2_NSS

3.RC522的SPI接口介绍

 SPI接口:     
      1.工作在从模式
      2.最高通信速率:10Mbit/s
      3.字节序:MSB (高位在先)
      4.数据上升沿稳定,下降沿可变,上升沿采样(对应STM32 SPI 极性模式 0 ,相位模式:第一个边沿 采样)
      5.SPI读时序

4.RC522的寄存器

寄存器总结

        CommandReg 启动和停止命令的执行
        ComlEnReg, DivIEnReg 中断使能设置
        ComIrqReg , DivIrqReg 中断请求标志
        ErrorReg 错误标志,指示执行的上个命令的错误状态
        Status1Reg, Status2Reg 包含各种状态标志
        FIFODtataReg 64 字节 FIFO 缓冲区的输入和输出数据
        FIFOLevelReg 指示 FIFO 中存储的字节数
        WaterLevelReg FIFO水位寄存器
        ControlReg 控制定时器等寄存器
        BitFramingReg 面向位的帧的调节
        CollReg RF 接口上检测到的第一个位冲突的位的位置
        ModeReg 定义发送和接收的常用模式
        CRCResultReg 储存 CRC 运算结果,高 8 位和低 8 2
        TModeReg 设置定时器模式和预分频系数的高 4
        TxASKReg 发送调制设置
        TPrescalerReg 定时器预分频系数的低 8
        TReloadReg 定时器重载寄存器,有高 8 位和低 8 2
        TCounterValReg 存放定时器的当前值,有高 8 位和低 8 2
补充:对部分寄存器的介绍
(1)CommandReg寄存器
RcvOff: 模拟接收部分是否关闭, 0 不关闭, 1 关闭
PowerDown: 进入 / 退出软件掉电模式, 0 退出, 1 进入
Command: 4bit 命令字
(2)ComIEnReg寄存器
IRqInv: IRQ 引脚上的信号是否和 Status1Reg 中的 IRq 位相反
TxIEn~TimerIEn: 1 使能中断,对应的中断是否反应到 IRQ 引脚上
(3)DivlEnReg寄存器
IRQPushPull: 1 IRQ 引脚是标准 CMOS 输出, 0 IRQ 引脚开漏输出
MfinActIEn: 1 使能中断,允许 MFIN 活动中断反应到 IRQ 引脚
CRCIEn: 1 使能中断,允许 CRC 中断反应到 IRQ 引脚
(4)ComlrqReg寄存器
Set1: 写入时,设置选中的位的状态, 0 被选中的位复位, 1 被选中的位置位
TxIRq~TimerIRq: 对应的中断是否发生, 0 否, 1
(5)DivlrqReg寄存器
Set2: 写入时,设置选中的位的状态, 0 被选中的位复位, 1 被选中的位置位
MfinActIRq: 1 MFIN 是活动的
CRCIRq: 1 CalcCRC 命令运行且所有的数据已经被处理
(6)ErrorReg寄存器
WrErr: 认证时向 FIFO 中写数据,引发此错误, 1 表示出错, 0 未出错,下同
TempErr: 过热(芯片温度超过 125 ℃)报警
BufferOvfl: FIFO 溢出错
CollErr: 检测到位冲突
CRCErr: 接收数据的 CRC
ParityErr: 接收数据的奇偶校验错
ProtocolErr: 帧格式错
(7)Status1Reg寄存器
CRCOk: 1 CRC 结果为 0 ,发送和接收对 CRC 的验证,通过 ErrorReg CRCErr 位指示,这个状
态位只用于指示 CRC 运算过程,计算结果正确置 1
CRCReady: CRC 计算完成
IRq: 有被使能的中断发生,使能中断见: ComIEnReg DivIEnReg 寄存器
TRunning: 1 定时器在运行
HiAlert: 1 FIFO 缓冲区中的数据字节数大于等于 (64- 水位字节数 ) 报警
LoAlert: 1 FIFO 缓冲区中的数据字节数小于等于水位字节数报警
(8)Status2Reg寄存器
TempSensClear: 1 时,芯片温度在 125 ℃以下会自动清除过热报警 TempErr
I2CForceHS : I2C 输入过滤设置
MFCrypto1On : 指示 MIFARE Crypto1 单元开启,在认证命令成功后置位
ModemState[2:0] : 指示当前发送接收状态
(9)FIFODataReg寄存器
(10)FIFOLevelReg寄存器
FlushBuffer: 写入 1 ,清除 FIFO 中的数据
FIFOLevel[6:0]: FIFO 中数据字节数
(11)WaterLevelReg寄存器
WaterLevel[5:0]: 定义水位字节数
(12)ControlReg寄存器
TStopNow: 写入 1 ,定时器立刻停止
TStartNow: 写入 1 ,定时器立刻启动
RxLastBits[2:0]: 接收的最后 1 字节数据有效位,如果时 000b ,则整个字节有效
(13)BitFrameingReg寄存器
StartSend: 写入 1 ,开始数据发送,仅在 Transceive 命令有效
RxAlign[2:0]: 基于位防冲突帧中接收的第一位的位置
TxLastBits[2:0]: 发送最后 1 字节的位数, 000b 意味着发送所有位
(14)CollReg寄存器
ValuesAfterColl: 0 所有接收到的位在发生冲突后被清零
CollPosNotValid: 1 没有发生冲突或者发生冲突的位置超出 CollPos[4:0] 的范围
CollPos[4:0]: 第一个发生位冲突的位置。例如 00h 表示在 32 位发生位冲突, 08h 表示在第 8
发生位冲突
(15)ModeReg寄存器
MSBFirst: 1 CRC 计算时, MSB 在先
TxWaitRF: 1 仅在 RF 场产生后才发送
PolMFin: 定义 MFIN 脚有效极性, 0 低有效, 1 高有效
CRCPreset[1:0]: 定义 CRC 协处理器预置值, 00b 表示 0000h, 01b 表示 6363h, 10b 表示 A671h 11b 表示 FFFFh
(16)CRCResultReg寄存器
CRC 计算结果的高、低两个字节,仅在 Status1Reg 寄存器的 CRCReady 位置 1 时有效
(17)TModeReg寄存器
TAuto: 1 在发送完成后,定时器自动启动
TGated[1:0]: 定时器工作在何种门模式设定, 00b 不启动门模式, 01b MFIN 脚启动门模
式, 10b AUX1 脚启动门模式, 11 保留
TAutoRestart: 1 当定时器倒计时到 0 以后,自动重新按重载寄存器中的值计数; 0 定时器倒
计时到 0 后, ComIrqReg 寄存器的 TimerIRq 位置 1
TPrescaler_Hi[3:0]: 预分频值的高 4bit ,与 TPrescalerReg 寄存器中的 8bit ,组成 12bit 的预
分频值 TPreScaler 。当 DemodReg 寄存器的 TPrescalEven 位为 0 ,则 定时器的分频后频率
为: ftimer = 13.56 MHz / (2 TPreScaler+1) ,如果 TPrescalEven 位为 1 ,则 ftimer = 13.56
MHz / (2 TPreScaler+2)
(18)TxASKReg寄存器
Force100ASK: 1 强制 100% ASK 调制
(19)TPrescalerReg寄存器
(20)TReloadReg寄存器
(21)TReloadReg寄存器

5.RC522的命令

RC522主要命令介绍:

1.IDLE 命令 , MFRC522 处于空闲模式。该命令也用来终止实际正在执行的命令。
2.CALCCRC 命令 , FIFO 的内容被传输到 CRC 协处理器并执行 CRC 计算这个命令必须通过向命令寄 存器写入任何一个命令(如空闲命令)来软件清除。
3.TRANSMIT 命令 ,发送 FIFO 的内容。在发送 FIFO 的内容之前必须对所有相关的寄存器进行设 置。该命令在 FIFO 变成空后自动终止。
4.RECEIVE 命令 ,该命令在接收到的数据流结束时自动终止。
5.TRANSCEIVE 命令 ,该循环命令重复发送 FIFO 的数据,并不断接收 RF 场的数据。第一个动作是 发送,发送结束后命令变为接收数据流。
6.MFAUTENT 命令,该命令用来处理 Mifare 认证以使能到任何 Mifare 普通卡的安全通信。在命令 激活前以下数据必须被写入 FIFO : 认证命令码,块地址,秘钥,序列号。该命令在 Mifare 卡被 认证且 Status2Reg 寄存器的 MFCrypto1On 位置位时自动终止。
7.SOFTRESET 命令 ,所有寄存器都设置成复位值。命令完成后自动终止。

6.RC522的操作方法

1. 清除相关的状态位和错误标记位
2. 待发送的数据放入 FIFO
3. 如果最后 1 字节不是全部发送,设置发送位的数目
4. 启动 TRANSCEIVE 命令
5. 查询状态,等待接收结束
6. FIFO 中取出卡反馈的数据

五。RC522如何操作S50卡

1.Mifare S50卡操作回顾

        首先响应数据,之后防冲突,选卡,最后数据的传输。

补充:S50卡操作命令

2.RC522的驱动组成

  使用分层结构,用户使用的是卡操作命令接口

1.14443-A命令,MF1卡命令

2.RC522命令

3.通用寄存器读写

4.SPI驱动:收发数据      

3.RC522操作实例

1.Cubemx配置

时钟,SPI接口,打印串口     

2.寄存操作驱动分析

3.底层命令驱动分析

PcdComMF522()函数

4.应用层操作接口函数分析

PcdRequest()函数

PcdAnticoll()函数

总之:

        在keil工程中,使用公司提供的库,调用。

根据上述设定的流程图,书写代码

六。PN532驱动

1.PN532简介

1.一款基于 8051 单片机核心,高度集成的非接触式收发模块
2.它支持 6 个不同的操作模式: ( 手机既能做读卡器也能模拟卡的秘密 )
        ISO/IEC14443A/MIFARE 读 / 写器
        FeliCa 读 / 写器
        ISO/IEC 14443B 读 / 写器
        ISO/IEC14443A MIFARE卡模拟模式
        FeliCa卡模拟模式
        ISO/IEC 18092 ECMA 340点对点
3.对外支持3 种接口:
        I2C
        SPI
        HSU, (Serial High Speed UART) 高速 UART

原理图

2.PN532操作Mifare卡的正确方法

HSU交互的帧格式

1.前序, PREAMBLE 1 字节, 00h
2.开始码, START CODE 2 字节, 00h FFh
3.数据长度, LEN 1 字节 ,数据区字节数 (TFI and PD0 to PDn) ,最大 255
4.长度校验, LCS 1 字节, LEN 的校验和, [LEN + LCS] = 00h
5.帧 ID TFI 1 字节,根据消息方向取值
        D4h 表示 主机 ==>PN532
        D5h 表示 PN532 ==> 主机 DATA
6.包数据, Package Data LEN-1 字节的包数据, PD0 是命令码
7.数据校验码, DCS 1 字节, [TFI + PD0 + PD1 + … + PDn + DCS] = 00h, 尾序,POSTAMBLE 1 字节, 00h

扩展帧格式

和标准帧有区别的地方
数据区长度, LENGTH = LENM x 256 + LENL
长度校验, LCS: [LENM + LENL + LCS] = 00h

ACK帧

NAK帧

初始化流程

交互流程(刷卡时的数据交互)

PN532的命令

PN532的唤醒

        上电后,PN532 会自动进入低功耗状态,所以,发送的第一条命令,必须使用加长的数据帧头来唤醒。
SAMConfiguration
InListPassiveTarget
列出射频场中的卡 —— 询卡、防冲突、选卡,可同时操作多张
InDataExchange

七。如何驱动舵机

1.什么是舵机

        舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机是 融合了多项技术的科技结晶体,它由直流电机、减速齿轮组、传感器和控制电路组成,是一套自动控制 装置,用一个闭环反馈控制回路不断校正输出的偏差,使系统的输出保持恒定。

2.舵机驱动方式

        PWM信号的占空比来控制的,该 PWM 信号的周期位 20ms ,宽度在 0.5ms——2.5ms 之间,驱使舵机转 动角在0——180 度之间
               

3.舵机驱动代码分析

1.STM32Cubemx配置

        目标,将定时器的通道配置成PWM 输出模式,周期 20ms ,占空比可调, 0.5ms~2.5ms

2.重点代码

        启动定时器的PWM 输出
        修改占空比

八。前台读写器实现

1.实现方案回顾

2.读写器代码设计

九。门禁读写器实现

1.实现方案回顾

2.硬件需要注意的地方

3.参数区的设计

4.读写器代码设计

十。项目展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十课 贪心

文章目录 第十课 贪心lc 322.零钱兑换--中等题目描述代码展示 lc860.柠檬水找零--简单题目描述代码展示 lc455.分发饼干--简单题目描述代码展示 lc122.买卖股票的最佳时机II--中等题目描述代码展示 lc45.跳跃游戏II--中等题目描述代码展示 lc1665.完成所有任务的最少初始能量--…

WPF中样式静态、动态资源、资源字典

1、绑定静态资源后,样式不会发生改变 绑定动态资源后,资源样式发生改变,控件也会改变 2、资源字典

为什么越来越多的人转行网络安全?

为什么越来越多的人转行网络安全? 目前,我国互联网已经从前期的爆发增长进入稳定发展阶段,同时每年大量计算机相关专业的毕业生进入就业赛道,导致IT行业逐渐趋于饱和状态,甚至出现裁员现象,去年很多大厂都…

《DevOps 精要:业务视角》- 读书笔记(二)

DevOps 精要:业务视角(二) 第2章 基础2.1 精益生产2.1.1 关键事实2.1.2 挑战 2.2 敏捷2.2.1 关键事实2.2.2 挑战 第2章 基础 2.1 精益生产 2.1.1 关键事实 正如1.2节提到的,DevOps非常依赖于精益生产的原则与实践。有些人甚至相信&#xf…

软件测试(功能、工具、接口、性能、自动化、测开)详解

一、软件测试功能测试 测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。 黑盒测试常见测试用例…

【1++的Linux】之文件(一)

👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,初识文件二,文件接口 一,初识文件 文件就是文件内容属性。因此对文件的操作无非就是对文件内容的操作和对文件属性的操作。 我们访问…

张量-矩阵操作函数

tf.diag(diagonal,name None),该函数返回一个给定对角值得对角tensor。 示例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()diagonal tf.constant([2,3,4,5])with tf.Session() as sess:print(sess.run(tf.diag(diagonal))) tf.diag_part(input,na…

maven的pom.xml文件显示被删除

文章目录 1.问题情况2.问题分析3.问题解决 1.问题情况 2.问题分析 这些 pom.xml 文件被 maven 视为了忽略文件。 3.问题解决 路径:File --> Settings --> Build,Execution,Deployment --> Build Tools --> Maven --> Ignor…

Vs - Qt - 下拉窗口示例

下列代码定义了一个窗口&#xff0c;窗口采用竖直布局&#xff1a;一个按钮及一个label。按下按钮时候&#xff0c;窗口扩张&#xff0c;显示label控件。再次按下按钮时&#xff0c;窗口收缩&#xff0c;隐藏label控件。 详细代码如下&#xff1a; #include <QApplication&g…

SAP从入门到放弃系列之QM样本确定

目录 一、样本确定概述-Sample Determination1.1、样本确定的规则1.2、规则维护方式1.2.1、物料主数据的维度1.2.2、任务清单的维度1.2.2.1、采样过程-Sampling Procedure 二、采样过程维护2.1 采样过程-Sampling Procedures概述样本类型评估模式检验点 一、样本确定概述-Sampl…

开源考试系统的安全性及防护措施分析

开源考试系统是一种基于开放源代码的在线考试及评估平台&#xff0c;它提供了灵活、可定制和易于部署的解决方案来满足不同用户的需求。然而&#xff0c;开源考试系统的安全性问题一直备受关注。因为在线考试平台涉及到大量敏感数据和用户隐私&#xff0c;所以必须采取一系列的…

chrome窗口

chrome 窗口的层次&#xff1a; 父窗口类名&#xff1a;Chrome_WidgetWin_1 有两个子窗口&#xff1a; Chrome_RenderWidgetHostHWNDIntermediate D3D Window // 用于匹配 Chrome 窗口的窗口类的前缀。 onst wchar_t kChromeWindowClassPrefix[] L"Chrome_WidgetWin_…

Node-RED系列教程-26node-red操作mqtt代理节点

安装节点&#xff1a;node-red-contrib-aedes 节点图标如下&#xff1a; 流程节点如下&#xff1a; 节点配置&#xff1a;

测试工程师思维学习

一、测试工程师应具备什么思维&#xff1f; 透过现象看本质&#xff0c;拒绝“一叶障目” 01、质疑和系统思维 02、创新思维 03、全局思维 04、风险驱动和组合思维 05、用户为中心和比较思维 06、BT思维和架构扩展性思维 二、测试工程师应避免的思维 01、同化现象 02、定位效…

零基础转行网络工程师,过来人给的一些建议

最近收到好多同学的一些提问&#xff0c;零基础没经验&#xff0c;能不能转行到网络工程师&#xff1f;薪资能有多少&#xff1f;发展前景怎么样&#xff1f; 应该有不少朋友都有这个疑问&#xff0c;那么&#xff0c;今天我尽量给大家做出一个详细的解答&#xff0c;希望能有…

怎么把图片压缩小一点?4个简单的压缩办法

怎么把图片压缩小一点&#xff1f;因为图片太大而带来的不良影响可说是非常的多&#xff0c;例如因为图片体积太大导致电脑中的存储空间越来越小&#xff0c;使得电脑使用起来越来越慢&#xff1b;当我们打开一张体积非常大的图片时无法开&#xff0c;甚至一度让电脑卡死&#…

[SWPUCTF 2021 新生赛]easy_sql - 联合注入||报错注入||sqlmap

这题可以直接参考&#xff1a;[NISACTF 2022]join-us - 报错注入&无列名注入 网站标题提示&#xff0c;参数是wllm ?wllm1   得到&#xff1a;Your Login name:xxx Your Password:yyy 解法一&#xff1a;手注 1、先尝试普通注入?wllm-1union select 1,2,3--   得…

RabbitMQ 安装 示例 全面了解有这一篇就够了

目录 一、基础知识 1. 什么是RabbitMQ 2.什么是消息和队列 3.什么是消息队列 4.什么地方使用RabbitMQ 5.RabbitMQ组成概念 二、如何落地RabbitMQ 1.RabbitMQ环境安装 2.创建系统业务 三、Exchange交换机及实例分析 1.Fanout Exchange (扇形交换机) 2.Direct Exchang…

【拿完年终奖后】想要转行网络安全,一定不要错过这个时间段。

网络安全&#xff0c;作为当下互联网行业中较为热门的岗位&#xff0c;薪资可观、人才需求量大&#xff0c;作为转行必考虑。 在这里奉劝所有零基础想转行&#xff08;入门&#xff09; 网络安全的朋友们 在转行之前&#xff0c;一定要对网络安全行业做一个大概了解&#xf…

2023-10-7 看C++八股的一些困惑

1、编译器常量和运行期常量有什么不同 编译期常量和运行期常量是两种不同的常量类型&#xff0c;它们在常量的定义和使用时具有不同的特点。 编译期常量&#xff08;Compile-time Constant&#xff09;&#xff1a; 编译期常量是在编译阶段就能确定其值的常量。编译器在编译代码…