写点什么

RVB2601 应用开发实战系列二: 跑马灯

发布于: 2 小时前
RVB2601应用开发实战系列二: 跑马灯

关键词:RVB2601、RISC-V 开发板、例程,低功耗,玄铁 E906,RISC-V MCU,上手,好用,控制,WiFi&BLE


1. 前言

基于 RVB2601 的跑马灯程序是利用通过控制一颗 RGB LED 灯珠实现三色跑马灯效果。


建议在在看本文之前,先详细看下RVB2601资源。本例程名为 ch2601_marquee_demo,可以通过 CDK 直接从 OCC 拉取。


2. 硬件配置

三色 LED 通过 PIN 引脚 PA7、PA25、PA4 与 CH2601 主芯片 GPIO 控制器连通,主控可以通过对 PA7、PA25 和 PA4 的 GPIO PIN 的操作,可以实现三色 LED 不同颜色的闪烁。LED 硬件原理图如下:


3. 跑马灯开发

3.1 例程下载

打开 CDK,点击 HOME 图标,查找 ch2601_marquee_demo 后,打开工程可以看到以下目录


3.2 LED 配置

  • led_pinmux_init

该功能函数位于 app/src/led.c, 用于初始化三色 LED 灯的 IO 管脚。配置三色灯的 PA7、PA25 和 PA4 为 IO 模式,为每个 IO 管脚配置 PWM 通道以及占空比时间。

void led_pinmux_init(){        //7    csi_pin_set_mux(PA7, PA7_PWM_CH7);    csi_pin_set_mux(PA25, PA25_PWM_CH2);    csi_pin_set_mux(PA4, PA4_PWM_CH4);    ret = csi_pwm_init(&r, 0);    ret = csi_pwm_out_config(&r, 7 / 2, 300, 100, PWM_POLARITY_HIGH);    ret = csi_pwm_out_start(&r, 7 / 2);        //25    ret = csi_pwm_out_config(&r, 2 / 2, 300, 100, PWM_POLARITY_HIGH);    ret = csi_pwm_out_start(&r, 2 / 2);        //4    ret = csi_pwm_out_config(&r, 4 / 2, 300, 100, PWM_POLARITY_HIGH);    ret = csi_pwm_out_start(&r, 4 / 2);}
复制代码


  • led_refresh

该功能函数位于 app/src/led.c, 用于依次闪烁 LED。利用 g_ctr 计数器来判断闪烁 LED 灯。通过操作三根 IO 管脚来确定显示指定颜色的灯。

void led_refresh(){    g_ctr++;    if (g_ctr == 3) {            g_ctr = 0;    }    if (g_ctr == 0)    {        csi_pwm_out_start(&r, 7 / 2);        csi_pwm_out_stop(&r, 2 / 2);        csi_pwm_out_stop(&r, 4 / 2);    }    else if (g_ctr == 1)    {                csi_pwm_out_start(&r, 2 / 2);        csi_pwm_out_stop(&r, 7 / 2);        csi_pwm_out_stop(&r, 4 / 2);    }    else //2    {        csi_pwm_out_start(&r, 4 / 2);        csi_pwm_out_stop(&r, 7 / 2);        csi_pwm_out_stop(&r, 2 / 2);    }}
复制代码


  • demo_task

该功能函数位于 app/src/main.c, 用于周期性点亮 LED 灯,在主函数里调用。

static void demo_task(void *arg){    lv_init();    oled_init();    lable_test();    led_pinmux_init();    while (1)    {        lv_task_handler();        udelay(1000 * 1000);        lv_tick_inc(1);        led_refresh();    }}
复制代码


3.3. 编译运行

编译通过后,点击下载成功,复位运行。可看左下角的灯依次闪烁。


4. 总结

本例程介绍了如何通过 CSI 接口配置 IO 管脚来控制 LED 灯,从而实现依次闪烁,达到跑马灯的效果。后续还有更多的开发例程,敬请期待!


本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/store/board?channelName=1

用户头像

还未添加个人签名 2021.08.24 加入

还未添加个人简介

评论

发布
暂无评论
RVB2601应用开发实战系列二: 跑马灯