日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移植NES模拟器到STM32G431 详细移植教程 CubeMX HAL库

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移植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库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。