在Windows下使用C语言开始Raspberry Pi Pico开发
什么是Raspberry Pi Pico:
最近,树莓派基金会推出了一款开发板,名为Raspberry Pi Pico。这是一块小巧快速用途广泛的最小系统开发板,它使用的是树莓派基金会自研的RP2040微控制器。树莓派官网标价为4$,国内购买价格大约30元人民币(不含邮费)。
RP2040微控制器有以下特性:两个ARM Cortex-M0+内核最高频率133MHz、 264KB的内部RAM、DMA控制器,支持挂最高达16MB的片外Flash。它有30个GPIO,4个可以作为模拟输入。外设包含2个UART、2个SPI、2个I2C、16个PWM通道以及一个USB1.1控制器。
Raspberry Pi Pico开发板支持通过C/C++或MicroPython语言进行开发,树莓派基金会官方提供了大量、详细的资料。它有一枚2MByte的SPI Flash用于存储固件,一枚RT6150B作为电源管理,一个Micro-USB接口用于供电和传输数据(包含下载固件)。板子采用40 pin 21x51 'DIP'设计,焊接排针后可以方便的使用在面包板上,同时邮票孔设计可以方便将 Pico 作为核心板贴装到其他电路板上。方便DIY爱好者实验用途的同时也兼顾了商业批量用途时的贴片安装。板子上共有26个3.3V GPIO,其中23个是纯数字IO,3个可以作为ADC使用。另外板子上有一个3Pin的ARM SWD接口用于调试,一个BOOTSEL按钮用于进入固件下载模式。它还有一个板载的LED指示灯连接在GPIO25上。
准备工作:
学习本文内容需要做如下准备:
- Raspberry Pi Pico开发板和MicroUSB数据线,方便下载程序验证。
- 运行Windows10的电脑,其他Win系统笔者无力测试,本文不适用Linux系统。
- 足够的存储空间,建议至少8GB,因为C的工具链中某些工具或库会很大。
警告:以下的某些操作可能对您电脑中现有的某些工具链产生影响,如果您的电脑中有其他重要生产环境,谨慎考虑是否实践本文内容。如果您对此了解,相信您也能够解决遇到的问题。本人不会也没有技术对任何结果负责。
下载固件和体验MicroPython:
新接触到一款MCU或开发板,首先需要研究的就是如何搭建编译环境以及如何下载固件。大多我们需要先搭环境写出点灯程序,然后再进行固件下载。考虑此开发板支持MicroPython,且官方提供了已经编译好的MicroPython固件,在搭建开发环境前,我们可以先体验一番固件下载方式,顺便试一下MicroPython是如何点灯的。我们可以直接在官方如何开始页面,点击Getting Started with MicroPython。然后在网页上点击Download UF2 File下载文件。
文件下载完成后,按住BOOTSEL键,插入连接电脑的USB后松开BOOTSEL键,电脑上会显示一个名为RPI-RP2的大容量存储设备。将MicroPython UF2文件拖放到RPI-RP2卷上。Pico将重新启动,然后就可以使用串口工具连接MicroPython了。
我们可以在设备管理器里看到开发板串口的端口号,然后我们使用串口工具连接端口,波特率为9600。连接后可以按Ctrl+D软重启,此时应该可以看到相关提示信息。如下:
MPY: soft reboot
MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>
官方推荐了Thonny,可以点击其官网右上角超链接下载最新版本。安装后点击工具
》设置
,在解释器选项卡下设置解释器为Pico,并正确设置端口号。即可在下面的Shell窗口中看到提示信息。
逐行输入以下代码(>>>忽略)可以点亮板上LED:
>>> from machine import Pin
>>> led = Pin(25, Pin.OUT)
>>> led.value(1)
如果硬件正常,操作没有问题,此时板载LED已经点亮。我们便学会了如何下载固件和使用MicroPython点亮LED灯。如果想继续学习MicroPython,可参阅官方文档。
搭建C/C++编译环境:
安装工具链:
搭建编译环境的环节是必不可少的。我们首先按照文档说明安装工具链(Toolchain)。
我们需要安装的工具有:
- ARM GCC compiler(Windows 系统下载gcc-arm-none-eabi-XX-20XX-XX-major-win32.exe)
- CMake
- Build Tools for Visual Studio 2019(从下方的所有下载处展开VS2019工具,选择下载生成工具)
- Python 3(需要下载Python3,而不是Python2)
- Git
注意:
- ARM GCC compiler安装过程的最后一步,需要勾选
Add path to environment variable
,然后再点Finish完成安装;CMake安装过程中,InstallOptions页面要选择Add Cmake to the system PATH for all users。如果以上两个环境变量相关设置不正确,则会导致编译过程相关命令无法调用而失败。 - 通过VS2019生成工具下载器安装生成工具的时候,只需要在工作负载中勾选
安装C++ 生成工具
即可,其他不需要选择。右侧的可选功能会自动帮你选好,不要取消勾选 。也不要对存储空间占用有怀疑,这套工具确实非常大。 - 安装Python时需要选择Customize installation,然后在Advance Options页勾选Install for all users、Add Python to environment variables,并设置安装路径,最后点击Install开始安装,安装完成后还需要点击Disable path length limit以允许忽略MAX_PATH限制。
- 安装Git时,树莓派基金会官方文档做了如下要求(建议):需要换掉默认的vim编辑器,比如我换成了notepad++(因为使用vim需要极强的专业性,Git本身也建议换掉,但感觉是非必须项);后面的设置需要勾选third-party tools,勾选Checkout as is, commit as-is,还需要勾选Enable experimental support for pseudo consoles。
获取SDK和样例:
参考以下代码使用Git获取SDK和样例,具体使用的文件目录按情况自行配置:
C:\Users\pico\Downloads> git clone -b master https://github.com/raspberrypi/pico-sdk.git
C:\Users\pico\Downloads> cd pico-sdk
C:\Users\pico\Downloads\pico-sdk> git submodule update --init
C:\Users\pico\Downloads\pico-sdk> cd ..
C:\Users\pico\Downloads> git clone -b master https://github.com/raspberrypi/pico-examples.git
在开始菜单中搜索(我习惯搜索Dev),找到Developer Command Prompt for VS 2019
并启动它,然后在里面运行以下命令设置SDK路径(引号中的具体路径按实际情况填写):
C:\Users\pico\Downloads> setx PICO_SDK_PATH "..\..\pico-sdk"
关闭当前的窗口,重新打开Developer Command Prompt for VS 2019
,这样环境变量应该就生效了。
导航到pico-examples目录下,通过以下命令尝试编译样例项目,以验证编译工具链是否正确配置:
C:\Users\pico\Downloads> cd pico-examples
C:\Users\pico\Downloads\pico-examples> mkdir build
C:\Users\pico\Downloads\pico-examples> cd build
C:\Users\pico\Downloads\pico-examples\build> cmake -G "NMake Makefiles" ..
C:\Users\pico\Downloads\pico-examples\build> nmake
如果没有错误,能够正常完成编译,能够在pico-examples\build下看到uf2文件,并且按照前文的方式将固件下载到Pico中后LED按照1s周期闪烁。即表示编译工具链可正常工作。
注意:以上必须使用Developer Command Prompt for VS 2019
而不是系统自带的命令提示符,因为使用此工具会自带相关环境变量,而系统的命令提示符没有,使用系统的命令提示符执行操作无法成功编译。
自建工程:
确认编译工具链正常后,我们便可以开始尝试写一个自己的工程了,这在SDK的RADEME.md文件中有介绍。文档中的介绍是基于Linux系统的,但没关系,工程的目录结构是通用的,我们可以参考。以下我们参考文档建一个闪灯程序。
-
在合适的地方新建一个文件夹,以工程名字命名,名字建议避免使用中文和特殊符号。此处我命名为:
Blinks
。在文件夹内再建一个名为build
的文件夹,用于存储编译后的文件。 -
将
pico-sdk
中external
文件夹下的pico_sdk_import.cmake
复制到工程文件夹下(即Blinks下)。 -
在
Blinks
文件夹下建立名为blinks.c
的源代码文件,在此文件中编写程序源代码。比如闪灯程序源代码如下:#include "pico/stdlib.h" const uint LED_PIN = 25; int main() { gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); while (true) { gpio_put(LED_PIN, 1); sleep_ms(100); gpio_put(LED_PIN, 0); sleep_ms(100); } }
-
在工程文件夹下创建
CMakeLists.txt
文件,内容参考如下。以#
开始的行是注释,用于解释,编写代码时请勿直接抄写,建议使用英文注释。cmake_minimum_required(VERSION 3.12) # 引入SDK (必须写在下面的project行前) include(pico_sdk_import.cmake) # 工程名,比如Blinks project(Blinks) # 初始化SDK pico_sdk_init() #添加项目的源文件,比如此处我们添加的blinks.c源文件 add_executable(blinks blinks.c ) # 引入pico_stdlib库 target_link_libraries(blinks pico_stdlib) # 创建map/bin/hex 等文件. pico_add_extra_outputs(blinks)
-
打开
Developer Command Prompt for VS 2019
,通过以下命令编译项目。C:\Users\pico\Downloads> cd Blinks C:\Users\pico\Downloads\Blinks> cd build C:\Users\pico\Downloads\Blinks\build> cmake -G "NMake Makefiles" .. C:\Users\pico\Downloads\Blinks\build> nmake
-
如果一切正常,我们便可以在build文件夹下得到项目编译产生的文件,其中的uf2文件可以按前文方法下载到Pico开发板中验证,看运行结果是否与代码设计一致。
结语:
至此,我们便学会了Raspberry Pi Pico开发板点灯,后面具体可参考树莓派基金会官方提供的相关文档学习。祝大家学习顺利。
参考:
- 官方产品页:https://www.raspberrypi.org/products/raspberry-pi-pico/
- Getting-started:https://www.raspberrypi.org/documentation/pico/getting-started/
- Pico-SDK代码:https://github.com/raspberrypi/pico-sdk
- Pico-example代码:https://github.com/raspberrypi/pico-examples
博主你好,我原本已有vs2017的生成工具,请问不安装2019生成工具可以吗?
我不懂这个东西编译的原理,没办法回到这个问题。我估计是不行吧。但是可以先装好其他工具试一下,其他工具的安装并不复杂。
好像vscode也行
VS Code算是个编辑器吧,它还是需要调用前面配置好的编译工具链,即ARM GCC编译器、CMake、VS生成工具和Python3。我用VS Code配合CMake插件试了一下,发现只有第一次编译可以正常进行,再次点击编译会失败,需要手动把上次编译的文件删除才可以再次编译。不懂是我配置有误、还是不会用、抑或是就这样。