移植NES模拟器到STM32G431 详细移植教程 CubeMX HAL库
框架
- 開發環境
- 移植步驟
- 1.新建工程
- 2.移植NES文件
- 效果展示
- 程序下載
開發環境
MUC:STM32G431RBT6
板子:藍橋杯 CT117E_M4
LCD:TFTLCD 2.4寸
注:若使用藍橋杯 CT117E_M4板子,可以直接燒錄該程序使用。
移植步驟
1.新建工程
配置LED、按鍵IO和RCC
配置時鐘為170MHz
配置一個定時器用于計算幀數
打開中斷
創建工程
復制藍橋杯官方提供的LCD驅動文件到自己的工程,并在main.h添加lcd頭文件
為了方便顯示幀數,在官方的lcd驅動文件里添加一個新函數,并在lcd.h聲明
在官方lcd初始化函數添加初始化功能,并在main初始化,同時初始化LED
在main.c定義FPS相關變量,并在main.h聲明
在MX_TIM6_Init()函數添加如下代碼,啟動TIM6,用于計算幀數
并添加定時器中斷回調函數
2.移植NES文件
文件下載鏈接:我移植的是這位大佬的工程,STM32_NES_v0.11.rar
下載好大佬的工程后,復制方框里的兩個文件夾到自己的工程路徑下
復制USER路徑下的mario.h到自己的工程路徑下
添加剛才復制的文件和路徑到工程里
修改PPU.C
此處有兩種方法。第一種直接用官方封裝好的寫入LCD RAM函數,幀數在72左右
第二種,因為是連續寫入,不需要頻繁的修改其他引腳,且取消短暫延時,幀數可達114左右
修改nes_main.h文件
原來的 #include “sys.h” 修改為 #include “main.h”
并注釋extern u8 FPS;
修改nes_main.c文件
根據自己有無led.h文件修改
本程序無led.h故刪除 #include “led.h”
刪除LED=!LED;
在NesFrameCycle()函數下添加如下代碼,用于顯示幀數回到main.h添加 #include "nes_main.h"y
在main.c文件下的main()函數添加 nes_main();
按鍵修改在6502.s
找到下面這部分代碼
對于藍橋杯板子,修改成如下即可
對于其他板子修改對應自己板子的按鍵地址就行。
或者在NesFrameCycle()函數添加按鍵掃描代碼,并定義一下啊按鍵狀態變量,key_data,如下
TOUCH_scan();函數把按鍵狀態保留到key_data
然后在6502.s聲明該變量
配置優化等級為3
效果展示
STM32G431 NES 超級瑪麗
程序下載
下載鏈接
總結
以上是生活随笔為你收集整理的移植NES模拟器到STM32G431 详细移植教程 CubeMX HAL库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android+世界地图高清版大图片,世
- 下一篇: 《全球使命》背后的技术@CGDC4