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灯,从而实现依次闪烁,达到跑马灯的效果。后续还有更多的开发例程,敬请期待!

相关文章
|
JavaScript 前端开发 Java
基于springboot的留守儿童爱心网站
这是一个基于SpringBoot的留守儿童爱心网站,包含管理员和用户两种角色。管理员负责用户、新闻、志愿活动、捐赠等管理;用户可进行登录注册、爱心捐赠及活动报名。项目采用SpringBoot与Mybatis作为后端框架,前端则使用HTML和VUE。适用于JDK1.8、IDEA/Eclipse、MySQL5.7/8.x,无需特定Tomcat或Maven版本,支持Windows系统。
221 13
基于springboot的留守儿童爱心网站
|
安全 Java
Java基础面试十四】、 封装的目的是什么,为什么要有封装?
这篇文章讨论了封装在面向对象编程中的目的,强调封装可以隐藏类的实现细节,通过方法控制对数据的访问,保证数据完整性,并提高代码的可维护性。
Java基础面试十四】、 封装的目的是什么,为什么要有封装?
|
存储 安全 芯片
封装之打线简介
介绍封装打线的原理,常用材料的优缺点,关键部件,wire bonding 过程,主要参数,线形,线长和主要测试方法。
13058 3
封装之打线简介
|
Dubbo Java 应用服务中间件
nacos常见问题之dubbo的耗时严重如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
722 0
|
SQL 存储 开发框架
Entity Framework Core 与 SQL Server 携手,高级查询技巧大揭秘!让你的数据操作更高效!
【8月更文挑战第31天】Entity Framework Core (EF Core) 是一个强大的对象关系映射(ORM)框架,尤其与 SQL Server 数据库结合使用时,提供了多种高级查询技巧,显著提升数据操作效率。它支持 LINQ 查询,使代码简洁易读;延迟加载与预先加载机制优化了相关实体的加载策略;通过 `FromSqlRaw` 或 `FromSqlInterpolated` 方法支持原始 SQL 查询;可调用存储过程执行复杂任务;利用 `Skip` 和 `Take` 实现分页查询,便于处理大量数据。这些特性共同提升了开发者的生产力和应用程序的性能。
555 0
|
SQL 存储 JSON
Flink+Paimon+Hologres 构建实时湖仓数据分析
本文整理自阿里云高级专家喻良,在 Flink Forward Asia 2023 主会场的分享。
72431 8
Flink+Paimon+Hologres 构建实时湖仓数据分析
|
JavaScript 开发工具 git
使用TS+rollup打造一个npm工具库
使用TS+rollup打造一个npm工具库
411 0
WAT测试介绍
本文只要介绍芯片WAT的测试环境,测试结构,测试机台,测试标准,测试项目以及测试的意义。
WAT测试介绍
|
JavaScript 小程序
JS控制input输入特殊字符
JS控制input输入特殊字符
172 0
|
关系型数据库 MySQL 测试技术
MySQL · 最佳实践 · 一个TPC-C测试工具sqlbench使用
TPC-C是数据库系统经常使用的一个性能测试标准,目前开源社区里有几个可以使用的TPC-C测试工具,如BenchmarkSQL、DBT2、 tpcc-mysql等。今天这里要介绍的是另一个TPC-C测试工具: sqlbench。
4057 0