框架

  • 开发环境
  • 移植步骤
    • 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库相关推荐

  1. 单片机开发---ESP32S3移植NES模拟器(二)

    书接上文 <单片机开发-ESP32-S3模块上手> <单片机开发-ESP32S3移植lvgl+触摸屏> <单片机开发-ESP32S3移植NES模拟器(一)> 暖场视 ...

  2. STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  3. STM32F103C8T6基础开发教程(HAL库)—开发环境配置

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  4. STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  5. STM32F103C8T6基础开发教程(HAL库)—Keil添加注释的快捷键

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  6. 单片机开发---ESP32S3移植NES模拟器(一)

    书接上文 <单片机开发-ESP32-S3模块上手> <单片机开发-ESP32S3移植lvgl+触摸屏> 参考内容 依旧是参考韦东山老师的作品来移植的 <ESP32|爷青回 ...

  7. 单片机 STM32F103C8T6 cubeMX HAL库 从环境到开发 正点原子工程移植 freeRTOS

    文章目录 0 准备材料 1 闪烁PC13的小灯 2 正点原子工程移植 注意点以及细节 3 freeRTOS 3.1 LED KEY 串口1 的一个实验 0 准备材料 1.需要正点原子的HAL介绍书籍可 ...

  8. 移植Freemodbus到STM32(基于CubeMX,HAL库)-避坑篇

    具体Freemodbus移植到STM32步骤参考: STMC2CubeMX | STM32 HAL库移植FreeModbus详细步骤 基于STM32HAL库移植FreeModbus FreeModbu ...

  9. STM32单片机开发应用教程 (HAL库版) ---基于国信长天嵌入式竞赛实训平台(CT117E-M4)教程汇总 与第一章 硬件平台简介

    写在前面-- 作为<STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>教程汇总,第一章将介绍国信长天嵌入式竞赛实训平台(CT117E-M4) ...

  10. STM32CubeMx安装教程(HAL库)(保姆级别)

    一.打开官网 STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics 二.点击GETSoftware 三. ...

最新文章

  1. ORACLE日期加减【转】
  2. Oracle 统计信息(1)
  3. python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版
  4. 6、存储函数详解,创建,查看,修改,删除
  5. Porter Stemming Algorithm
  6. OWASP出品:Xenotix XSS漏洞测试框架及简单使用
  7. 动态加入JS及加入CSS
  8. Effective Java之返回零长度的数组或者集合,而不是null(四十三)
  9. #创建记事本程序在哪打开_微软Windows 10记事本商店版归来?系统可选,能卸载...
  10. mysql 外键和事务_Mysql (五)事务和外键
  11. python验证码 识别代码不准_谈谈Python进行验证码识别的一些想法
  12. Maven搭建webService (一) 创建服务端---使用main函数发布服务
  13. latex论文模板_国内高校LaTeX学位论文模版大全
  14. RNA-seq流程学习笔记(1)-Ubuntu系统安装SRA数据下载软件Aspera connect和SRT-Toolkit
  15. 分享2个ICON资源链接
  16. c语言非递归方式建立二叉链表,非递归算法遍历二叉树,改成用链表的怎么破?链表不熟智商拙计...
  17. 中国数字商业核心产业链分布
  18. xposedhook部分记录
  19. 平淡生活:过年的一点感慨
  20. SAP选择屏幕开发(一)

热门文章

  1. js高级第三天(原型链及继承)
  2. java同步关键字_线程同步关键字之 synchronized
  3. 第一课 程小奔之晃一晃
  4. 好用的三维绘图软件CREO学习标注尺寸
  5. 《金山词霸2009 牛津版》插件工具加载
  6. html转化pug,pug转化html,sass转化scss
  7. 域名转入需要经过“命名审核”状态
  8. 【谷粒商城】阿里云oss文件上传(P61)
  9. Ruby 之Gem kaminari 分页
  10. CE游戏修改器制作游戏修改器教程