目录
目录
供电
程序编写与编译
串口输入输出
串口监听
程序烧写
可使用pico最顶端的USB接口供电,或使用37号(3V3_EN)、36号(3V3(OUT))两个引脚供电。
资料显示,pico可以兼容3.3V和5V的电压输入。平常用手机充电线或者充电宝供电即可,将它嵌入电路的话需要额外注意。
可使用Arduino IDE编写并编译程序。
Arduino IDE下载地址
Software | Arduino
进入后默认是英文界面。
在左上角菜单处找到File,点击Preferences,在Language处选择最下面的中文简体即可将IDE切换为中文。
在上方选择pico对应的串口和开发板类型。在搜索开发板时,直接搜索pico即可。两个结果里面随便选一个。
IDE默认设置了两个函数,一个是setup,用于初始化。一个是loop,用于循环运行代码。
setup只会在pico启动时运行一次,之后会死循环运行loop。
编写好程序后,可以点击左上角的“√”测试程序。该按钮只会编译程序,不会将其写入pico。测试完成后,可以选择左上角中间的“→”将程序烧写到pico中。
在编写好项目后,务必将项目保存,否则下次打开时会重新生成默认的setup和loop,之前写的代码也会丢失。
IDE没有向项目中添加文件的功能。可以在保存的项目目录下手动添加,IDE会正常识别。如添加c++头文件等。
若要包含本地自己编写的文件,必须将其放入保存的项目目录下。IDE没有调整gcc参数的功能。
使用Arduino内置的Serial类,可以很方便地使用串口进行输入输出。下面给出用串口输出"Hello world"的实例。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("Hello world\n");
}
其中Serial.begin用于初始化串口,并设置波特率。Serial.print用于输出。Arduino简化了串口设备的操控,Serial.print可以输入int、char*、char、double等各种类型的数据。
结果如下:
因为arduino会一直运行loop函数,所以输出的Hello world不止一个。
如果要读取串口输入,可以使用Serial.read方法。这也是一个重载过很多次的方法,可以类比stdio.h中的getchar使用,此处不再展开。
在菜单栏的“工具”中可以找到“串口监视器”。设置好波特率之后便可使用。该监视器提供了向串口发送消息的功能,但是不能发送换行符,编写程序的时候需要注意。
该监视器不支持创新屏幕,需要手动关闭后再次打开。
经过实践,目前来说没有发现波特率有什么用。
可以使用arduino自带的生态进行引脚操控,此处不赘述。
使用Arduino IDE可以直接包含pico.h头文件
#include
pico中,引脚是通过代号操控的。如pico上自带的LED灯的引脚代号是25。这个可以通过查表得知。实际上,实际开发中多用pico.h中定义的宏。如pico自带LED灯对应的宏为PICO_DEFAULT_LED_PIN。
之后使用_gpio_init函数初始化引脚,用gpio_set_dir函数设置引脚模式。
_gpio_init(pin);
gpio_set_dir(pin, GPIO_OUT);
pin处以对应的变量名代替,GPIO_OUT则是一个pico.h中定义的宏,表示输出。对应的,GPIO_IN表示输入。
之后用gpio_put写入引脚,gpio_get读取引脚。
可使用Arduino IDE自带的上传功能,或使用pico官方设计的烧录方法:
先将USB线从接口拔出,长按pico上的BOOTSEL键并将线插入USB口,之后计算机会把pico识别为大容量U盘设备,此时可以松开BOOTSEL键了。将编译好的uf2文件拖入该设备,pico会自动将其烧写入闪存。实践中发现只要在插入USB线时摁住BOOTSEL键,大概率都可以识别。因为那个按键按起来比较蛋疼,可以自己把握。
如果使用Arduino烧写失败,可以更换USB线或插口。尝试失败后,可在菜单栏“项目”中选择“导出已编译的二进制文件”,之后在项目目录中找到编译好的uf2文件,之后用第一段中介绍的方法将其烧写入pico中。
在导出已编译的二进制文件前,务必将项目保存到方便寻找的地方。不然我也不知道IDE将文件导出到哪里了。