Nwatch在stm32上的移植

目录

  • Nwatch在stm32上的移植
    • 前言
    • 实验目的
    • 移植
    • game1_task任务相关代码片段
    • 结果
    • 本文中使用的工程

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第四十四天|动态规划|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

完全背包 文章 一维 只有一个物品时 尽可能多装 dp[j]max( dp[j] (一般0) , dp[j-weight[0]]value[0] (要求j>weight[0]) ) 下一层 dp[j]max (dp[j] , dp[j-weight[i]] valuw[i] ) 从前往后遍历:因为腾一件value更高就腾,至于腾一件后里面包含几件都…

Vue-- 实现简单版 vue-router

实现简单版vue-router3 前置知识: 1、vue 插件机制 : vue.use(arg) arg可以是一个函数和对象,需要有一个install方法,如果是函数(没有install方法),则直接执行该函数。install 方法第一个参数…

Linux进程状态

目录 1.R运行状态(running) 2.S睡眠状态(sleep) 3.T或t状态(stopped 或 tracing stop) 4.Z状态(zombie)(僵尸进程) 1.R运行状态(running&…

exec 和 xargs 命令的用法区别,优缺点

exec 和 xargs 都是用于执行命令的工具,但它们有不同的特点、用法和优缺点。 exec 命令特点和用法: 特点: exec 命令是由 find 命令提供的一个选项,它允许在 find 命令查找到的文件上执行指定的命令。exec 将对 find 查找到的每一…

通过Spring Boot 实现页面配置生成动态接口?

流程介绍 在Spring Boot中实现页面配置生成动态接口通常涉及几个关键步骤: 设计页面配置:首先,你需要设计一个用户界面(UI),允许用户通过此界面来配置接口的各种参数,例如HTTP方法(GET、POST等)、URL路径、请求参数、响应数据格式等。保存配置信息:当用户通过页面配置…

Self-supervised Contextual Keyword and Keyphrase Retrieval with Self-Labelling

文章目录 题目摘要方法数据集实验 题目 通过自我标记进行自我监督的上下文关键字和关键词短语检索 论文地址:https://www.preprints.org/manuscript/201908.0073/v1 项目地址:https://github.com/naister/Keyword-OpenSource-Data 摘要 在本文中&#x…

2023 年江苏省职业院校技能大赛(中职)网络搭建与应用赛项公开赛卷——技能要求

2023 年江苏省职业院校技能大赛(中职)网络搭建与应用赛项公开赛卷——技能要求 2023 年江苏省职业院校技能大赛(中职) 网络搭建与应用赛项公开赛卷——技能要求 竞赛说明 1. 竞赛内容分布 “网络搭建与应用”竞赛共分五个部…

反向传播 — 简单解释

一、说明 关于反向传播,我有一个精雕细刻的案例计划,但是实现了一半,目前没有顾得上继续充实,就拿论文的叙述这里先起个头,我后面将修改和促进此文的表述质量。 二、生物神经元 大脑是一个由大约100亿个神经元组成的复…

寄存器(内存访问)

文章目录 寄存器(内存访问)1 内存中字的存储2 DS和[address]3 字的传送4 mov、add、sub指令5 数据段6 栈7 CPU提供的栈机制8 栈顶超界的问题9 push、pop指令10 栈段 寄存器(内存访问) 1 内存中字的存储 CPU中,用16位寄…

css的严格模式和混杂模式区别?

在网页开发中,CSS 的严格模式(也称为标准模式)和混杂模式(也称为怪异模式或兼容模式)是两种不同的渲染模式,它们影响了浏览器对网页的解析和渲染方式,下面是它们之间的主要区别: 严格…

pycharm安装配置运行py代码与命令行运行

命令行(winr cmd python) 三个小箭头表示可以运行py代码 什么是解释器 文字翻译二进制 你对电脑说 我爱你 电脑不知道什么意思 你对电脑说 111001101000100010010001 111001111000100010110001 111001001011110110100000 电脑便知道了你爱它 那么如何给计算机说这些二进制串…

C++中的STL-string类

文章目录 一、为什么学习string类?1.1 C语言中的字符串 二、准库中的string类2.2 string类2.3 string类的常用接口说明2.4 string类对象的容量操作2.5 string类对象的访问及遍历操作2.5 string类对象的修改操作2.7 string类非成员函数2.8 模拟实现string 一、为什么…

字节飞书前端实习面试

属于是被字节狠狠地拷打了。面试官人很好,让人感觉有很沉稳的感觉。问了一大堆关于底层的问题,属于是把我整麻了。 项目部分问的不多,主要问的都是一些前端涉及的底层知识,层层递进。 1.vue3的响应式是如何实现的 2.computed和watch是什么,有什么应用场景 3.盒子模型 4.BF…

富文本配置渲染场景问题杂谈

背景 可视化页面搭建场景,需要支持配置富文本内容并在页面中渲染,富文本编辑器SDK采用了tinymce/tinymce-react。 问题场景 问题1 :文本数据转义 富文本编辑器生成的HTML富文本在服务端存储时会对字符串进行转义,比如&#xf…

配置服务器自启动极简方式 /etc/rc.d/rc.local

配置服务器自启动有三种方式,本文采用极简方式 1. 修改 脚本 /etc/rc.d/rc.local 设置启动应用的脚本 vim /etc/rc.d/rc.local --追加以下内容 /home/init.sh >> /var/log/my_init.log 2>&1 &exit 0 脚本注释:命令中 2>&…

css选择器nth-last-child(n)的学习理解

上一节我们介绍了:nth-child(n)的使用,这一节我们来介绍一下:nth-last-child(n) :nth-last-child(n):此选择器和nth-child(n)类似都是选择其父元素的第 n 个子元素,唯一的区别在于它是从父元素的子元素末尾开始往前数,一直到第一个…

多项式回归算法模拟

python3.6 环境 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures# 生成随机数作为x变量,范围在-5到5之间,共100个样本 x np.random.un…

深度学习训练GPU显卡选型攻略

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 📑上期文章:『仪酷LabVIEW OD实战(5)——Object DetectionTensorRT工具包快速实现yolo目标检测』 🍻本文由virobotics(仪酷智能)原创…

Web框架开发-web框架

一、web框架 web框架(web framwork)是一种开发框架,用来支持动态网站,网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

51单片机的万年历闹钟及温度补偿

撰写一篇基于51单片机的万年历闹钟及温度补偿的论文,你需要按照学术论文的标准格式和结构来组织内容。以下是一个大致的论文框架和内容建议: 基于51单片机的万年历闹钟及温度补偿系统设计与实现 摘要: 简要介绍论文的研究背景、目的、方法、…