lb8820265 发表于 2023-10-17 22:14

45“万里”树莓派小车——PicoW学习(C语言环境搭建、新建工程、在线调试)

<div class='showpostmsg'> 本帖最后由 lb8820265 于 2023-10-17 22:13 编辑

<h2><span style="font-size:18px;"><b>1. PicoW简介</b></span></h2>

<p>&nbsp;<span style="font-size:16px;"> &nbsp; &nbsp; &nbsp;PicoW就是Cortex-M0+内核的RP2040芯片加上一个CYW43439蓝牙WiFi双模芯片的核心板。主频最高可到133Mhz,内置264KB的 SRAM和2MB的板载内存,板子外形和相关外设如下图所示。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:18px;"><b>2. C语言环境搭建</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;网上大多是Pico W的python语言环境的搭建,但是据我了解在实时性和功能完整性上C/C++语言是要远远好于python语言环境的,所有我选择使用C/C++语言来开发Pico W,好在<a href="https://www.raspberrypi.com/products/raspberry-pi-pico/" target="_blank">官方有教程</a>。主要参考的文档为《getting-started-with-pico》和《connecting-to-the-internet-with-pico-w》。</span></p>

<p><span style="font-size:16px;"><b>Windows系统安装开发环境</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;Pico可以在多个操作系统中进行开发,但还是习惯在Windows下进行开发,在该GitHub仓库的介绍文档连接中<a href="https://github.com/raspberrypi/pico-setup-windows/releases/latest/download/pico-setup-windows-x64-standalone.exe" target="_blank">下载安装包</a>,直接双击安装,Pico的例程和VSCode开发环境也会一并进行安装。并且会生成一个专属Pico的VSCode环境的快捷方式,在开始菜单中&ldquo;Pico - Visual Studio Code&rdquo;。打开该VSCode会自动加载Pico的例程。</span></p>

<p><span style="font-size:16px;"><b>编译工程</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;首先确认编译工具选择&ldquo;pico ARM GCC&rdquo;或者&ldquo;GCC 10.3.1 arm-nome-eabi&rdquo;,VSCode软件最下面可以查看,函数库是默认使用的Pico硬件,WiFi和蓝牙相关例程是没有编译的,而且blink程序在PicoW上面也是不可以用的,可以在任意一个配置文件中添加使用PicoW设置和WiFi配置,例如在例程根目录的&ldquo;CMakeLists.txt&rdquo;文件中添加如下设置,SSID和Password需要根据实际的WiFi名和密码修改。</span></p>

<pre>
<code class="language-apache">set(PICO_BOARD pico_w)
set(WIFI_SSID lb8820265)
set(WIFI_PASSWORD lb8820265)</code></pre>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;在软件左边栏选择&ldquo;CMake&rdquo;,在最上方点击编译按钮可以编译所有工程,也可以在单个工程右边点击编译按钮,编译单个工程。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; 以blink程序为例,编译后的文件如下。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;"><b>烧录工程</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; Pico可以像ST的NUCLEO开发板一样将生成的文件直接拖入到文件夹中就完成了烧录。不过Pico需要在插入USB的时候先按着板子上的&ldquo;BOOTSEL&rdquo;按钮。使用USB线连接板子和电脑,然后就出现一个新的盘符,像一个U盘一样,将编译生成的&ldquo;*.uf2&rdquo;文件复制到新的盘符里面就可以了,会自动运行,看到LED一闪一闪了。</span></p>

<h2><span style="font-size:18px;"><b>3. 新建工程</b></span></h2>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; Pico有两种方式新建工程,一种是通过命令行的方式,另一种通过自动工程工具&ldquo;pico project generato&rdquo;生成。<a href="https://github.com/raspberrypi/pico-project-generator" target="_blank">工具网址</a>,下载后该工具不能直接运行,需要使用命令启动,在系统搜索栏中搜索&ldquo;Pico-Developer Command Prompt&rdquo;运行。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; 转入进入到下载的软件目录中,例如:</span></p>

<pre>
<code class="language-bash">cd pico-project-generator-master</code></pre>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; 输入如下指令运行软件:</span></p>

<pre>
<code class="language-bash">py pico_project.py --gui</code></pre>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;进入到软件界面,&ldquo;Board Type&rdquo;选择&ldquo;Pico W&rdquo;,其他的按需选择,最下面的&ldquo;Create VSCode project&rdquo;不需要勾选,因为软件自动生成的VSCode工程文件不好用,会导调试不成功。这里作为演示勾选如下配置。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; 从例程中将&ldquo;.vscode&rdquo;文件夹复制到刚刚新建的工程中,如下。</span></p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;使用VSCode软件打开新建工程的文件夹,按照上面的方法进行编译,成功会生成&ldquo;.elf&rdquo;文件,如下。</span></p>

<p> &nbsp;</p>

<h2><span style="font-size:18px;"><b>4. 在线调试</b></span></h2>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;Pico W支持SWD在线调试,需要完成OpenOCD的编译,在Windows环境下为了能编译OpenOCD又需要MSYS2软件。</span></p>

<p><span style="font-size:16px;"><b>MSYS2软件安装</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; 在<a href="https://www.msys2.org/" target="_blank">官网</a>下载并安装该软件,然后打开MSYS软件,是一个类似终端的界面,然后进行输入如下指令进行环境的配置:</span></p>

<pre>
<code class="language-bash">pacman -Syu
pacman -Su
pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo
mingw-w64-x86_64-libusb</code></pre>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p><span style="font-size:16px;"><b>下载编译OpenOCD</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;克隆树莓派仓库里的OpenOCD并且编译。这里要注意一定要通过指令克隆下来,不能在网页上直接下载下来。</span></p>

<pre>
<code class="language-bash">git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1
cd openocd
./bootstrap
./configure --disable-werror
make -j4</code></pre>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;进入src文件夹,运行编译出来的文件,正确的结果如下。</span></p>

<p><span style="font-size:16px;"> &nbsp;</span></p>

<p><span style="font-size:16px;"><b>制作Picoprobe</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;烧录工具可以使用Pico板子制作,也可以使用官方的Raspberry Pi Debug Probe工具,这里使用Pico通过烧录固件来制作一个Picoprobe,固件可以在<a href="http:// https://github.com/raspberrypi/picoprobe.git" target="_blank">官方GitHub</a></span></p>

<p><span style="font-size:16px;">下载源码然后进行编译再烧录,但是我觉得没有必要,也可以直接在<a href="https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html" target="_blank">官网下载</a>&ldquo;picoprobe.uf2&rdquo;文件,该文件在帖子最后也有下载。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;给Pico烧录该固件后,将两个Pico连线如下。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;使用杜邦线连接如下。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;"><b>运行调试</b></span></p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;选择&ldquo;hello_serial&rdquo;例程为例进行在线调试。点击左边栏的调试按钮,再点击绿色三角形,之后会在顶部弹出选择框,分别选择&ldquo;Pico Debug&rdquo;与&ldquo;hello_serial&rdquo;,就可以直接进入调试环境了,打开串口工具就可以看到输出的&ldquo;Hello, world&rdquo;字符串如下。</span></p>

<p> &nbsp;</p>

<p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp;后续如果想要选择其他的例程进行调试,就点击最下面状态栏的进行选择。</span><span style="font-size:16px;">最下面的状态栏指示栏如下。</span></p>

<p> &nbsp;</p>
</div><script>                                var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                               
                                if(parseInt(discuz_uid)==0){
                                                                                        (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                }
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

freebsder 发表于 2023-10-18 14:51

<p>现在开发个单片机也要这么复杂的手续了哇?还是keil,iar好啊。并不是每个人都能折腾这么多乱七八糟的<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

lb8820265 发表于 2023-10-18 19:53

freebsder 发表于 2023-10-18 14:51
现在开发个单片机也要这么复杂的手续了哇?还是keil,iar好啊。并不是每个人都能折腾这么多乱七八糟的

<p>哈哈,你说的真是我的心里话,我也是从keil、iar入门的单片机,那些编译、链接配置啥的都不要考虑,现在这些开源硬件都用免费的开发环境,配置就复杂了起来。</p>

<p>我这个分享的还是使用VSCode来开发还相对好一点,我见过一个大神,国外的一个很老的程序员,只需要一个代码编辑器比如vim,然后所有的操作都用指令来完成,整个写代码过程鼠标都不用,相当的优雅。</p>

plc2099 发表于 2023-10-28 09:02

<p>步骤多了点!!!!</p>

lb8820265 发表于 2023-10-29 22:07

plc2099 发表于 2023-10-28 09:02
步骤多了点!!!!

<p>你说的对,我也感觉,这就是为啥很少有用C语言来编程控制Pico的,但是习惯了也还好,C语言还是有不少优势的。</p>

烟风习习 发表于 2023-11-3 00:03

<p>本书在习题解析过程中给出了解题思想的友情提示,指明解题过程的注意事项,其解题步骤科学、完善,且一题多解,以便相互校核;特别是在对绝大多数习题的解析过程中给出了相应的MATLAB验证程序,</p>

chancy2002 发表于 2024-1-9 12:59

本书在习题解析过程中给出了解题思想的友情提示,指明解题过程的注意事项,其解题步骤科学、完善,且一题多解,以便相互校核;特别是在对绝大多数习题的解析过程中给出了相应的MATLAB验证程序,

wang12011201 发表于 2024-1-14 10:56

<p> GPIOPL жλ 1</p>

LitchiCheng 发表于 2024-1-24 16:55

<p>后面是打算用pico直接pwm控制直流电机做小车吗</p>

lb8820265 发表于 2024-1-24 21:26

LitchiCheng 发表于 2024-1-24 16:55
后面是打算用pico直接pwm控制直流电机做小车吗

<p>应该会用pico做控制底盘,上面还是会用树莓派做图像处理</p>

LitchiCheng 发表于 2024-1-25 09:04

lb8820265 发表于 2024-1-24 21:26
应该会用pico做控制底盘,上面还是会用树莓派做图像处理

<p>然后视觉导航?</p>
页: [1]
查看完整版本: 45“万里”树莓派小车——PicoW学习(C语言环境搭建、新建工程、在线调试)