尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于STM32的智能停车场毕业设计:从硬件选型到软件联调全解析

基于STM32的智能停车场毕业设计:从硬件选型到软件联调全解析 简介本资源是一套完整的基于STM32F10x系列单片机的智能停车场控制系统毕业设计项目面向电子信息、自动化、嵌入式相关专业本科生适用于课程设计、期末大作业及高分毕业设计实践。系统实现车位检测、LED状态指示、LCD实时显示、按键手动控制及串口通信等核心功能代码结构清晰模块化程度高含标准CMSIS内核支持、外设驱动GPIO/EXTI/USART/LCD、主控逻辑与中断服务程序便于理解嵌入式系统软硬件协同开发全流程。压缩包共69个文件含30个头文件.h定义接口与寄存器27个C源文件.c实现各功能模块另有工程配置文件.uvprojx/.uvoptx、链接映射.map、启动脚本.s、调试配置.ini及说明文档.md/.txt总大小仅311KB轻量易部署。已有179人学习下载所有源码经本地Keil MDK编译验证可直接运行评审得分98分配套文档详述设计原理、电路说明、测试方法与调试要点是入门STM32嵌入式开发与智能硬件项目的优质实操范例。1. 项目概述一个高完成度的毕业设计意味着什么又到了一年一度的毕业季对于电子信息、自动化、计算机相关专业的同学来说毕业设计是大学四年知识与技能的一次总检阅。一个“高分毕业设计项目”的标签背后代表的绝不仅仅是一堆代码和文档的堆砌而是一个从问题定义、方案设计、硬件选型、软件实现到系统联调、文档撰写的完整工程闭环。今天我想以一个经典的“基于STM32单片机的智能停车场管理系统”为例拆解一下一个优秀的工科毕业设计应该包含哪些核心要素以及如何从零开始构建它。这个项目之所以经典是因为它完美融合了嵌入式系统开发的核心技能微控制器编程、传感器应用、通信协议、人机交互以及上位机软件设计具有极高的教学价值和展示度。当你拿到“智能停车场设计”这个题目时首先需要明确它要解决的核心痛点传统停车场存在空车位寻找困难、人工收费效率低、车辆进出记录易出错、数据统计不便等问题。而一个智能化的解决方案应当能够自动检测车位状态、引导车辆快速停放、实现无人值守的计费与支付、并管理车辆进出记录。基于STM32来实现意味着你需要选择一个合适的STM32系列芯片作为主控围绕它搭建包括车位检测、车辆识别、道闸控制、费用计算、数据显示等在内的完整硬件系统并编写相应的嵌入式软件。最终呈现的“全部资料”应该是一个可以让评审老师或后续开发者清晰理解你设计思路、并能亲手复现或验证的完整知识包。2. 项目整体设计与核心思路拆解2.1 系统架构与模块划分一个结构清晰的系统是成功的一半。对于智能停车场项目我们通常采用分层、模块化的设计思想。整个系统可以划分为以下几个核心模块主控核心模块以STM32单片机为大脑。这里有一个关键选型是选择STM32F1系列的经典款如STM32F103C8T6还是性能更强的F4系列对于毕业设计我强烈推荐STM32F103系列。原因有三其一资源完全够用它拥有足够的GPIO、定时器、ADC和通信接口USART、SPI、I2C其二社区资源极其丰富任何问题几乎都能找到解决方案其三成本低廉开发板如正点原子、野火性价比高学习资料唾手可得。这能让你把精力集中在系统逻辑上而非纠结于复杂的底层驱动。车辆检测与车位管理模块这是实现“智能”的基础。常见方案有地磁传感器埋于车位下方检测车辆金属物体引起的磁场变化。优点是安装隐蔽、寿命长但成本较高且调试复杂需要标定。红外对射传感器在车位入口两侧安装车辆驶入阻断光束即判定为占用。成本低原理简单但易受环境光干扰且需要精准对位。超声波传感器安装在车位上方测量到车顶的距离。成本适中安装方便是我在指导毕业设计时最推荐的方案。例如使用HC-SR04模块虽然精度不是最高但对于“有车/无车”的二元判断完全足够且程序驱动有大量成熟代码可参考。车辆身份识别模块用于区分车辆实现自动扣费或权限管理。主流方案有RFID射频识别每辆车配一张RFID卡无源在入口读卡器刷卡。这是最经济、最稳定的方案非常适合毕业设计。可以选择MFRC522芯片模块通过SPI接口与STM32通信技术非常成熟。车牌识别通过摄像头抓拍上位机进行图像识别。这属于高阶玩法涉及OpenCV、机器学习虽然炫酷但会极大增加项目复杂度容易导致工期失控除非你有很强的软件和算法背景否则不建议在本科毕设中作为核心。执行机构与控制模块道闸控制通过STM32的GPIO口控制继电器模块再由继电器驱动直流电机实现道闸的升起和降落。这里有一个至关重要的安全细节必须加入车辆检测如地感线圈或红外来判断道闸下是否有车防止“砸车”。在软件上要加入延时和状态互锁逻辑。LED显示屏用于显示空车位数量、欢迎信息或费用。可以使用简单的点阵屏或者更易驱动的OLED屏如0.96寸SSD1306I2C接口来显示关键信息。语音提示模块可选。通过SYN6288等语音合成芯片在车辆进出时进行播报增加系统友好度。数据通信与上位机模块STM32需要将车位状态、收费记录等数据上报给一个“管理中心”。常用通信方式有ESP8266/ESP32 WiFi模块让STM32接入局域网通过TCP/IP协议与上位机软件通信。这是目前最主流、也最能体现项目水准的方式。HC-05/06蓝牙模块与手机APP或附近的电脑通信适合小范围演示。SIM800C GSM模块通过短信或GPRS传输数据适用于无网络覆盖的场地但会增加持续运营成本。 上位机软件可以使用C# WinForm、Java Swing、Python PyQt甚至LabVIEW来开发提供一个图形界面来实时监控停车场状态、管理收费规则和查询历史记录。2.2 方案选型背后的考量与权衡为什么选择“STM32超声波RFIDWiFi上位机”这个组合作为推荐方案这背后是一系列的工程权衡成本与实现难度平衡STM32F103开发板约30元超声波模块10元RFID模块20元ESP8266模块10元加上一些传感器和配件总硬件成本可以控制在百元以内完全符合学生项目的预算。同时每个模块都有海量的中文教程和开源代码极大降低了学习门槛和调试难度。功能完整性与展示性该方案覆盖了感知超声波测距、识别RFID、控制道闸、通信WiFi、交互显示屏/上位机等物联网核心环节能够完整演示一个智能系统的业务流程足够支撑一篇内容充实的毕业论文。可扩展性此架构是模块化的。如果你想增加难度可以轻易地将超声波换成地磁传感器将RFID升级为车牌识别或者将WiFi通信改为4G Cat.1。这为你在答辩时回答“如何改进系统”提供了清晰的思路。注意在正式动手前务必用Visio、Draw.io或Even思维导图工具画出系统框图。这张图应该清晰地展示STM32与各个外设模块的连接关系如USART1接WiFiI2C1接OLEDSPI1接RFID几个GPIO接超声波Trig/Echo等。这不仅是文档的重要组成部分更是你梳理思路、避免硬件冲突的关键步骤。3. 核心硬件电路设计与连接要点3.1 STM32最小系统与电源设计任何嵌入式系统的基石都是稳定可靠的电源。STM32F103的核心电压是3.3V而很多模块如继电器、电机驱动可能需要5V甚至12V供电。因此你的电源电路必须能提供多路稳压输出。一个典型的方案是采用一个12V/2A的直流电源适配器作为总输入。一路通过LM2596等DC-DC降压模块得到稳定的5V为继电器、ESP8266、RFID模块供电另一路通过AMS1117-3.3线性稳压芯片将5V转为3.3V为STM32核心板、OLED屏等供电。务必在每路电源的输入输出端并联一个100uF的电解电容和一个0.1uF的瓷片电容以滤除低频和高频噪声这是保证系统稳定运行、防止单片机频繁复位的关键。STM32最小系统包括复位电路10K上拉电阻0.1uF电容到地、晶振电路8MHz主晶振32.768KHz RTC晶振并各自配22pF负载电容、启动模式选择电路BOOT0/BOOT1引脚通过跳线帽选择以及SWD下载调试接口。对于毕业设计我建议直接购买一个集成了所有这些电路的最小系统板这比你自己从零画PCB焊接要可靠高效得多。3.2 传感器与执行器接口电路详解超声波模块HC-SR04接口该模块有4个引脚VCC(5V)、GND、Trig(触发)、Echo(回响)。Trig接STM32的一个GPIO配置为推挽输出用于发送至少10us的高电平脉冲触发测距。Echo接STM32的另一个GPIO配置为浮空输入或上拉输入用于检测高电平脉冲的宽度。关键点在于Echo引脚的回响信号是5V电平而STM32的GPIO耐受电压是3.3V。直接连接有烧毁风险必须进行电平转换。最简单的办法是使用一个由两个电阻如1K和2K组成的分压电路将Echo脚的电压分压至约3.3V后再接入STM32。RFID模块MFRC522接口通常通过SPI通信。连接时注意模块的VCC接5VRST引脚可以接一个普通GPIO控制复位。SPI的四个信号线SCK, MOSI, MISO, NSS分别接到STM32的SPI1或SPI2的对应引脚上。务必查阅你所使用的STM32型号的引脚复用功能表确保你选择的引脚确实支持SPI功能而不是随便找几个IO口。继电器控制道闸电路STM32的GPIO3.3V驱动能力很弱无法直接驱动继电器线圈。需要用一个三极管如S8050或MOS管作为开关。电路连接为GPIO - 1K限流电阻 - 三极管基极(B)。三极管发射极(E)接地集电极(C)接继电器线圈一端线圈另一端接5V。继电器线圈两端必须反向并联一个续流二极管如1N4148阴极接电源正阳极接三极管集电极用于吸收继电器断开时产生的反向电动势保护三极管不被击穿。继电器的常开触点则串联在道闸电机的供电回路中。ESP8266 WiFi模块接口最常用的连接方式是使用串口USART。将ESP8266的TX接STM32的RXRX接STM32的TX并共地。ESP8266的VCC接3.3V注意有些老版本模块需5V请仔细查阅数据手册。另一个关键点是ESP8266的启动模式需要将CH_PD或EN和GPIO0引脚通过上拉电阻接到3.3V以确保模块以正常固件运行模式启动。通信前STM32需要先通过串口发送AT指令集对模块进行配置如连接WiFi、设置TCP客户端等。4. 嵌入式软件设计与代码架构解析4.1 开发环境搭建与工程管理首先放弃那些过时的Keil MDK注册破解教程吧。对于学生我强烈推荐使用STM32CubeIDE。它是ST官方推出的免费集成开发环境基于Eclipse和GCC集成了STM32CubeMX图形化配置工具。你可以在一款软件里完成引脚配置、时钟树设置、外设初始化生成HAL库代码、编写代码、编译和调试。新建工程时通过CubeMX直观地配置每一个你用到的外设将用于超声波Trig的引脚设为GPIO_OutputEcho引脚设为GPIO_Input配置一个定时器如TIM2用于精确测量Echo高电平时间配置SPI1用于RFID配置USART1用于连接ESP8266并开启串口中断配置I2C1用于OLED。时钟树建议直接使用系统推荐的最高频率对于F103通常是72MHz。生成代码后你会得到一个结构清晰的工程外设初始化代码都已生成你只需要在main.c和对应的stm32f1xx_it.c中断服务函数文件中填充业务逻辑。实操心得在CubeMX中为每个你配置的GPIO起一个有意义的“User Label”比如“ULTRASONIC_TRIG”、“OLED_SCL”。这样生成的代码中引脚会用你定义的宏来表示极大增强了代码的可读性避免了后期调试时对着原理图数引脚号的痛苦。4.2 多任务调度与状态机设计智能停车场系统是一个典型的实时多任务系统需要同时监测多个车位超声波传感器、监听RFID读卡事件、处理串口通信、更新显示等。在STM32上我们有几种处理方式超级循环Super Loop 中断这是最基础也最常用的模式。在主函数的while(1)循环中按顺序调用各个任务的处理函数。而将实时性要求高的操作放在中断里比如超声波回响信号上升沿/下降沿触发的外部中断或者串口接收中断。缺点如果某个任务函数执行时间过长会阻塞其他任务影响系统实时性。基于SysTick的系统时基利用STM32的SysTick定时器中断产生一个固定的时间节拍比如1ms。在中断服务函数里设置一些标志位然后在主循环中根据这些标志位来执行对应的任务。这可以实现简单的分时操作。// 在SysTick中断中 void SysTick_Handler(void) { static uint16_t tick 0; if (tick 1000) { // 每1000ms即1秒 tick 0; g_flag_1s 1; // 设置1秒标志位 } } // 在主循环中 while(1) { if (g_flag_1s) { g_flag_1s 0; update_display(); // 每秒更新一次显示 send_data_to_server(); // 每秒上报一次数据 } // ... 其他任务 }状态机Finite State Machine, FSM对于道闸控制、车辆进出流程这类有明确步骤的业务状态机是绝佳的模型。例如道闸的状态可以是“关闭闲置”、“正在升起”、“升起保持”、“正在降落”、“降落保持”。任何事件如刷卡有效、车辆离开地感线圈都只是触发状态间的转移而不是一堆复杂的if-else判断。typedef enum { GATE_IDLE_CLOSED, GATE_OPENING, GATE_OPEN, GATE_CLOSING, GATE_CLOSED } GateState_t; GateState_t gateState GATE_IDLE_CLOSED; void Gate_Process(GateEvent_t event) { switch(gateState) { case GATE_IDLE_CLOSED: if (event EVENT_CARD_VALID) { start_motor_open(); gateState GATE_OPENING; } break; case GATE_OPENING: if (event EVENT_FULLY_OPEN) { stop_motor(); start_timer(5000); // 保持开启5秒 gateState GATE_OPEN; } break; case GATE_OPEN: if (event EVENT_TIMER_OUT || event EVENT_CAR_PASSED) { start_motor_close(); gateState GATE_CLOSING; } break; // ... 其他状态处理 } }强烈建议在毕业设计中采用“超级循环状态机”的模式。它结构清晰易于调试和扩展能很好地体现你的编程设计能力。4.3 关键功能模块代码实现要点超声波测距与车位判断 测距原理声速在空气中约340m/s。距离 (高电平时间 * 声速) / 2。 实现时在Trig引脚发出10us高脉冲后启动一个定时器如TIM2并清零。将Echo引脚配置为上升沿和下降沿均触发的外部中断。在上升沿中断里清除定时器计数器并开始计数在下降沿中断里读取定时器计数器的值计算出时间进而算出距离。为了避免误触发和噪声干扰需要加入软件滤波。例如连续测量5次去掉最大最小值后取平均并且只有当测得的距离持续一段时间如200ms小于阈值如50cm时才判定为有车。判定为有车后需要设置一个“锁定”状态防止车辆轻微晃动导致状态频繁跳变直到距离持续大于阈值一段时间后才判定为无车。RFID卡号读取与验证 使用MFRC522库函数其流程通常是寻卡 - 防冲撞 - 选卡 - 认证 - 读/写。对于停车场我们一般只读取卡的UID唯一标识符。将读取到的UID通常是一个4字节或7字节的数据与存储在STM32 Flash或外部EEPROM中的授权卡列表进行比对。注意UID比对建议使用memcmp函数而不是简单的数值比较因为UID是字节数组。为了提高安全性可以设计一个简单的双向认证流程或者使用扇区密钥进行认证后再读取特定块的数据但这会稍微增加复杂度。ESP8266 WiFi通信与数据协议 这是连接“端”与“云”的桥梁。首先STM32需要通过串口发送AT指令初始化ESP8266ATCWMODE1设置为Station模式-ATCWJAPSSID,password连接WiFi-ATCIPMUX0单连接模式-ATCIPSTARTTCP,server_ip,server_port连接上位机服务器。 通信协议需要自己定义。一个简单实用的应用层协议可以这样设计[帧头][数据长度][命令字][数据内容][校验和][帧尾] 例如: 0xAA 0x55 [Len] [CMD] [Data...] [Checksum] 0x0D 0x0A命令字(CMD)可以定义0x01为上报车位状态0x02为上报刷卡记录0x03为接收服务器下发的费率等。数据内容(Data)对于上报车位状态可以包含车位编号1字节和状态0空/1占用。对于刷卡记录包含卡号4字节、时间戳4字节、入口/出口标志1字节。校验和(Checksum)通常将帧头之后、校验和之前的所有字节相加取低8位。用于保证数据传输的完整性。 STM32端需要编写一个健壮的串口数据解析状态机来应对可能出现的粘包、断包问题。5. 上位机监控软件设计与数据管理5.1 开发语言与框架选择上位机软件的目标是提供一个图形化界面实时显示停车场地图用不同颜色表示车位占用状态、记录车辆进出流水、计算停车费用并生成统计报表。对于学生项目我推荐以下两种方案Python PyQt5/TkinterPython语法简单库丰富。使用PyQt5可以快速构建出专业的桌面界面。你可以用socket库创建TCP服务器接收STM32上传的数据。用SQLite数据库存储记录用matplotlib或pyqtgraph绘制统计图表。优点是开发效率极高易于实现复杂功能。C# WinForm如果你有C语言基础C#上手也很快。WinForm拖拽式设计界面非常直观。使用System.Net.Sockets命名空间处理网络通信使用内置的System.Data.SQLite或Microsoft.Data.Sqlite操作数据库。.NET Framework提供了强大的图表控件如MSChart。优点是程序运行效率高生成的exe文件便于在Windows系统上部署演示。5.2 核心功能实现逻辑TCP服务器搭建上位机需要开启一个TCP服务端监听特定端口如8080。当STM32作为TCP客户端连接上来后服务器会维护这个连接。需要开启一个独立的线程来循环接收数据避免阻塞UI主线程。协议解析与数据更新接收到来自STM32的原始字节流后调用与STM32端约定好的协议解析函数。解析成功后根据“命令字”更新相应的数据结构。例如收到车位状态更新就更新内存中对应车位对象的“是否占用”属性并立即触发UI界面的重绘改变对应车位图形的颜色。数据库设计至少需要两张表。parking_record表记录每一次进出。字段包括ID自增主键、card_id卡号、entry_time入场时间、exit_time出场时间初始为NULL、fee费用出场时计算、paid是否支付。parking_space表记录车位信息。字段包括space_id车位编号、is_occupied是否占用、last_update最后状态更新时间。 使用ORM框架如Python的SQLAlchemy或C#的Entity Framework Core可以简化数据库操作。计费算法在exit_time被填入时触发计费。算法可以很简单如停车时长 出场时间 - 入场时间费用 floor(停车时长/小时) * 每小时费率 如果余数15分钟则再加一小时费用。也可以设计分时段费率、首小时免费等复杂规则。关键点时间计算要使用编程语言的高精度时间类型如Python的datetime C#的DateTime并处理好时区问题。UI界面设计主界面可以是一个网格每个网格代表一个车位用绿色矩形表示空闲红色表示占用。当鼠标悬停时可以显示该车位的编号和状态持续时间。侧边栏显示当前总车位和空车位数量。另一个标签页以表格形式展示进出记录并提供按时间、卡号查询的功能。还可以增加一个“系统设置”页用于配置服务器IP、端口、费率等参数。6. 系统集成、调试与问题排查实录6.1 分模块调试与联调策略不要试图一次性把整个系统连接起来调试。务必遵循“分而治之”的原则最小系统测试先确保STM32能正常下载程序、运行最简单的LED闪烁程序。模块独立测试超声波单独连接一个超声波模块到STM32编写测试代码在OLED屏或通过串口打印出测距值用手在传感器前移动观察数值变化是否连续、合理。RFID单独测试读卡模块刷卡后能在串口助手中看到正确的卡号输出。ESP8266通过USB转TTL模块直接在电脑上用串口助手如XCOM、SSCOM发送AT指令测试其能否成功连接WiFi和服务器。这一步能排除网络环境问题。继电器/道闸编写代码控制一个GPIO口高低电平变化用万用表测量继电器是否吸合/断开或者直接观察道闸电机是否动作。上位机先编写一个简单的TCP服务器测试程序能监听端口并打印接收到的任何数据。再用网络调试助手模拟STM32发送数据包测试上位机的协议解析是否正确。两两联调将两个关联模块连接测试。例如将超声波和OLED连接实现实时距离显示将RFID和继电器连接实现刷卡开闸。系统总装与联调当所有模块都独立工作正常后再将它们全部接入系统。此时出现的问题多半是模块间资源冲突如中断优先级、定时器冲突或逻辑时序问题。6.2 常见问题与排查技巧在多年的项目指导中我总结了一些学生最容易踩的坑问题现象可能原因排查思路与解决方案STM32程序下载失败1. BOOT引脚模式不对。2. 复位电路问题。3. SWD接口被复用。1. 检查BOOT0/BOOT1跳线帽下载时BOOT00BOOT1x。2. 测量NRST引脚电压正常应为高电平3.3V按下复位键应变为低电平。3. 检查CubeMX配置确保用于SWD的PA13/SWDIO和PA14/SWCLK没有被配置为其他功能如GPIO_Output。超声波测距值固定不变或异常大1. Echo引脚电平转换电路错误。2. 定时器配置或中断处理有误。3. 传感器硬件故障。1. 用示波器或逻辑分析仪观察Trig和Echo引脚波形。Trig应有10us脉冲Echo应有高电平回波。若无回波检查分压电路。2. 检查定时器的时钟源、预分频、计数模式是否设置正确。确保在Echo上升沿中断中清零并启动定时器。3. 更换一个传感器试试。RFID读卡无反应1. SPI引脚接错或模式配置错误。2. 天线未连接或损坏。3. 卡片类型不支持。1. 用逻辑分析仪抓取SPI波形看是否有数据交换。检查CubeMX中SPI的CPOL和CPHA设置通常MFRC522为Mode 0: CPOL0, CPHA0。2. 确保天线线圈焊接牢固没有短路或断路。3. MFRC522主要支持MIFARE Classic系列卡片如S50。确认你使用的是这类卡。ESP8266无法连接WiFi或服务器1. AT指令格式错误或响应超时。2. WiFi密码错误或信号弱。3. 服务器IP、端口错误或防火墙阻止。1. 在STM32程序中每发一条AT指令后务必等待并解析模块返回的“OK”或“ERROR”。指令结尾是“\r\n”。2. 先用手机确认WiFi可用。尝试将模块靠近路由器。3. 在电脑上关闭防火墙或用网络调试工具在本机创建TCP服务器测试。确保STM32发送的IP和端口号正确。上位机收不到数据或数据乱码1. 网络未连通。2. 协议解析错位粘包/断包。3. 字节序问题。1. 在STM32端通过串口打印出即将发送的原始字节数组与上位机收到的对比。2. 在协议中增加“帧头”和“帧尾”并在解析函数中严格匹配。对于变长数据一定要用“数据长度”字段来界定一帧的结束。3. 对于多字节数据如int型的时间戳STM32小端模式和上位机可能为大端的字节序可能不同需要进行转换htonl,ntohl函数或手动转换。系统运行一段时间后死机1. 堆栈溢出。2. 中断服务函数执行时间过长。3. 看门狗未喂狗。1. 在CubeMX中适当增加堆栈大小Startup文件或.ld链接脚本。避免在函数内定义过大的局部数组。2. 中断里只做标记复杂处理放到主循环。检查是否有中断嵌套或优先级配置不当导致死锁。3. 如果开启了独立看门狗IWDG或窗口看门狗WWDG必须在主循环或定时中断中定期“喂狗”。6.3 答辩与文档准备心得一个高分项目除了实物演示清晰的文档和流畅的答辩同样重要。毕业设计论文不要把它写成实验报告。建议结构为引言背景意义、现状分析- 系统总体设计方案对比、框图- 硬件设计电路原理图、器件选型分析- 软件设计程序流程图、关键代码分析、通信协议定义- 系统测试分模块测试数据、整体功能测试截图- 总结与展望。硬件原理图请使用专业软件绘制如Altium Designer, KiCad 至少用Visio画框图截图要清晰。代码部分只贴关键算法片段并加以注释。演示文稿PPT控制在15页以内。首页标题、个人信息第二页提纲第三页直接亮出你的系统实物图或整体框图然后用“问题-解决方案”的思路依次介绍各个模块的设计与实现每页讲清楚一个点最后是功能演示视频或现场演示、总结。避免大段文字多用图表和实物照片。现场演示提前反复演练确保演示过程一气呵成。准备一个“演示脚本”先介绍系统功能然后模拟一辆车用卡片代替入场刷卡-道闸升起-上位机显示车位占用并记录接着模拟车辆出场再次刷卡-计费-道闸升起-上位机更新状态并生成记录。准备一个Plan B比如如果网络断了可以展示本地存储和显示功能。从容地回答老师可能提出的问题比如“为什么选超声波不选地磁”、“你的计费算法是如何实现的”、“如果两辆车同时刷卡怎么办”可以回答通过状态机互锁或增加排队机制来解决。最后把所有的资料整理好完整的源代码工程包含CubeMX的.ioc配置文件、原理图、PCB文件如果有、元器件清单、论文终稿、答辩PPT、演示视频。打包成一个清晰的文件夹这就是你交给老师的“全部资料”也是你大学阶段一份沉甸甸的、可以写在简历里的项目成果。这个过程固然辛苦但当你看到自己设计的系统稳定运行并清晰地向他人阐述其工作原理时那种成就感是无与伦比的。本文还有配套的精品资源点击获取
返回列表