RVB2601开发板上有一颗供用户使用的三色RGB灯,可以用它来熟悉GPIO的编程。
一、确定引脚
通过查看原理图,可以确定RGB灯的脚位,如下:
其实板载的RGB灯引脚做的非常灵活,并没有直接与MCU相连,而是接在了J3连接器上,因此可以通过跳线接在任意的MCU引脚上。
开发板出厂默认用跳线短接了J3的5脚和6脚,7脚和8脚;也就是,出厂默认LED_GREEN接在PA25,LED_BULE接在PA4,但是LED_RED并没有分配引脚,所有,如果想要使用红色LED灯,必须要手动跳线。当然最简单的方法是跳线帽短接PA7和LED_RED,将红色LED引脚分配到PA7。本次实验,我们就将红色LED接在PA7。
另外,也可以通过RVB2601开发板的用户手册看出来LED接在哪里,如下:
上面很容易就能看出三色LED接在J3连接器上。
二、接口分析
如果我们要控制LED的点亮和熄灭,就需要知道如何去操作gpio端口,可以通过官网的在线文档教程来寻找使用方法。
在文档GPIO_PIN设备这一节很详细描述了所有与GPIO_PIN设备相关的接口及使用方法。
如果只是控制LED的亮灭,只需要用到如下四个接口就可以了:
三、软件编程
直接在Helloworld例程上进行增加led的控制。
1、新建文件夹命令为led,然后在led文件夹下新建两个文件:led.c,led.h ,如下:
2、调用接口进行端口初始化:
static void led_gpio_init()
{
csi_pin_set_mux(PA4, PIN_FUNC_GPIO); //blue led
csi_gpio_pin_init(&pin_blue_led, PA4);
csi_gpio_pin_dir(&pin_blue_led, GPIO_DIRECTION_OUTPUT);
csi_gpio_pin_mode(&pin_blue_led, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_write(&pin_blue_led, GPIO_PIN_HIGH);
csi_pin_set_mux(PA7, PIN_FUNC_GPIO); //red led
csi_gpio_pin_init(&pin_red_led, PA7);
csi_gpio_pin_dir(&pin_red_led, GPIO_DIRECTION_OUTPUT);
csi_gpio_pin_mode(&pin_red_led, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_write(&pin_red_led, GPIO_PIN_HIGH);
csi_pin_set_mux(PA25, PIN_FUNC_GPIO); //green led
csi_gpio_pin_init(&pin_green_led, PA25);
csi_gpio_pin_dir(&pin_green_led, GPIO_DIRECTION_OUTPUT);
csi_gpio_pin_mode(&pin_green_led, GPIO_MODE_PUSH_PULL);
csi_gpio_pin_write(&pin_green_led, GPIO_PIN_HIGH);
}
3、编写流水灯程序
循环点亮LED灯:
void led_flash(void)
{
static led_control = 0;
if(led_control == 0)//red led on
{
csi_gpio_pin_write(&pin_blue_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_green_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_red_led, GPIO_PIN_LOW);
led_control = 1;
}
else if(led_control == 1)//green led on
{
csi_gpio_pin_write(&pin_blue_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_red_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_green_led, GPIO_PIN_LOW);
led_control = 2;
}
else if(led_control == 2)//blue led on
{
csi_gpio_pin_write(&pin_red_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_green_led, GPIO_PIN_HIGH);
csi_gpio_pin_write(&pin_blue_led, GPIO_PIN_LOW);
led_control = 0;
}
}
4、指定头文件包含路径:
编译下载,三色LED轮流闪烁,完全符合预期。
本帖最后由 xinmeng_wit 于 2022-3-6 21:30 编辑