【RP2040】香瓜树莓派RP2040之新建工程

本文最后修改时间:2022年09月05日 11:02

一、本节简介

本节介绍如何新建一个自己的工程。

二、实验平台

1、硬件平台

1)树莓派pico开发板

①树莓派pico开发板*2

②micro usb数据线*2

2)电脑

2、软件平台

1)VS CODE

三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)纠错/业务合作:897503845@qq.com

4)香瓜嵌入式之树莓派群:512598061

5)本文出处:原创连载资料《简单粗暴学树莓派》

6)完整开源资料下载地址(电脑端打开):

opengua.taobao.com

四、实验前提

1、在进行本文步骤前,请先阅读以下章节:

1)《简单粗暴学树莓派》的“第一章至第二章”章节

2)《Raspberry Pico C/C++ SDK Setup and Example Project in under 30 min!》(外网视频):

https://www.youtube.com/watch?v=BAoTBg8MJJ4&t=1332s

2、在进行本文步骤前,请先实现以下章节:

1)《简单粗暴学树莓派》的《香瓜树莓派pico之搭建开发环境(windows)》章节。

2)《简单粗暴学树莓派》的《香瓜树莓派pico之仿真调试》章节。

五、基础知识

暂无

六、实验步骤

1、实现新建工程并可编译

1)在“D:\work”新建一个文件夹“GUA_PICO_PROJECT”

2)打开两个VS CODE,左边一个加载pico例程,右边一个打开便是无工程的。

3)选择刚刚建好的工程文件夹

4)新建一个pico_sdk_import.cmake,并把左边工程的pico_sdk_import.cmake内容复制过来,并保存(ctrl+S)。

5)新建一个CMakeLists.txt,并把左边工程的CMakeLists.txt部分内容复制过来,并保存(ctrl+S)。

注意蓝色箭头需要改成自己的工程目录。下一步会建GUA_CODE的工程目录。

6)新建工程目录

7)在GUA_CODE文件夹下,新建两个文件

注意“main.c”的“.c”不能漏

8)复制CMakeLists.txt(不要与前面的CMakeLists.txt混淆)的内容并修改文件夹和文件的名称,并保存(ctrl+S)。

9)编辑main.c文件,写入代码,并保存(ctrl+S)

#include "pico/stdlib.h"

int main()

{

    gpio_init(25);

    gpio_set_dir(25, GPIO_OUT);

    while (true) {

        gpio_put(25, 1);

        sleep_ms(250);

        gpio_put(25, 0);

        sleep_ms(250);

    }

    return 1;

}

10)按“ctrl+shift+p”,查找并选择“CMake:Configure”。

11)选择编译器

12)编译,即可生成uf2

13)下载进pico里看是否led闪烁正常,以此验证步骤是否做成功。

至此新建的工程即可正常编译,接下来要配置仿真调试的功能。

2、实现新建工程的仿真调试

1)下载openocd编译文件并放到工程路径下

2)下载picoprobe固件进pico

①按着pico的BOOTSEL按键,插入USB,松开按键。等待电脑识别pico为一个盘。

②将picoprobe固件拖拽进pico识别的盘里,会自动关闭,即下载成功。

3)VS debug环境配置

①将D:\GUA_PICO\pico-examples目录下的.vscode文件夹复制到D:\work\GUA_PICO_PROJECT

②修改.vscode文件夹里的launch.json

{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "Cortex Debug",

            "cwd": "${workspaceRoot}",

            "executable": "${workspaceRoot}/build/GUA_CODE/GUA_CODE.elf",

            "request": "launch",

            "type": "cortex-debug",

            "servertype": "openocd",

            "device": "Pico2040",

            "runToMain": true,

            "configFiles": ["interface/picoprobe.cfg", "target/rp2040.cfg"],

            "searchDir": ["D:/work/GUA_PICO_PROJECT/openocd/tcl"],

            "svdFile": "D:/work/GUA_PICO_PROJECT/pico-sdk/src/rp2040/hardware_regs/rp2040.svd",

        }

    ]

}

③将D:\GUA_PICO\pico-examples目录下的pico-sdk文件夹复制到D:\work\GUA_PICO_PROJECT

④修改Cortex-Debug插件的配置项目

添加如下路径(根据自己openocd.exe所在路径),修改后关闭,记得点保存(ctrl+S)

{

    "cmake.configureEnvironment": {

        "PICO_SDK_PATH": "D:\\work\\GUA_PICO_PROJECT\\pico-sdk"

    },

    "cmake.generator": "NMake Makefiles",

    "cmake.configureOnOpen": true,

   

"cortex-debug.openocdPath":"D:/work/GUA_PICO_PROJECT/openocd/openocd.exe",

    "cortex-debug.gdbPath": "arm-none-eabi-gdb",

}

⑤编译,仿真。

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

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

相关文章

【C++】一文带你初识C++继承

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:napori—Vaundy 1:21 ━━━━━━️💟──────── 3:23 …

CSS中的calc()函数有什么作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中的calc()函数及其作用⭐ 作用⭐ 示例1. 动态计算宽度:2. 响应式布局:3. 自适应字体大小:4. 计算间距: ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点…

KCC@广州开源读书会广州开源建设讨论会

亲爱的开源读书会朋友们, 在下个周末我们将举办一场令人激动的线下读书会,探讨两本引人入胜的新书《只是为了好玩》和《开源之迷》。作为一个致力于推广开源精神和技术创新的社区,这次我们还邀请了圈内大咖前来参与,会给大家提供一…

软件测试技术之单元测试—工程师 Style 的测试方法(3)

如何设计单元测试? 单元测试设计方法 单元测试用例,和普通测试用例的设计,没有太多不同,常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类&…

[UE4][C++]使用qrencode动态生成二维码

一、使用CMake编译x64版本qrencode 下载地址 GitHub - fukuchi/libqrencode: A fast and compact QR Code encoding libraryA fast and compact QR Code encoding library. Contribute to fukuchi/libqrencode development by creating an account on GitHub.https://github.…

2023/08/13_______JVM(CG)垃圾回收 算法(复制算法,标记清除,标记清除压缩)

JVM GC算法 复制算法 1,每一次GC都会将伊甸(Eden)活的对象移到幸存区中:一旦Eden区被GC后 就会是空 只要有内容就是from区 谁空谁是to区 内存会从 伊甸->幸存区to->幸存from(这个时候to和from交换区域&#xf…

EXPLAIN使用分析

系列文章目录 文章目录 系列文章目录一、type说明二、MySQL中使用Show Profile1.查看当前profiling配置2.在会话级别修改profiling配置3.查看profile记录4.要深入查看某条查询执行时间的分布 一、type说明 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引&…

kafka线上问题优化

如何防止消息丢失 生产者: 使用同步发送把ack设成1或者all(非0,0可能会出现消息丢失的情况),并且设置同步的分区数>2 消费者:把自动提交改成手动提交 如何防止重复消费 在防止消息丢失的方案中&#…

leetcode 力扣刷题 数组交集(数组、set、map都可实现哈希表)

数组交集 349. 两个数组的交集排序+双指针数组实现哈希表unordered_setunordered_map 350. 两个数组的交集Ⅱ排序 双指针数组实现哈希表unordered_map 349. 两个数组的交集 题目链接:349. 两个数组的交集 题目内容如下,理解题意&#xff1a…

梯度爆炸和梯度消失的原因以及解决方法

文章目录 1、原因:2、解决方法 1、原因: 梯度消失和梯度爆炸的根本原因是因为在反向传播过程中,使用链式法则计算时,累积相乘效应导致梯度过大或者过小主要原因有: 1)激活函数:例如sigmoid或者…

聊聊火车的发展

目录 1.火车的概念 2.火车的发展历史 3.火车对战争的影响 4.火车对人们出行造成的影响 1.火车的概念 火车是一种由机械动力驱动的陆上交通工具,通常用来运输人员和货物。它由一列或多列的连接在一起的车厢组成,有轨道作为其行驶的基础,并通…

重建与突破,探讨全链游戏的现在与未来

全链游戏(On-Chain Game)是指将游戏内资产通过虚拟货币或 NFT 形式记录上链的游戏类型。除此以外,游戏的状态存储、计算与执行等皆被部署在链上,目的是为用户打造沉浸式、全方位的游戏体验,超越传统游戏玩家被动控制的…

mysql面试

基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用…

php正则替换文章的图片

要使用正则表达式替换文章中的图片链接,可以按照以下步骤进行操作: 1. 获取文章内容:首先,你需要获取包含图片链接的文章内容。你可以从文件中读取文章,或者从数据库中检索文章内容。 2. 使用正则表达式匹配图片链接…

JAVA编程学习笔记

常用代码、特定函数、复杂概念、特定功能……在学习编程的过程中你会记录下哪些内容?快来分享你的笔记,一起切磋进步吧! 一、常用代码 在java编程中常用需要储备的就是工具类。包括封装的时间工具类。http工具类,加解密工具类&am…

day17 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

目录: 解题及思路学习 110.平衡二叉树 https://leetcode.cn/problems/balanced-binary-tree/ 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差…

Linux学习之firewallD

systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是inactive (dead)。 systemctl start firewalld.service启动firewalld,systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是active (runni…

okcc呼叫系统导入呼叫名单/客户资料的数量上限,okcc通话声音小有哪几种处理办法?

系统导入呼叫名单/客户资料的数量上限 呼叫名单一次最多十万 客户资料一次最多五万 通话声音小有哪几种处理办法? 1、IP话机:通过话机上的音量调节按钮来进行调节。 2、模拟话机:修改语音网关上的增益来实现。 “ 往IP增益”表示电话呼入…

stable diffusion 运行时报错: returned non-zero exit status 1.

运行sh run.sh安装stable diffusion时报错:ImportError: cannot import name builder from google.protobuf.internal (stable-diffusion-webui/venv/lib/python3.8/site-packages/google/protobuf/internal/__init__.py) 原因:python版本过低&#xff0…

ubuntu16.04制作本地apt源离线安装

一、首先在有外网的服务器安装需要安装的软件,打包deb软件。 cd /var/cache/apt zip -r archives.zip archives sz archives.zip 二、在无外网服务器上传deb包,并配置apt源。 1、上传deb包安装lrzsz、unzip 用ftp软件连接无外网服务器协议选择sftp…