北方 发表于 2023-1-6 13:34

【微雪RP2040双核开发板】从MicroPython切换到arduino

<div class='showpostmsg'><p><span style="font-size:16px;">1、RP2040的丰富开发环境中,Arduino是一个不可缺少的选择。因为采用了独特的bootloader,所以和其他的arduino兼容开发板稍微有些不同。在开始之前,首先要下载安装Arduino,最新的Arduino已经切换到了2.x的版本,原来的1.x版本都还正常,这个2.x版本采用了新的框架,和VScode有相似的地方,不过,看起来就不是很传统和舒服,而且编译速度好像也有些慢。不过,跟紧潮流还是要用最新的。</span></p>

<p></p>

<p><span style="font-size:16px;">然后需要安装开发板支持环境,首先需要设定,开发板的源</span></p>

<pre>
<code>https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json</code></pre>

<p>&nbsp; 然后就可以在开发板的Board manager管理器中找到RP2040选项,安装即可。可以看到,支持的衍生类型非常多</p>

<p></p>

<p><span style="font-size:16px;">2、连接开发板</span></p>

<p><span style="font-size:16px;">在Arduino中连接开发板有3个选项,genetic,pico-probe,pico-debug。如果不是特殊需要调试的功能,选择genetic通用的 就可以的。</span></p>

<p> 这次是一次成功,直接把arduino的范例程序编译后的二进制文件直接下载到RP2040,所以显示成功,没有报错。但是,实际上,总是有很大概率不成功的。对此,官网有个解决方法。</p>

<p>就是依次选择Sketch&gt;Export Comile Sketch,这样就生产了标准的二进制文件,在Sketch&gt;Show Sketch Folder ,打开所在目录,这里出现了其他arduino目录不曾出现的build目录</p>

<p>&nbsp; build目录下有多个格式的二进制文件,RP2040使用的是uf2格式的,</p>

<p>&nbsp; 在不能直接下载成功的情况下,就需要手动按boot键,进入boot模式,把这个uf2文件拖曳进去,就可以起到下载的作用、</p>

<p>这个流程其实最主要的是展示了RP2040的编译过程,就是对于C++ 语言,就是编译成uf2格式的二进制文件,然后用内部的软指令,启动一个boot模式的下载过程,然后自举重启,实现了自动执行的过程。</p>

<p><span style="font-size:16px;">3、关于使用arduino的开发</span></p>

<p><span style="font-size:16px;">因为RP2040开放的是标准的UART,PIO,SPI,I2C接口,因此,所有的开发代码,都可以从MicroPython逐行对照翻译过去,实现相同的功能。基本上不需要特殊的代码库,也不需要MicroPython所需要的Machine Class 类,用Arduino的底层驱动可以直接完成。</span></p>

<p>使用基本的UART访问控制代码</p>

<pre>
<code>// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1);      // delay in between reads for stability
}</code></pre>

<p>显示下载成功</p>

<p><span style="font-size:16px;">4、 通过上述的操作,可以用更普及的Arduino进行开发,实现更多的功能。不过,其中关于thread访问双核的功能就无法实现的。因为暂时,还没有支持双核的库。这样的过程,可以用arduino开发出兼顾开发便捷和编译效率的代码。</span></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>

lugl4313820 发表于 2023-1-6 14:25

楼主那是多才多艺,帖子写得非常好,学习了!
页: [1]
查看完整版本: 【微雪RP2040双核开发板】从MicroPython切换到arduino