求助 关于stm32制作nes游戏机在STM32上移植的问题

还没有帐号? 赶紧
用户版块帖子
103移植ARM官方DSP库失败求助各位大哥
在线时间11小时
铜币12威望1贡献值0银元0
移植时,添加#include &arm_math.h&出现类似错误.\ARM_DSP_Lib\Include\arm_math.h(1048): error:&&#757: variable &q31_t& is not a type name宏定义:STM32F10X_HD,USE_STDPERIPH_DRIVER,ARM_MATH_CM3求助哪里出问题了
在线时间17423小时
铜币13001威望2103贡献值0银元0
头文件的路径包含了没有。在opotion-&C/C++里面
开启闭关修炼模式,补充查克拉
在线时间11小时
铜币12威望1贡献值0银元0
头文件包含了
在线时间11小时
铜币12威望1贡献值0银元0
main.c中头文件#include&arm_math.c&注释掉工程就能编译通过
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
:头文件的路径包含了没有。在opotion-&C/C++里面 头文件路径都包含了main.c中头文件#include&arm_math.c&注释掉工程就能编译通过
在线时间17423小时
铜币13001威望2103贡献值0银元0
确定你添加的是#include&arm_math.c&还是#include&arm_math.h&
开启闭关修炼模式,补充查克拉
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
:确定你添加的是#include&arm_math.c&还是#include&arm_math.h&&( 16:03)&我写错了,是.h
在线时间11小时
铜币12威望1贡献值0银元0
回 zsc72991 的帖子
:我写错了,是.h&( 16:20)&大哥,你那里有103移植这个库的代码吗?借鉴一下,初步感觉是库版本的问题吧,我大概对了一下,我用的那个core_cm3.h和从官方下载的那个DSP库里的那个core_cm3.h里面不一样
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
:头文件的路径包含了没有。在opotion-&C/C++里面&( 15:36)&包含的是#include &arm_math.h&,大哥,你那里有103移植这个库的代码吗?借鉴一下,初步感觉是库版本的问题吧,我大概对了一下,我用的那个core_cm3.h和从官方下载的那个DSP库里的那个core_cm3.h里面不一样
在线时间17423小时
铜币13001威望2103贡献值0银元0
有的,这个帖子里面的就是,不过你要回复下帖子就可以下载了。这个是论坛里面仅存的两个需要回复下载的帖子之一,希望能够理解。F103的。
开启闭关修炼模式,补充查克拉
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
:有的,这个帖子里面的就是,不过你要回复下帖子就可以下载了。这个是论坛里面仅存的两个需要回复下载的帖子之一,希望能够理解。/read.php?tid=2408F103的。 ( 23:03) 大哥,你们的这个工程我编译了,还是通不过,说没有arm_math.h这个头文件,我在这个工程文件夹下,确实找不到这个头文件,我把我自己从官网上下载的arm_math.h加进去,还是有错,提示的错误和我自己移植的是一样的错误啊,怎么办,大哥能把你编译通过的工程发我邮箱里一份吗?非常感谢。
在线时间17423小时
铜币13001威望2103贡献值0银元0
你用的那个版本编译的,我用MDK4.54,没问题啊。=1200) window.open('/attachment/Fid_2/2_58_a3ae84db5bf8cf9.png?13');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >
开启闭关修炼模式,补充查克拉
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
:你用的那个版本编译的,我用MDK4.54,没问题啊。[图片] 大哥,我用的4.10版本的编译器,编译你们的工程=1200) window.open('/attachment/Fid_2/2_7fac790d.png?23');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >工程文件夹里没有arm_math.h,从论坛上下载的,你们的工程不全啊,缺少arm_math.h。。我把我自己下载的arm_math.h添加进去就是这种错误=1200) window.open('/attachment/Fid_2/2_55d1a59e.png?29');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >,我又装了4.7版本的编译器,还是一样的错误,没招了,难道只有装4.54的才可以吗????
本帖提到的人:
在线时间17423小时
铜币13001威望2103贡献值0银元0
回 zsc72991 的帖子
:大哥,我用的4.10版本的编译器,编译你们的工程[图片]工程文件夹里没有arm_math.h,从论坛上下载的,你们的工程不全啊,缺少arm_math.h。。我把我自己下载的arm_math.h添加进去就是这种错误[图片],我又装了4.7版本的编译器,还是一样的错误,没招了,难道 .. ( 23:12) 4.10太老了,该升级了。估计4.10发布的时候这个ARM官方库还没有发布呢。
开启闭关修炼模式,补充查克拉
在线时间11小时
铜币12威望1贡献值0银元0
回 eric2013 的帖子
大哥,我还没搞定啊,都装到5版本了,还是不行,我建了一个小工程,麻烦大哥,在你电脑上编译一下,看行不ARM dsp库测试 (4514 K) 下载次数:17
本帖提到的人:
访问内容超出本站范围,不能确定是否安全
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
Powered by & Copyright Time now is:11-20 13:27 &
版权所有 Gzip enabled
Total 0.094091(s) query 6,未备案提示
为了规范互联网信息服务活动,促进互联网信息服务健康有序发展,根据国务院令第292号《互联网信息服务管理办法》和信息产业部令第33号《非经营性互联网信息服务备案管理办法》规定,国家对互联网信息服务实行备案制度。未履行备案手续的,不得从事互联网信息服务,您的网站由于没有备案或者已备案没有接入,被防火墙自动屏蔽,请登录备案系统进行备案,如果已备案,请提交白名单。谢谢合作!
备案系统:STM32实现2048游戏(二) 移植到STM32
& &&之前,用c实现了2048,虽然有点小bug,关于这个bug,我的解决方法是,先将数据进行移位,保证非零的数据都在一边,这样,再合并数据就没有之前出现的那个bug了。
& & & & &移植到SMT32也比较容易的,因为是用c代码写的,所以直接将代码移植过来就好了。然后封装一个函数,接收输入,对二位数组进行操作。封装这个函数,方便main函数调用。另外一个要注意的地方,在产生随机数字的时候,用到了srand(time(0)),在STM32中,是没有time(0)这个函数的。所以在产生随机种子的这个地方要更改下。
&&&&&&&&&在程序中,我是使用数组的值来作为参数,产生随机种子的。而且产生随机数字,不像用上一次那样只用一个函数来实现了,是用4个函数来实现,每个函数使用的不同的数组的值作为参数。
u8 gennew_right()
srand(pane[2][2]+pane[0][2]+pane[1][3]);
i=rand()%4;
j=rand()%4;
if(pane[i][j] == 0)
pane[i][j] = 2;
u8 gennew_left()
srand(pane[1][2]+pane[3][2]+pane[3][3]);
i=rand()%4;
j=rand()%4;
if(pane[i][j] == 0)
pane[i][j] = 2;
u8 gennew_up()
srand(pane[0][1]+pane[1][2]+pane[2][3]);
i=rand()%4;
j=rand()%4;
if(pane[i][j] == 0)
pane[i][j] = 2;
u8 gennew_down()
srand(pane[3][2]+pane[3][0]+pane[0][3]);
i=rand()%4;
j=rand()%4;
if(pane[i][j] == 0)
pane[i][j] = 2;
&&&&&&&&&& 这个也是比较好理解的。对于封装的函数:
u8 game_process(u8 up, u8 down, u8 right, u8 left)
if( left )
zuoyi(pane[0]);
zuoyi(pane[1]);
zuoyi(pane[2]);
zuoyi(pane[3]);
gennew_left();
else if( right)
youyi(pane[0]);
youyi(pane[1]);
youyi(pane[2]);
youyi(pane[3]);
gennew_right();
else if( up)
shangyi(0);
shangyi(1);
shangyi(2);
shangyi(3);
gennew_up();
else if( down)
gennew_down();
&&&&&&&&&& 其实就是根据输入的参数,来执行不同的操作,实际上就是改变数组的值。
&&&&&&&&&& 最后一个关键的就是怎么在TFT上显示游戏画面。之前实现了在TFT上显示一副图片,利用这个,只要在不同的地方显示需要的图片,不就实现2048界面了。
&&&&&&&&&& 首先是在网上找2048各个数值的图片,然后使用软件将图片的内容转换为数组。那接下来的工作就简单了,将数组的值发送给TFT,就显示画面了。
&&&&&&&&&& 如下,就是图片数组的一部分。
&&&&&&&&&& 总的来说,2048界面分为16个部分,每个部分是各个数值的图片。如0对应数值0的图片,64对应数值64的图片。因此要显示界面,就把每个部分的图片显示了,界面就有了。
&&&&&&&&&& 来回顾下TFT显示数据,TFT显示数据,首先指定显示的窗口大小,再指定起始坐标,然后不断的发显示数据,那么数据就会依次的显示在TFT上了,这就实现了显示图片的效果了。
&&&&&&&&&& 那么数据从什么地方来,当然就是从之前保存的数组中来了,但是数组是保存了所有图片的数据,所以显示的时候,要指定图片在数组中的起始位置。那么显示一个部分的程序就如下了:
void GUI_Dis2048Picture(u8 x, u16 y, u8 length, u16 high,u16 data)
u16 temp=0,tmp=0,num=0;
u32 address=0;
switch(i) {
address = 0;
address = 1680;
address = 1680*2;
address = 1680*3;
address = 1680*4;
address = 1680*5;
address = 1680*6;
address = 1680*7;
address = 1680*8;
default: address = 0;
LCD_setwindow(x,y,x+length-1,y+high-1);
num=length*high*2;
//temp=pic[tmp]|( pic[tmp+1]&&8);
temp=gImage[address+tmp+1];
temp=temp&&8;
temp=temp|gImage[address+tmp];
LCD_WR_DATA(temp);//??u???? 3/4
}while(tmp&num);
&&&&&&&&&& 首先通过判断显示的值是什么,得到数组的起始地址。然后根据输入的坐标以及图片的宽度和高度,设定窗口大小以及显示的坐标位置。然后就不断的输入值就好了。
&&&&&&&&&& 还有一个东西要实现,就是按键的程序,因为要控制游戏,就需要输入,最简单的方式,就是通过按键输入。这部分程序,太简单,就不再说明了。
&&&&&&&&&& 在主函数中,先判断按键是否输入,然后对输入进行处理,最后再显示界面。核心代码就是以下:
KEY_Scan();
ischange = game_process(up, down, right, left);
if(ischange)
for(i=0; i&4; i++)
for(j=0; j&4; j++)
GUI_Dis2048Picture(j*30, i*30, 30, 30,pane[i][j]);
ischange=0;
if(isfailure())
LCD_Clear(BLACK
for(i=0; i&4; i++)
LCD_ShowBigNum4(30,30,0);//??? 3/4 ??,?30*60?ó??u?×???
if(iswin())
LCD_Clear(BLACK
LCD_ShowBigNum4(30,30,2048);//??? 3/4 ??,?30*60?ó??u?×???
&&&&&&&&&& 当然,在程序开头,要定义数组,并赋初值。然后再定义几个全局变量。
u16 pane[4][4] = {2,0,0,0,
u8 up=0,down=0,left=0,right=0;
&&&&&&&&&& 总体来说,在STM32上实现2048不复杂。
&&&&&&&&&& 以下是游戏的截图。
关注微信公众号查看: 2022|回复: 3
求助 关于NES游戏在STM32上移植的问题
主题帖子精华
新手上路, 积分 26, 距离下一级还需 24 积分
在线时间0 小时
最近想在STM32上玩NES游戏,看见网上有大神做出来了,我也想弄一个,请问是否需要用到ucos操作系统?有没有谁有成功代码,能不能发给我学习一下,不要战舰版带的那个综合实验,我只想要游戏那个功能,由于本人实在小白,不知道怎么删除其他功能,所以求大神好人做到底,给我只有游戏那个功能的代码。
主题帖子精华
在线时间151 小时
这里面有几个可以参考一下的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
在线时间429 小时
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
新手上路, 积分 26, 距离下一级还需 24 积分
在线时间0 小时
楼上有个程序是把NES程序直接放到了ROM里。有没有哪个程序是从SD卡中读取.NES文件的游戏程序&,是不是一定需要用到操作系统?最好有源代码,谢谢。
Powered bynuttx stm32 移植-中国学网
nuttx stm32 移植
状态:1个回答日期:uc/os-ii在STM32上的移植笔记 /qwert5929/message.aspx状态:1个回答日期:还有ucos的全部文件,如果你要用到stm32的函数库的话,那么你还要函数库,然后需要修改ucos中的底层接口文件。具体的修改方法你可以去ucos的官网上面下载一个例子参考一...状态:1个回答日期:你问问他哪些拼图游戏和手写程序是自己开源的吗,如果是就能学到很多东西。然后再看看具体例程,主要是高级例程全不全,如网络协议,ucgui等移植等等 如果你说你没几个钱...状态:1个回答日期: 我也移植了,但是出现的问题就是FATFS读取不对,,在f_open()里面运行时候,读出fmt=2,然后就结束了FATFS文件系统运行。。很郁闷…… 我是STM32+SDIO+FATFS操作,S...状态:1个回答日期:UCOS时钟中断用的是SysTick_Handler,中断优先级是6,属于可屏蔽中断。STM32只有NMI和hard fault异常不可屏蔽。状态:1个回答日期:不是很明白LZ想问什么 移植了ucos 如果不想用了 可以重新烧不带os的程序 或者移植了工程中包含了ucos但是不想用,只要不启动就OK状态:1个回答日期:这位大哥,小弟刚刚接触STM32+UIP+DM9000,需要你的指教阿!!跪求了!小弟感激不尽啊!加下小弟的QQ: 小弟最近需要做毕业设计,很赶时间阿,如果搞定了,给酬劳1...状态:1个回答日期: 就是定时器,和任务切换的保护做好了。就完了。 QQ群状态:1个回答日期: 初学时可以找一个模板,在其中建立任务就可以了,任务类似于C中的函数,但又区别于C中的函数,要按着ucos的格式设计代码。如: void TaskLED (void *pdata) { …… &#47...状态:1个回答日期: "嵌入式系统"和"操作系统"不是一个概念。如果你说的是操作系统,可以的。一般微控制器用在工业控制领域,需要对外界事件快速做出反应,一般安装的是实时操作系统。常见的...
与【nuttx stm32 移植】相关信息:&&&&&&&&&&&&&&&&
用户还关注
12345678910
大类导航: |

我要回帖

更多关于 爱心求助 肝移植 的文章

 

随机推荐