树莓派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位的二进制…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

