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