嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > Nwatch在stm32上的移植

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知识点提供一些思路,后续会继续学习。