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

简介: 技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。

编辑语:

技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。

RVB2601是基于平头哥RISC-V生态芯片的开发套件,开发者基于RVB2601可进行端云一体的物联网应用开发及音频方案开发。上周向大家推荐了RVB2601应用开发实战系列一: Helloworld最小系统,本周我们将继续推荐RVB2601应用开发实战系列。今天为大家介绍如何基于RVB2601实现跑马灯例程。

一. 前言  

基于RVB2601的跑马灯程序是利用通过控制一颗RGB LED灯珠实现三色跑马灯效果。议在在看本文之前,先详细看下新手必看 | RVB2601开发板快速上手指南本例程名为ch2601_marquee_demo,可以通过集成开发环境剑池CDK下载获取相应资源。

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

image.png


三. 跑马灯开发

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通道以及占空比时间。

1. void led_pinmux_init()
2. {
3. csi_pin_set_mux(PA7, PA7_PWM_CH7);
4. csi_pin_set_mux(PA25, PA25_PWM_CH2);
5. csi_pin_set_mux(PA4, PA4_PWM_CH4);
6. ...
7. }
c
  • led_refresh

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

1. void led_refresh()
2. {
3. if (g_ctr == 3) {
4. g_ctr = 0;
5. }
6. if (g_ctr == 0)
7. {
8. csi_pwm_out_start(&r, 7 / 2);
9. csi_pwm_out_stop(&r, 2 / 2);
10. csi_pwm_out_stop(&r, 4 / 2);
11. 
12. }
13. else if (g_ctr == 1)
14. {
15. csi_pwm_out_start(&r, 2 / 2);
16. csi_pwm_out_stop(&r, 7 / 2);
17. csi_pwm_out_stop(&r, 4 / 2);
18. 
19. }
20. else //2
21. {
22. csi_pwm_out_start(&r, 4 / 2);
23. csi_pwm_out_stop(&r, 7 / 2);
24. csi_pwm_out_stop(&r, 2 / 2);
25. 
26. }
27. }
c
  • demo_task

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

1. static void demo_task(void *arg)
2. {
3. lv_init();
4. oled_init();
5. lable_test();
6. led_pinmux_init();
7. 
8. while (1)
9. {
10. lv_task_handler();
11. udelay(1000 * 1000);
12. lv_tick_inc(1);
13. led_refresh();
14. }
15. }
c

3.3. 编译运行

编译通过后,点击下载成功,复位运行。可看右下角的灯依次闪烁。参见如下视频演示

image.png


4. 总结

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


相关文章
|
7月前
|
人工智能
替代你的不是AI,而是会使用AI的人——生成式人工智能(GAI)认证成为职场新宠
在AI技术飞速发展的数字化时代,职场环境正经历深刻变革。生成式人工智能(GAI)认证的出现,为职场人士提供了提升自我、证明能力的新途径。由培生推出的GAI认证,涵盖核心技能与伦理知识,助力求职者脱颖而出。它不仅是职场晋升的加速器,还为企业认可的专业能力背书。拥抱AI、学习AI,通过GAI认证,让自己成为掌握AI技术的领先者,在竞争中保持优势。
【Java基础面试三十四】、接口中可以有构造函数吗?
这篇文章讨论了Java中接口不能包含构造函数的原因,主要解释了接口中的成员变量默认是public static final类型的常量,不需要通过构造函数初始化,且接口本身不能被实例化,因此构造函数在接口中没有意义。
|
自然语言处理 监控 机器人
自然语言处理中的语义理解和生成技术
【8月更文第18天】自然语言处理(NLP)是计算机科学的一个重要分支,其目标是使计算机能够理解、解析和生成人类语言。近年来,基于Transformer架构的预训练模型(如BERT、GPT系列)已经极大地推动了NLP的发展。本文将探讨这些模型在对话系统、文本生成、情感分析等领域的应用,并讨论相关技术挑战。
679 1
|
12月前
|
安全 定位技术 数据安全/隐私保护
|
Rust 前端开发 iOS开发
打造《黑神话:悟空》壁纸软件:使用 Tauri 快速上手
本文首发于微信公众号“前端徐徐”。作者分享了如何仅用半天时间实现《黑神话:悟空》桌面壁纸软件的过程,并展示了实际效果。文中详细介绍了使用 Tauri 开发跨平台桌面应用的核心流程与关键技术,包括下载壁纸、更换壁纸以及前后端交互等细节。此外,还提供了源码和下载链接供读者体验。
179 0
打造《黑神话:悟空》壁纸软件:使用 Tauri 快速上手
|
供应链 搜索推荐 BI
深入了解淘宝原数据:获取API接口及其使用场景
在当今数字化的时代,对于电商行业来说,数据具有极大的价值。淘宝作为中国最大的综合电商平台,拥有庞大的商品信息和用户数据。对于开发者和企业来说,淘宝原数据的获取和分析是实现个性化服务和精准营销的基础。本文将介绍如何通过API接口获取淘宝原数据,以及数据的使用场景。
|
并行计算 算法 数据处理
【MATLAB 】 MODWT 信号分解+模糊熵(近似熵)算法
【MATLAB 】 MODWT 信号分解+模糊熵(近似熵)算法
261 0
|
Oracle 安全 Java
最新Java JDK 21:全面解析与新特性探讨
最新Java JDK 21:全面解析与新特性探讨
872 0
最新Java JDK 21:全面解析与新特性探讨
|
监控 安全 项目管理
项目成功秘诀:高效管理策略确保按时交付
项目成功对企业生存发展至关重要,需要明确目标和范围,运用SMART原则和设计思维确保目标与市场需求相符。通过工作分解、优先级排序管理需求,建立变更和风险管理流程。制定详细项目计划,考虑约束条件、关键节点和风险。优化团队协作,明确角色责任,建立有效沟通机制,激励团队成员。实施PDCA循环控制项目进程,关注交付和复盘,以实现高质量的项目成果。
597 1
|
数据安全/隐私保护 Android开发 iOS开发
阿里企业邮箱登陆入口
阿里企业邮箱登陆入口https://qiye.aliyun.com/ 阿里企业邮箱可以使用邮箱账号登录,也可以使用钉钉账号登录
6925 0
阿里企业邮箱登陆入口