每当提到 3D 第一人称射击游戏,大家很自然就会联想到高性能独显,以及几个G甚至几十G的硬盘存储空间,那么有没有可能在 STM32F103RC 这样一块只有 256KB Flash 的小板子上保存一个大型第一人称射击游戏呢?

当我们用 USB 线把这块开发板连接到电脑上,就可以看到出现了一个只有100多KB的U盘,这就是 STM32 的片上 Flash 了。

然后可以看到U盘里有一个 90KB 的游戏。

如果我们双击它就启动了一个 STM32 上的第一人称射击游戏。

这是完整的演示视频:
如果你也有兴趣把这个游戏保存在 stm32 上,可以跟着后面的教程,或者也可以在这个项目里直接找到编译好的固件、游戏和项目源码。
链接地址:https://github.com/wuhanstudio/stm32-ufun-3d-game
1. 运行 RT-Thread
RT-Thread 在 Github 上是开源的,源码可以在这里(链接:https://github.com/rt-Thread/rt-thread/)找到,官网文档也很丰富这里就不重复了,总结一下需要的工具:
Git Bash
Keil 开发环境
stm32 开发板
RT-Thread 源码
env 工具
如果觉得从 github 上面下载 rt-thread 源码比较慢,可以先从 gitee 上面下载,然后修改项目地址。
向????滑动查看全部
1git clone https://gitee.com/rtthread/rt-thread
2cd rt-thread
3git remote rm origin
4git remote add origin https://github.com/RT-Thread/rt-thread
5git pull origin master
2. 片上 Flash 文件系统
准备好第一步里面的工具后,首先我们需要把 stm32 的片上 flash 挂载为文件系统,首先需要在 CubeMX 里使能 USB。

打开 USB 后在时钟配置里确认外部晶振和板子上的晶振是一致的,并且 USB 的时钟是 48MHz,就可以点击生成代码了。由于我们修改了时钟,需要把 board/CubeMX_Config/Src/main.c 里面的 void SystemClock_Config(void) 函数复制到 board/board.c 里面替换。
接下来修改 bsp 下 board 目录里的 Kconfig 文件。
向????滑动查看全部
1config BSP_USING_ON_CHIP_FLASH
2 bool "Enable on-chip FLASH"
3 default n
4
5config BSP_USING_USBD_FS
6 bool "Enable USBD as USB device"
7 select RT_USING_USB_DEVICE
8 d

本文介绍如何在STM32F103RC微控制器的片上Flash中实现一个90KB的第一人称射击游戏。通过运行RT-Thread操作系统,将Flash挂载为文件系统,甚至作为U盘,详细步骤包括RT-Thread的配置、Flash文件系统的建立和USB驱动的集成。项目源码可在GitHub找到。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



