树莓派Pico C/C++ 开发环境搭建(一键完成版)
树莓派Pico C/C++ 开发环境搭建(一键完成版)
因为之前使用过MicroPython开发过树莓派Pico,总觉得用起来怪怪的。正好最近树莓怕发布了新一代的MCU——RP2350,之前的RP2040在各个平台都有所降价,因此,买了几块。同时因为之前是玩stm32过来的,因此,对于C环境的开发格外偏爱。但在网上大部分找到的C/C++SDK开发树莓派Pico的都是基于官方的教程(需要VSStudio),很难能找到一键搭建的教程,唯有的也只有下面这两个
-
RP2040 VSCode C/C++开发环境快速部署_rp2040win开发环境-CSDN博客
-
Windows配置树莓派Pico开发环境并使用vscode入门树莓派Pico开发_正在配置项目: pico-examples-CSDN博客
自己也是参考了这两位大佬的博客完成了C/C++ 开发环境的搭建。
官网的资料
这里给出官网的几个资料,其实官网也给出一键安装的教程,即不需要VStudio 的教程。同时官网还开发了一个VSCode的插件Raspberry Pi Pico 不过现在还在开发阶段,自己尝试了一下,至少在国内用起来不算很方便。😭(也许之后会好用一些🤣)
- Getting started with Raspberry Pi Pico-series
- 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:调试软件,如果不用调试的话,可以不用这个。
需要准备的东西
-
一键安装包(上面链接官网资料中一个外国大佬给出来的,其实是将必须的软件全部以安装包的形式给出来了,包括cmake、gcc-arm-none-eabi、git、ninja、openocd和Pico的C/C++SDK)。
一键安装包链接
-
Pico工程生成工具(这个是方便生成C/C++工程的,不是必要的,但很推荐)
生成工具Python文件
-
VSCode 宇宙最强编辑器(一般跟我一样讨厌又大又重VSStudio的小伙伴都有安装这个的吧🤣)
环境搭建步骤
一键安装包
将上述的一键安装包选择自己的路径安装后,如果能够出现windows的命令行并直接出现以下画面,那恭喜你天选之人,你的环境没有任何问题。

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

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

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

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

如果一切顺利的话,到这儿就可以了😂。至于这个图形化界面如何配置,可以看看大佬的这个博客轻松玩转树莓派Pico之六、pico-project-generator使用-CSDN博客
不过可能会有小伙伴跟我一样,在这个过程中出现各种各样奇奇怪怪的情况。所以才有了下面的过程。
可能出现的情况和解决方式
-
如果一键安装包安装后没有出现windows命令行和跳转到安装包中ReadMe.md文件的话。
可以找找电脑
开始菜单中的Pico-Visual StudioCode软件运行它,有可能弹出一个弹窗要求PowerShell的位置,将PowerShell的位置选择给它就可以了。我的电脑就是出现了这样的情况。 -
如果在本机
文档文件夹下找不到pico_examples这个例程文件夹,或者类似名字的文件夹的话。可以看下 一键安装包目录下的
pico-examples.zip文件,将其解压出来就好了。
这里来看下一键安装包安装目录下都有啥:
可以看到,基本上将所有需要的软件都给出来了,特别是ninja,只给了ninja,而不是一整个VSStudio,这个深得我心😂。
-
如果在启动pico-generator后,使用VSCode打开工程,用Cmake build(也就是上面VSCode图中齿轮生成那个按钮)进行配置失败的话
大概率是因为一键安装包安装时没有将对应的文件添加到电脑的环境变量中去。只需要将一键安装包目录下的Cmake、gcc-arm-none-eabi 、ninja下对应文件的路径添加到环境变量Path中就可以了。下面是我电脑的环境变量示例,根据自己的安装路径进行更改就好。

除此以外,还有一个环境变量需要自己添加,那就是 名为 PICO_SDK_PATH 这个环境变量,我们 需要将它指向一键安装包目录下的pico_sdk 文件夹。下面给出我电脑的示例。
注意这个环境变量是和Path同样的,而不是像上面那样添加在Path中的。
基本上我能遇到的问题就这些,希望能给大家一些参考吧,其实只要明白安装环境对应软件的关系,安装和解决这些奇奇怪怪的问题也不难。
C/C++SDK示例
使用VsCode打开pico-generator生成的工程文件夹,选好对应的编译器,点击生成(build) Cmake就会将对应的make文件生成在build文件夹下 。

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

相关文章:
树莓派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(第5版) 练习 17.2 练习 17.2 定义一个tuple,保存一个string、一个vector和一个pair<string, int>。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /**********************…...
外观检测设备真的能提高生产效率吗?
零部件外观检测设备是一种专业的设备,用于对各类零部件的外观进行检测和评估。现代制造业中扮演着重要的角色,能够有效提升产品质量,确保产品符合国家标准和客户需求。 首先,零部件外观检测设备具备高精度和高效率的特点。通过采用…...
ant design pro 中用户的表单如何控制多个角色
ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二ant design pro access.ts 是如何控制多角色的权限的 看上面的图片 当创建或编辑一个用户时,…...
Prometheus监控系统
目录 1.Prometheus概述 1.1 TSDB时序数据库 1.2 Prometheus 的特点 1.3 Prometheus 的生态组件 1.4 Prometheus 的工作模式: 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模型
本文主要内容: 介绍lane模型 一、 lane模型 lane模型就是react优先级的机制,可以用来 可以表示优先级的不同可能同时存在几个同优先级的更新,所以还得能表示批的概念方便进行优先级相关计算 1、表示优先级不同 lane模型使用31位的二进制…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

