w494143467 发表于 2020-11-16 15:38

【RISC-V MCU CH32V103测评】Part3:跑酷类小游戏Demo

本帖最后由 w494143467 于 2020-12-6 22:15 编辑

1.介绍
花了一下午时间移植了之前的跑酷类小游戏,由于开发板上只有一个复位键没有用户按键,所以就使用了TouchKey,同时使用IIC驱动OLED屏幕,查看手册IIC的引脚在PB8(SCL)和PB9(SDA)上,使用UART上传游戏状态,整体游戏设计难度不高,只使用了三个外设。
2.设计
首先设计的是IIC驱动OLED屏幕这个可以在我的上一篇帖子【Part2:IIC驱动OLED屏幕】上看一下,由于每个例程都带有UART功能,所以UART部分基本不需要进行开发,OLED屏幕可以驱动起来之后就开始驱动TouchKey了,这个外设的驱动例程官方已经给出,通过观察例程的UART输出,可以知道Touch输出的是ADC的值,如图1。

图1
那么就需要进行按钮按下的设计,通过观察,不触摸时ADC的值大概在4000+,按下之后根据不同的人,ADC值约在3000以下,所以这边就设计当ADC小于3000则说明按键按下,并同时让按下标志位置1,下面是我的按键按下判断的代码,将下面一段放到函数中,返回Touch_Click_flag标志位,然后判断是否为1即可。
static u16 ADC_Click_flag = 0;
    static u8 Touch_Click_flag = 0;
    u16 ADC_val;

    Touch_Click_flag = 0;
    ADC_val = Touch_Key_Adc(ADC_Channel_2);
    if(ADC_val < 3000 && ADC_Click_flag == 0)
    {
      ADC_Click_flag = 1;
      Touch_Click_flag = 1;   //判断这个标志位,可以得到是否产生一个按下事件
    }
    else if(ADC_val > 3000)//等待抬起
    {
      ADC_Click_flag = 0;
    }
    printf( "TouchKey:%04d\r\n",ADC_val );

    if(ADC_val & 0x8000)
    {
      printf("This value is discarded\r\n");
    }

    TKEY_CR |=0x08000000;//Clear Flag按钮部分完成了之后,就开始移植整体逻辑部分了,由于之前写的代码可移植性比较好,所以直接拿过来修改一小部分就可以用了,将刷屏判断等代码放入到主函数中,如下图2。

图2
先来看一下在游戏过程中,上位机显示的内容,0为未开始,1为正在游戏,2为游戏结束,2只会出现一次,1次之后便是游戏未开始(0)如图3。

图3
最后我们来看一下游戏的整体效果的动态图,游戏中是可以实现双连跳的,这个几连跳可以通过程序中的一个宏进行修改。

图4
3.总结
从这次移植小游戏的过程中,踩的坑比较少,不过有一点不太好的是,定时器中断的例程似乎并没有提供,这让我的一些程序只能在主程序里面跑,这样有点难受,希望官方能够出一个这样的例程。RISC-V MCU移植性还是非常好的,但是呢外设都在同一个文件,所以移植的时候只能复制文件内容,而不能将文件直接进行复制。对于测评,我比较喜欢做一些小游戏,一般都会使用板载的外设进行测评,在以后的测评中也会多制作一些好玩的小游戏,也希望喜欢小游戏的童鞋持续关注我哈~
@21小跑堂 原创**
下面放出小游戏的固件,使用的是华大板子上的OLED屏幕:
**** Hidden Message *****
2020.12.07放出源码:
**** Hidden Message *****

RISCVLAR 发表于 2020-11-16 16:58

定时器中断例程https://bbs.21ic.com/icview-3043066-1-1.html

w494143467 发表于 2020-11-16 18:36

RISCVLAR 发表于 2020-11-16 16:58
定时器中断例程https://bbs.21ic.com/icview-3043066-1-1.html

到时候试一试,后面有时间弄一下。

740071911 发表于 2020-11-16 20:10

超级玛丽

Taoyukai 发表于 2020-11-16 20:20

挺有意思的,期待楼主公布源码

发呆二极管 发表于 2020-11-16 21:39

请问有没有源码吖,想学习一下{:titter:}

rh10000 发表于 2020-11-17 08:27

图4总刷不出来???

w494143467 发表于 2020-11-17 09:21

rh10000 发表于 2020-11-17 08:27
图4总刷不出来???

图四有点大,是个动图,所以不好刷出来。

w494143467 发表于 2020-11-17 09:24

发呆二极管 发表于 2020-11-16 21:39
请问有没有源码吖,想学习一下

有,后面会放出来。

w494143467 发表于 2020-11-17 09:25

Taoyukai 发表于 2020-11-16 20:20
挺有意思的,期待楼主公布源码

后面会公布的。

发呆二极管 发表于 2020-11-18 00:54

w494143467 发表于 2020-11-17 09:24
有,后面会放出来。

期待~

zhengfish 发表于 2020-11-18 10:32

赞美

825cow 发表于 2020-11-18 16:19

感谢分享,谢谢!

LIzs6 发表于 2020-11-18 19:32

期待源码,想玩

w494143467 发表于 2020-11-18 20:53

LIzs6 发表于 2020-11-18 19:32
期待源码,想玩

哈哈,好的好的。

gyh974 发表于 2020-11-19 14:00

期待源码

w494143467 发表于 2020-11-19 14:34

gyh974 发表于 2020-11-19 14:00
期待源码

会有的!

zeshoufx 发表于 2020-11-20 08:40

谢谢分享【跑酷类小游戏Demo 】

Jekele 发表于 2020-12-2 17:00

点赞

hanruile 发表于 2022-5-4 19:52

谢谢分享
页: [1] 2
查看完整版本: 【RISC-V MCU CH32V103测评】Part3:跑酷类小游戏Demo