接下来我们将依据学习资料中的工程进行本次开发,本章节要实现的功能是编程实现LED灯的闪烁,作为单一功能,本次不实现呼吸灯,所以就相当于是点灯了。不要看不起点灯,实际上这个看似最简单的操作才是万事的开始,做容易验证你的基础程序行不行,所以对于一个不熟悉的单片机或者开发板,了解完开发环境后就是要实现点灯。
我们看一下板载LED的硬件原理部分:

可以看到,使用的是GPIO25引脚;
我们来到工程中看一下,老师对相关的引脚进行了初始化封装,不过我们还是要深入了解一下,
有关LED的操作如下:
#define PICO_LED_PIN 25
void LED_init(){
gpio_init(PICO_LED_PIN);
gpio_set_dir(PICO_LED_PIN, GPIO_OUT);
}
void LED_ON(){
gpio_put(PICO_LED_PIN, 0);
}
void LED_OFF(){
gpio_put(PICO_LED_PIN, 1);
}进一步探索SDK中关于引脚配置的说明,类似:
static inline void gpio_set_dir(uint gpio, bool out) {
uint32_t mask = 1ul << gpio;
if (out)
gpio_set_dir_out_masked(mask);
else
gpio_set_dir_in_masked(mask);
}发现该SDK中的配置相对常用的单片机的配置内容少了很多,也可以说是明确了很多,这方面是不是也是树莓派开发便捷的关键所在呢?
到这里我们就基本上了解了有关GPIO的相关操作,实际上模式都是超不多,先初始化,然后就可以操作了,接下来我们编写实现500ms间隔的LED闪烁:
while (true) {
LED_ON();
MY_DEV_Delay_ms(500);
LED_OFF();
MY_DEV_Delay_ms(500);
}编译下载注意一下,我们进入下载模式后,只要编译后就自动直接往模拟盘(PRI-RP2)中复制uf2文件,也就是说编译完直接就下载了,需要修改一下批文件(axf2uf2.bat),与模拟盘对应:

效果如下:

我要赚赏金
