当前位置: 首页 > news >正文

树莓派Pico C/C++ 开发环境搭建(一键完成版)

树莓派Pico C/C++ 开发环境搭建(一键完成版)

因为之前使用过MicroPython开发过树莓派Pico,总觉得用起来怪怪的。正好最近树莓怕发布了新一代的MCU——RP2350,之前的RP2040在各个平台都有所降价,因此,买了几块。同时因为之前是玩stm32过来的,因此,对于C环境的开发格外偏爱。但在网上大部分找到的C/C++SDK开发树莓派Pico的都是基于官方的教程(需要VSStudio),很难能找到一键搭建的教程,唯有的也只有下面这两个

  1. RP2040 VSCode C/C++开发环境快速部署_rp2040win开发环境-CSDN博客

  2. Windows配置树莓派Pico开发环境并使用vscode入门树莓派Pico开发_正在配置项目: pico-examples-CSDN博客

自己也是参考了这两位大佬的博客完成了C/C++ 开发环境的搭建。

官网的资料

这里给出官网的几个资料,其实官网也给出一键安装的教程,即不需要VStudio 的教程。同时官网还开发了一个VSCode的插件Raspberry Pi Pico 不过现在还在开发阶段,自己尝试了一下,至少在国内用起来不算很方便。😭(也许之后会好用一些🤣)

  1. Getting started with Raspberry Pi Pico-series
  2. Raspberry Pi Pico Windows Installer - Raspberry Pi

正式教程

原理

其实,要明白我们安装的是那几个软件,每个软件起到的作用是什么。这样我们才知道出现了和教程中不一样的地方需要怎么操作。

首先,官网教程中,用的三个软件

  • cmake:工程文件组织和管理的软件。
  • gcc-arm-none-eabi:arm核的交叉编译器,毕竟RP2040也M0+的内核。
  • VSStudio:主要是提供ninja,一个能够应用在windows平台下的工程文件管理组织的软件(类似于linux下的MakeFile)。Cmake是跨平台的软件,本质是通过Cmake生成对应的平台的make文件。
  • git:版本管理的神软件,不多说了。
  • openocd:调试软件,如果不用调试的话,可以不用这个。

需要准备的东西

  1. 一键安装包(上面链接官网资料中一个外国大佬给出来的,其实是将必须的软件全部以安装包的形式给出来了,包括cmake、gcc-arm-none-eabi、git、ninja、openocd和Pico的C/C++SDK)。

    一键安装包链接

  2. Pico工程生成工具(这个是方便生成C/C++工程的,不是必要的,但很推荐)

    生成工具Python文件

  3. VSCode 宇宙最强编辑器(一般跟我一样讨厌又大又重VSStudio的小伙伴都有安装这个的吧🤣)

环境搭建步骤

一键安装包

将上述的一键安装包选择自己的路径安装后,如果能够出现windows的命令行并直接出现以下画面,那恭喜你天选之人,你的环境没有任何问题。

一键安装后的图片

这个画面就是一键安装完成后会将所带的例子编译后输出的结果。只要直接使用VSCode打开安装过程中指定的Examples文件夹(一般是在本机文档下的pico_examples)就可以进行开发了。

验证测试

需要注意的是,为了方便在VSCode中调用Cmake,VSCode中需要安装一些必备的插件,如下截图所示。

需要安装的插件

工程生成工具

在上面提到的工程生成工具的github链接下下载源代码的zip包,解压后,可以得到如下图所示的文件夹

image-20240819215429440

在该文件下打开windows的命令行,运行python pico_project.py --gui, 就会出现图形化工程配置软件了。

image-20240819215710748

如果一切顺利的话,到这儿就可以了😂。至于这个图形化界面如何配置,可以看看大佬的这个博客轻松玩转树莓派Pico之六、pico-project-generator使用-CSDN博客

不过可能会有小伙伴跟我一样,在这个过程中出现各种各样奇奇怪怪的情况。所以才有了下面的过程。

可能出现的情况和解决方式

  1. 如果一键安装包安装后没有出现windows命令行和跳转到安装包中ReadMe.md文件的话。

    可以找找电脑开始菜单中的 Pico-Visual StudioCode 软件运行它,有可能弹出一个弹窗要求PowerShell的位置,将PowerShell的位置选择给它就可以了。我的电脑就是出现了这样的情况。

  2. 如果在本机文档文件夹下找不到pico_examples 这个例程文件夹,或者类似名字的文件夹的话。

    可以看下 一键安装包目录下的 pico-examples.zip 文件,将其解压出来就好了。

这里来看下一键安装包安装目录下都有啥:

image-20240819221217030

可以看到,基本上将所有需要的软件都给出来了,特别是ninja,只给了ninja,而不是一整个VSStudio,这个深得我心😂。

  1. 如果在启动pico-generator后,使用VSCode打开工程,用Cmake build(也就是上面VSCode图中齿轮生成那个按钮)进行配置失败的话

    大概率是因为一键安装包安装时没有将对应的文件添加到电脑的环境变量中去。只需要将一键安装包目录下的Cmake、gcc-arm-none-eabi 、ninja下对应文件的路径添加到环境变量Path中就可以了。下面是我电脑的环境变量示例,根据自己的安装路径进行更改就好。

    image-20240819222302421

​ 除此以外,还有一个环境变量需要自己添加,那就是 名为 PICO_SDK_PATH 这个环境变量,我们 需要将它指向一键安装包目录下的pico_sdk 文件夹。下面给出我电脑的示例。

注意这个环境变量是和Path同样的,而不是像上面那样添加在Path中的。image-20240819222651506

基本上我能遇到的问题就这些,希望能给大家一些参考吧,其实只要明白安装环境对应软件的关系,安装和解决这些奇奇怪怪的问题也不难。

C/C++SDK示例

使用VsCode打开pico-generator生成的工程文件夹,选好对应的编译器,点击生成(build) Cmake就会将对应的make文件生成在build文件夹下 。

image-20240819223802836

使用终端进入build文件夹,make一下就可以了。

image-20240819224229480

相关文章:

树莓派Pico C/C++ 开发环境搭建(一键完成版)

树莓派Pico C/C 开发环境搭建(一键完成版) 因为之前使用过MicroPython开发过树莓派Pico,总觉得用起来怪怪的。正好最近树莓怕发布了新一代的MCU——RP2350,之前的RP2040在各个平台都有所降价,因此,买了几块。同时因为之前是玩stm…...

【计算机组成原理】二、数据的表示和运算:1.数值与编码(十进制二进制转换、BCD码、ASCII码、汉字编码、奇偶校验码、循环冗余检测CRC、海明码)

二、数据的表示和运算 文章目录 二、数据的表示和运算1.数值与编码1.1数据存储和排列❗1.2十进制转换1.2.1整数1.2.2小数 1.3二进制转换1.3.1 B->O1.3.2 B->H 1.4真值&机器数1.5 BCD码1.6 ASCII码1.7汉字与GBK1.8 UTF1.9检错码1.9.1奇偶校验码1.9.2循环冗余检测CRC1.…...

汇编语言中的艺术:数据压缩与解压缩技术

标题:汇编语言中的艺术:数据压缩与解压缩技术 数据压缩是计算机科学中的一项基本技术,它通过减少数据的冗余来降低存储或传输所需的空间。在低级语言如汇编语言中实现数据压缩和解压缩,不仅是一种技术挑战,也是对硬件…...

【Alibaba Cola 状态机】重点解析以及实践案例

【Alibaba Cola 状态机】重点解析以及实践案例 1. 状态模式 状态模式是一种行为型设计模式,允许对象在内部状态改变时改变其行为,简单地讲就是,一个拥有状态的context对象,在不同状态下,其行为会发生改变。看起来是改…...

购买商城源码前需要考虑哪些方面?

前言 购买商城源码前需要考虑的方面包括功能满足、技术兼容性、可扩展性、公司实力、客户评价、安全性与稳定性等。 购买商城源码是一项重要决策,需要综合考虑多个因素。以下是详细的考虑方面: 1.功能满足: 确保所选的源码能够支持企业所…...

MongoDB快速入门CRUD

1. 数据库管理 1.1 切换数据库 切换到名为 myDatabase 的数据库。如果该数据库不存在,MongoDB 会在第一次写入数据时自动创建它。 use myDatabase;1.2 查看当前数据库 显示当前使用的数据库的名称。 db; 1.3 显示所有数据库 列出当前 MongoDB 实例中的所有数…...

【python基础】—利用pandas读取或写入mysql表数据

文章目录 一、read_sql()二、to_sql()三、连接数据库方式—MySQL1、用sqlalchemy包构建数据库链接2、用DBAPI构建数据库链接 四、容易遇到的问题 一、read_sql() 功能 将 SQL 查询/数据库表读入 DataFrame。 语法 读取数据库(通过SQL语句或表名) pand…...

C/C++信号量

文章目录 一、信号量介绍1.1 什么是信号量1.2 信号量的原子性1.3 信号量的使用 二、C语言使用2.1 函数接口2.2 信号量代码 三、C20使用3.1 函数接口 四、C11模拟信号量 一、信号量介绍 1.1 什么是信号量 信号量是一种特殊的变量,是操作系统层面的,可以…...

SSL Pining 问题解决方案

实战案例 为了能够更好的复现 SSL Pining 场景,我们对一个 App(https:app4.scrape.center)进行抓包,这个 App 包含了 SSL Pining 的相关设置,如果我们将手机的代理设置为抓包软件提供的代理服务,那么这个 …...

【Spring Boot】全局异常处理

目录 背景 前言 设计步骤 1.定义异常信息类: 2.自定义异常: 3.创建全局异常处理类 4.在控制器中抛出异常 5.输出 捕获 Valid 校验异常 背景 去面试的时候被问到SpringBoot项目中,如何处理全局异常的,也就是如何捕获全局异…...

安全基础学习-SM3加密算法

SM3是一种广泛使用在中国国家标准中的哈希算法,全称为“中国国家密码算法SM3”。它由中国国家密码管理局制定,主要用于数字签名和消息完整性验证。SM3算法与SHA-256在结构上类似,但其设计具有特定的改进以增强安全性。 SM3算法生成256位的哈希值,使用了32轮的迭代运算,并…...

MySQL中处理JSON数据:大数据分析的新方向

1. 简介 1.1. 概述 在MySQL中处理JSON数据的能力是在MySQL 5.7版本中引入的,并在后续的版本中不断得到增强。这使得MySQL能够直接操作和查询JSON格式的数据,极大地扩展了其处理复杂数据结构的能力。 1.2. 主要特点 灵活性与可扩展性 :JSON允许开发者存储不规则和嵌套的数…...

K8S 容器调度

在Kubernetes中,容器调度是一个自动化的过程,负责将容器(在Kubernetes中称为Pod)分配到集群中的合适节点上运行。这一过程由Kubernetes的调度器(kube-scheduler)控制,它通过一系列算法和策略来确…...

C++ //练习 17.2 定义一个tuple,保存一个string、一个vector<string>和一个pair<string, int>。

C Primer&#xff08;第5版&#xff09; 练习 17.2 练习 17.2 定义一个tuple&#xff0c;保存一个string、一个vector和一个pair<string, int>。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /**********************…...

外观检测设备真的能提高生产效率吗?

零部件外观检测设备是一种专业的设备&#xff0c;用于对各类零部件的外观进行检测和评估。现代制造业中扮演着重要的角色&#xff0c;能够有效提升产品质量&#xff0c;确保产品符合国家标准和客户需求。 首先&#xff0c;零部件外观检测设备具备高精度和高效率的特点。通过采用…...

ant design pro 中用户的表单如何控制多个角色

ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二ant design pro access.ts 是如何控制多角色的权限的 看上面的图片 当创建或编辑一个用户时&#xff0c;…...

Prometheus监控系统

目录 1.Prometheus概述 1.1 TSDB时序数据库 1.2 Prometheus 的特点 1.3 Prometheus 的生态组件 1.4 Prometheus 的工作模式&#xff1a; 1.5 Prometheus 的工作流程 1.6 Prometheus 的局限性 2.部署Prometheus 2.1 Prometheust Server 端安装和相关配置 2.2 部署 Expo…...

mq-fanout交换机

交换机 交换机是什么?步骤 交换机本身具备路由功能 消息先发到交换机,交换机在路由到队列,消费者监听队列拿到消息 广播模式是什么 是什么 例如:每个微服务创建队列,订单服务只启动1台,1个消费者,订单 怎么创建 创建一个队列 -交换机里type-选择模式(广播模式) 在交换…...

android13禁用打开wifi ap 热点

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 这个文章介绍的是如何禁止用户打开wifi热点,禁止用户安装app后,打开wifi热点。 2.情况分析 android13 应用层打开wifi AP public void setWifiApEnabled(boolean isEn…...

前端宝典之六:React源码解析之lane模型

本文主要内容&#xff1a; 介绍lane模型 一、 lane模型 lane模型就是react优先级的机制&#xff0c;可以用来 可以表示优先级的不同可能同时存在几个同优先级的更新&#xff0c;所以还得能表示批的概念方便进行优先级相关计算 1、表示优先级不同 lane模型使用31位的二进制…...

邦德咖啡线下门店盛大开业,引领国产健康咖啡新风尚

近日&#xff0c;国内咖啡市场迎来了一股清新的绿色风潮&#xff0c;邦德咖啡线下门店正式拉开帷幕&#xff0c;以其独特的健康理念和创新的产品&#xff0c;誓要成为国产咖啡界的一股强劲力量。 邦德咖啡线下门店以阿卡迪亚绿色为品牌主色调&#xff0c;立志打造国产健康咖啡…...

Elasticsearch + Search UI 构建一个文件搜索引擎

目录 Elasticsearch使用优势App Search Search UI配置engine集中管理配置和提供实用工具函数配置和初始化一个基于Elasticsearch的搜索界面应用程序Search UI 基础用法 好书推荐 Elasticsearch 使用优势 使用ElasticSearch的主要好处在于其强大的全文搜索和实时分析能力。Elas…...

机械学习—零基础学习日志(如何理解概率论2)

全概率公式与贝叶斯公式 上面所提到的公式&#xff0c;可以使用上一篇文章的基本公式推导。 使用到了概率的基本运算公式。 完整的公式展示&#xff1a; 习题练习&#xff1a; 剩余的练习&#xff1a; 第二题解析&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 注意&…...

鸿蒙关于手机全局本地文件读取,写入

一.背景 需求是需要操作用户手机中的文件&#xff0c;不是应用沙箱 二.解决方案 这里要注意的一点拿到fsOpen.path的路径再去进行open文件&#xff0c;因为这里还不知道本地文件路径在哪里&#xff0c;需要选择一下路径再拿到路径去请求 1.这里就是进行两个fs.open&#xf…...

嵌入式企业面试真题

1.C语言中指针数组和数组指针的区别是什么? 答:指针数组是指数组的元素都是指针类型的数组。数组指针是指一个指向数组的指针。指向的是数组第一个元素的地址,每次偏移一个数组的大小。 2.讲一下什么是结构体字节对齐? 答:结构体字节对齐是指当结构体中元素的物理内存大…...

开源一款H5自适应留言表白墙php源码下载

开源一款H5自适应留言表白墙php源码下载&#xff0c;优点就是安装简单&#xff0c;功能实用[滑稽][滑稽] 缺点就是UI简陋&#xff0c;功能稀少 第一张是首页&#xff0c;第二张是查看留言 第三张是留言列表(10秒自动刷新)&#xff0c;第四张是表白墙界面...

jmeter引入jar包的三种方式

示例 实现对登录密码进行MD5加密 pom文件依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.12&l…...

零基础学习Redis(5) -- redis单线程模型介绍

前面我们提到过&#xff0c;redis是单线程的&#xff0c;这期我们详细介绍一下redis的单线程模型 1. redis单线程模型 redis只使用一个线程处理所有的请求&#xff0c;并不是redis服务器进程内部只有一个线程&#xff0c;其实也存在多个线程&#xff0c;只不过多个线程是在处…...

Android Audio

audio概述&#xff1a; Android Audio知识梳理 看完这一篇就够了&#xff01;-CSDN博客 Android audio篇章&#xff08;1&#xff09;------Audio架构_android audio(1)-CSDN博客 android audio google&#xff1a; 音频 | Android Open Source Project (google.cn) 音频…...

远程MySQL数据库:定义、优势及cPanel的数据库工具

在现代网站和应用程序开发中&#xff0c;数据库是必不可少的核心部分。通常情况下&#xff0c;数据库与网站托管在同一台服务器上&#xff0c;但为了提升性能和安全性&#xff0c;越来越多的用户选择使用远程MySQL数据库。那么&#xff0c;什么是远程MySQL数据库呢&#xff1f;…...