Nwatch在stm32上的移植

Nwatch在stm32上的移植

本文目标:Nwatch在stm32上的移植

按照本文的描述,应该可以跑通实验并举一反三。

先决条件:装有编译和集成的开发环境,比如:Keil uVision5、STM32CubeMX

使用外设:USART、IIC

前言

NWatch是一个很漂亮的、基于STM32的开源手表项目,我这次学习是为了配合使用FreeRTOS而进行学习的。

官方链接为:

  • GITHUB:https://github.com/ZakKemble/NWatch

  • 作者博客:https://blog.zakkemble.net/diy-digital-wristwatch/

    实验目的

在stm32的平台上移植NWatch的代码,出于学习目的,移植一个游戏进行学习,方便后期继续进行学习FreeRTOS的相关知识点。

移植

在这里插入图片描述

移植这3个文件可以在我自己的硬件平台上进行实战,移植的难点就是关于lcd的显示,显示的驱动写得好,移植就顺畅,写得不好移植费劲。

工程中的相关驱动:

在这里插入图片描述

开一任务,进行游戏,运行如下的代码:

game1_task任务相关代码片段

void game1_task(void *params)
{		
	
	uint8_t dev, data, last_data;
	
	g_framebuffer = LCD_GetFrameBuffer(&g_xres, &g_yres, &g_bpp);
	draw_init();
    
	uptMove = UPT_MOVE_NONE;

	ball.x = g_xres / 2;
	ball.y = g_yres - 10;
	ball.velX = -0.5;
	ball.velY = -0.6;
//	ball.velX = -1;
//	ball.velY = -1.1;

	blocks = pvPortMalloc(BLOCK_COUNT);
   memset(blocks, 0, BLOCK_COUNT);
	
	lives = 3;
	score = 0;
	platformX = (g_xres / 2) - (PLATFORM_WIDTH / 2);

	while (1)
	{
		
		/* 读取红外遥控器 */
		if (0 == IRReceiver_Read(&dev, &data))
		{
						if (data == 0x00)
						{
								data = last_data;
						}
						
						if (data == 0xe0) /* Left */
						{
								btnLeft();
						}

						if (data == 0x90)  /* Right */
						{
								btnRight();
						}
						last_data = data;
		}
			game1_draw();
			draw_end();
			// vTaskDelay(5);
	}
}
extern void game1_task(void *params);
xTaskCreate(game1_task, "GameTask", 128, NULL, osPriorityNormal, NULL);

结果

在这里插入图片描述

这里的核心就是要绘制那些点,哪些地方显示,哪些地方隐藏,球碰到了砖块会怎么样,碰到墙会怎么样,都是在处理这些逻辑。可以看到我这里按下我手里的遥控器,按下向左键时,挡球板向左移动,按下右键时,挡球板向右移动,当然我这里都是学习了前人的经验进行的实战,此次工程为我后面学习更多的freertos知识点提供一些思路,后续会继续学习。

本文中使用的工程

https://download.csdn.net/download/weixin_44317448/88940931

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独处东汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值