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

简介: 基于RVB2601的跑马灯程序是利用通过控制一颗RGB LED灯珠实现三色跑马灯效果。建议在在看本文之前,先详细看下RVB2601资源。本例程名为ch2601_marquee_demo,可以通过CDK直接从OCC拉取。
  1. 前言

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

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

  1. 硬件配置

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

  1. 跑马灯开发

3.1 例程下载
打开CDK,点击HOME图标,查找ch2601_marquee_demo后,打开工程可以看到以下目录image.png

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. 编译运行
编译通过后,点击下载成功,复位运行。可看左下角的灯依次闪烁。image.png

  1. 总结

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

相关文章
|
存储
微信小游戏开发实战14-闯关模式的实现
本文主要内容是介绍精致1010闯关模式的设计和实现思路。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
174 0
|
小程序 JavaScript 前端开发
微信小程序 | 酷炫时钟样式整理【附源码】
微信小程序 | 酷炫时钟样式整理【附源码】
506 0
微信小程序 | 酷炫时钟样式整理【附源码】
|
传感器 网络协议 物联网
应用实战精解系列(二十):RVB2601之YoC系统
应用实战精解系列(二十):RVB2601之YoC系统
501 0
|
编解码 C语言 开发者
应用实战精解系列(十五):基于RVB2601移植U8g2图形库
应用实战精解系列(十五):基于RVB2601移植U8g2图形库
854 0
应用实战精解系列(十五):基于RVB2601移植U8g2图形库
|
芯片 内存技术
应用实战精解系列(五):基于RVB2601的Web播放器
应用实战精解系列(五):基于RVB2601的Web播放器
318 0
应用实战精解系列(五):基于RVB2601的Web播放器
|
物联网 芯片 开发者
RVB2601应用开发实战系列二: 跑马灯实例教程
技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。
143 0
RVB2601应用开发实战系列二: 跑马灯实例教程
|
IDE 网络协议 Unix
RVB2601应用开发实战系列六:网络播放器设计(二)
技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。
369 0
RVB2601应用开发实战系列六:网络播放器设计(二)
|
编解码 物联网 Linux
RVB2601应用开发实战系列五: 网络播放器设计(一)
技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。
220 0
RVB2601应用开发实战系列五: 网络播放器设计(一)
HarmonyOS实战—实现跑马灯效果
HarmonyOS实战—实现跑马灯效果
280 0
HarmonyOS实战—实现跑马灯效果
|
IDE 物联网 定位技术
HaaS EDU场景式应用学习 - 飞机大战
HaaS EDU场景式应用学习 - 飞机大战
HaaS EDU场景式应用学习 - 飞机大战