# 消费交易 **Repository Path**: hidden-moon1/consumption-transactions ## Basic Information - **Project Name**: 消费交易 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-19 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 STM32L431 的 RFID 刷卡消费系统(教师版) 物联网实训项目:STM32L431VCTx + MFRC522 + 240×320 TFT,实现 Mifare S50 卡的 **扣费 / 充值 / 卡片初始化**,并在原工程基础上扩展了**挂失黑名单、限额保护、 防重复刷卡、超时复位、交易流水、统计报表、片内 Flash 掉电保存**等功能。 ## 硬件平台 | 项目 | 参数 | |---|---| | 主控 | STM32L431VCTx(Cortex-M4,80MHz,256KB Flash / 64KB RAM) | | 读卡 | MFRC522(SPI1,CS=PA15,RST=PA0),支持 ISO14443A / Mifare S50 | | 显示 | 240×320 TFT(ILI9341,SPI1,CS=PE9 / DC=PE11 / RST=PE10 / BL=PE12) | | 按键 | KEY1~KEY4 = PD5 / PD4 / PD3 / PD2 | | 提示 | 蜂鸣器 PE8,LED1~LED4 = PA4~PA7 | | 串口 | USART2(PA2/PA3,115200 8N1),`printf` 重定向 | ## 目录结构 ``` ZHIoT_RFID_ Consume - 教师版/ ├─ Src/ 应用代码(main.c / handle.c / gpio.c / spi.c / usart.c …) ├─ Inc/ 头文件与 HAL 配置 ├─ Hardware/ │ ├─ LCD/ 屏幕驱动 │ ├─ GUI/ 图形库(ASCII + 汉字) │ ├─ RC522/ MFRC522 驱动 │ ├─ KEY/ 按键状态机 │ └─ EXT/ ★ 拓展功能层(本次新增) ├─ Drivers/ STM32L4 HAL + CMSIS └─ MDK-ARM/ Keil 工程(ZHIoT_RFID_Consume.uvprojx) ``` ## 按键说明 | 按键 | 短按 | 长按(≥1.2 秒) | |---|---|---| | K1 | 扣费 1 元 | 交易流水页 | | K2 | 扣费 5 元 | 挂失 / 解挂当前卡 | | K3 | 充值 100 元 | 统计信息页 | | K4 | 初始化 RFID 卡(余额 10 元) | 立即保存到 Flash | > 卡放到感应区后,原 `RC522_Handle()` 会自动读块并显示"当前金额 = X 元"。 ## 拓展功能层(Hardware/EXT) - **零侵入接入**:原有代码逻辑未改动,仅在 `main.c` 追加 3 行,通过接管 `RCC522_Work_Mode` 令牌在交易前插入业务规则; - **掉电保存**:片内 Flash 页 126/127 双页乒乓 + CRC32,保存 32 条流水、统计与黑名单; - **安全规则**:挂失卡拦截、单笔限额 200 元、余额上限 9999 元、3 秒重复刷卡保护; - **超时复位**:按键后 15 秒未刷卡自动取消,信息页 8 秒自动返回。 关闭拓展层:把 `Hardware/EXT/app_ext.h` 中的 `APP_EXT_ENABLE` 改为 `0`。 ## 编译 1. 安装 Keil MDK5 + STM32L4xx 器件包; 2. 打开 `ZHIoT_RFID_ Consume - 教师版/MDK-ARM/ZHIoT_RFID_Consume.uvprojx`; 3. Build(F7),下载到板子即可。 当前编译结果:`Code=23416 RO-data=11520 RW-data=180 ZI-data=3524`,0 Error / 0 Warning。 ## 文档 - [拓展功能说明](ZHIoT_RFID_ Consume - 教师版/拓展功能说明.md):现有功能分析、代码审查发现的问题、 拓展功能设计、接入方式与上机测试清单。 ## 许可 教学用途。`Drivers/` 下为 ST 官方 HAL 库,版权归 STMicroelectronics。