首页

使用C |编程树莓派Pico

在本教程中,我们将学习如何使用C语言为树莓派Pico编程。我们将看到在C编程语言中为树莓派Pico编程所需的所有步骤,如下载树莓派Pico的C SDK和从github的例子,安装所有必要的工具,构建Blinky C程序,最后加载UF2文件到Pico并运行Blinky示例。

Program-Raspberry-Pi-Pico-using-C-Image

你读过这些吗?

在继续之前,你需要浏览我之前为树莓派制作的两个教程,称为“伟德老虎机手机版从树莓派开始”和“用MicroPython编程树莓派”。

这些教程包括伟德老虎机手机版树莓派Pico、RP2040微控制器、Pinout of Pico、编程环境、MicroPython和许多其他重要主题的基础知识。

我强烈建议你完成这两个教程,以熟悉树莓派Pico。伟德老虎机手机版

开始使用树莓派Pico C SDK

如果你是一个老派的硬件工程师(像我一样),并且有编写固件的经验,那么你可能会更适应C编程语言而不是Python或MicroPython来编写应用程序/固件。讽刺的是,MicroPython是用C编写的。

尽管树莓派基金会将Python作为所有树莓派sbc的主要编程语言,但当涉及到微控制器时,情况就完全不同了。

我认为C语言是所有高级编程语言中的低级编程。如果你想完全控制硬件直到寄存器的每个位,那么C语言是最终的选择。因此,C语言是许多微控制器和嵌入式系统编程的首选。

基于Raspberry Pi Pico的RP2040微控制器也不例外。在投资和推广MicroPython的同时,树莓派基金会还发布了C / c++编程语言的SDK(软件开发工具包),为基于RP2040的板开发应用程序。

让我们看看如何用C语言为树莓派编程。

用什么电脑?

我已经在“用MicroPython编程Pico”教程中讨论过了。您可以使用任何基于Linux、Windows或Mac的系统作为主机。但是树莓派Pico的官方文档主要关注运行树莓派OS的树莓派计算机作为主主机系统(尽管它提到了其他系统的程序)。

Raspberry-Pi-3-Model-B-for-Pico

我没有最新的树莓派4 SBC,但有一个旧的树莓派3 Model b。所以,当使用C SDK时,我通常使用树莓派来开发Pico的应用程序。在以后的教程中,我将解释如何伟德老虎机手机版使用其他系统和环境,如Windows、Visual Studio Code和其他。

获取Pico的C SDK和示例

假设您也在使用树莓派计算机,使用SSH或VNC登录到Pi(如果您将Pi连接到显示器,那么很好)。我将使用VNC查看器打开树莓派的桌面。

打开终端,在/home/pi/pico创建一个名为' pico '的目录依次输入以下命令。

cd ~ /
mkdir皮科
cd皮科

Pico-C-Download-SDK-1

下载C SDK

Pico的C SDK的官方存储库是https://github.com/raspberrypi/pico-sdk.让我们使用以下命令将这个repo克隆到我们新创建的“pico”目录中。

Git clone -b master https://github.com/raspberrypi/pico-sdk.git

Pico-C-Download-SDK-2

这将在' pico '目录中创建一个名为' pico-sdk '的目录。在继续下载示例之前,你必须在“pico-sdk”中初始化“tinyusb”子模块,以便USB相关功能,如USB CDC Serial工作。

因此,打开' pico-sdk '目录,并使用以下命令初始化USB子模块。

cd pico-sdk
Git子模块update - -init

Pico-C-Download-SDK-3

下载示例

树莓派基金会为不同的外设创建了一堆例子,比如GPIO, ADC, PWM, I2C、SPI等Pico。不用从头开始编写C程序,我们可以利用这些示例来熟悉不同的函数和api。官方回购的Pico例子是https://github.com/raspberrypi/pico-examples

我们将克隆这个回购到' pico '目录。因此,返回' pico '目录并使用以下命令克隆git。

cd . .
Git clone -b master https://github.com/raspberrypi/pico-examples.git

Pico-C-Download-Examples-1

安装工具链

您刚刚下载了Pico的C源文件。为了编译和构建这些文件,你需要额外的工具,如ARM GCC Compiler, ARM Cortex库,CMake构建工具等。我们可以使用' apt '来安装所有这些工具。首先,使用' update '命令更新包索引。

sudo apt更新

Pico-C-Install-Toolchain-1

现在,您可以使用以下命令安装必要的工具。如果您已经安装了这些工具中的任何一个,' apt '将不会再次安装它们。

安装cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

Pico-C-Install-Toolchain-2

警告:这是一个非常大的安装,占用大约1800 MB的磁盘空间。确保安装树莓派操作系统的SD卡上有足够的空间。我用的是一张16gb的卡。

另外,完成安装需要相当多的时间。喝杯咖啡放松一下。

Pico-C-Install-Toolchain-3

探索眨眼的例子

现在让我们来看第一个C示例程序,正如所料,它只是一个“Blink”程序。假设你仍然在' pico '目录下,打开' pico-examples '目录。此目录包含不同外设和模块的示例。打开“眨眼”目录。

cd pico-examples /眨眼

Pico-C-Build-Blink-1

在这里,你可以看到' blink.c '的源代码,用于闪烁板载LED。如果你想打开它,使用任何编辑器,如' vim '。如果你没有' vim ',用Sudo apt安装vim命令。

vim blink.c

Pico-C-Build-Blink-2

为了便于理解,我复制了一份代码并添加了注释。

我们现在必须构建这个源代码并生成一个二进制文件。

构建眨眼

返回' pico-examples '目录,创建一个名为' build '的新目录。此目录包含所有示例项目的所有CMake构建文件。打开新创建的“build”目录。

cd . .
mkdir构建
cd构建

另外,使用以下命令导出pico-sdk的路径。

出口PICO_SDK_PATH = . . / . . / pico-sdk

Pico-C-Build-Blink-3

现在可以运行CMake命令来准备构建目录。

cmake . .

Pico-C-Build-Blink-4

' build '目录现在填充了所有示例的所有构建相关文件。但是由于我们只对blink示例感兴趣,所以让我们使用make命令构建该示例。首先,打开“build”目录中的“blink”目录,制作文件。

cd眨眼
让阁下

Pico-C-Build-Blink-5

注意:' -j '选项允许指定要运行的同时作业的数量。因为我的树莓派3有一个四核CPU,我选择了4个同时工作。

' make '命令将编译所有源文件并生成一堆二进制文件。

Pico-C-Build-Blink-6

如果你列出' build '目录中的' blink '目录的内容,你可以看到生成的文件列表。

Pico-C-Build-Blink-7

在所有这些文件中,我们感兴趣的是‘。Uf2 '文件名为' blink.uf2 '。如果你还记得MicroPython教程,这是MicroPython二进制文件格式,可以很容易地上传到树莓派Pico,只需要简单地拖放(在设置Pico为引导加载器模式后)。

载入Blink并运行它

将程序上传到树莓派Pico最简单的方法是将其置于Bootloader模式,这将把Pico作为一个USB海量存储设备挂载。然后我们可以简单地拖放眨眼。uf2文件。

要将Pico置于Bootloader模式,首先将微USB线插入树莓派Pico,按住' BOOTSEL '按钮,同时将USB线插入树莓派(或主机)。Pico将作为一个大容量存储设备安装。

Pico-C-Load-Blink-1

打开文件管理,浏览到pico/pico-examples/build/blink目录。只需拖放“眨眼”。uf2 '文件到Pico。Pico将重置(并断开与计算机的连接),LED开始闪烁。

Pico-C-Load-Blink-2

额外的好处:可替代拔插USB电缆

你厌倦了拔插树莓派Pico进入引导加载模式吗?然后我将向您展示一个解决方法,这样您就不必每次想要上传一个程序到Pico时都这样做。

当我们拔掉和插入Pico时,我们实际上是在重置它。所以,如果我们能找到另一种重置皮科的方法,我们就能让皮科一直和电脑相连。事实证明,有一个相当简单的方法来重置Pico。

如果你还记得树莓派的Pinout,有一个别针叫“RUN”。这是树莓派的30号密码。

Raspberry-Pi-Pico-Pinout

这实际上是RP2040微控制器的全局复位引脚。当这个引脚被拉低,RP2040微控制器将重置。

所以,我在RUN引脚和GND之间连接了一个按钮。每当我按下这个按钮,它就会重置微控制器。让我们把这个按钮称为重置按钮。

Program-Raspberry-Pi-Pico-using-C-Reset

现在,要将树莓派置于Bootloader模式,首先按下并按住Reset按钮。然后,按住BOOTSEL按钮。现在,首先释放Reset按钮,然后在一秒钟后,释放BOOTSEL按钮。

就是这样。你的Pico现在处于引导加载模式。你可以保持USB线连接到Pico和主机(树莓派),但你可以轻松重置或选择引导加载模式。

如果你只是想重置Pico,只需按重置按钮一次,并释放它。

结论

一个完整的初学者指南,开始使用C SDK为Pico。通过了解如何下载Pico C SDK、安装所有必要的工具、构建源代码并将二进制文件上传到树莓派Pico,您学习了如何使用C编程语言为树莓派Pico编程。

7反应

  1. 你好,我可以跟随本教程直到“git submodule update -init”。有了这个命令,我只得到了一些git帮助,但没有命令执行。
    会有什么问题呢?

    1. 它应该是git submodule update ' doubledash ' init
      Git子模块更新(-)(-)初始化,没有附加推理。
      文本编辑器有问题。

    1. 在任何Linux机器上的安装都应该是相同的。您也可以对Linux Mint执行相同的步骤。因为Mint是基于Ubuntu的,你可能必须安装一个额外的库“libstdc++-arm-none-eabi-newlib”(在安装工具链之后)。

  2. 谢谢你的精彩教程。一切都如你所说。现在我得温习一下C语言编程和编译。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map