129|1

695

帖子

108

资源

纯净的硅(中级)

【平头哥RVB2601开发板试用体验】一、多任务点灯RGB [复制链接]

本帖最后由 gs001588 于 2022-6-20 23:42 编辑

一、多任务点灯RGB

    hello world!hello led!

    对于开发板,点灯似乎再平常不过了;对于学习操作系统来说,点灯也是必不可少。那么就LED闪起来吧!

 

    1、首先,看看RGB灯原理,及与CH2601的管脚连接关系。RGB一体灯采用共阳极性,低电平点亮,高电平或悬空熄灭。


傲游截图20220620221407.png    

 

    需要跳线帽将J3的3、4脚、5、6脚、7、8脚短接。
傲游截图20220620221613.png

 

    2、下载原始RGB灯测试程序“ch2601_rgb_marquee_demo”,保证库齐全,编译无错,程序可运行。在此模板基础上改为多任务,一个任务负责点一个颜色的灯。

    将“app_config.h”中配置RGB灯械的两个宏定义全部注释掉,不需要了。 傲游截图20220620223643.png

 

    修改“demo_task()”函数如下图。注释掉“led_pinmux_init()”、“led_refresh()”,修改“udelay(1000 * 1000)”,用“aos_msleep(1)”替换。之后如果要用lvgl驱动oled显示的话,“lv_tick_inc(1)”非常重要,需要保留。

傲游截图20220620224001.png

    定义csi_gpio_pin_t r。在led_r_task()任务中依次,“csi_pin_set_mux(PA7, PIN_FUNC_GPIO)”复用PA7为GPIO功能;“csi_gpio_pin_init(&r, PA7)”初始化关联r到PA7;“csi_gpio_pin_dir”设置r管脚为输出方向;“csi_gpio_pin_write”设置r管脚初始态为高(即led灭)。第一个aos_msleep(100),初始等待100ms;第二个aos_msleep(000),零延时,立即进入while循环;在while中实现,r灯亮0.5s,灭0.5s,等待其它任务2s。

傲游截图20220620224925.png

    同理,开启任务“led_g_task() ”、“led_b_task()”。与前面的“led_r_task()”不同之处在于第二个aos_msleep延时分别设置为1s、2s。相信大家应该知道要做什么了,——没错,就是在3秒之内,R、G、B三个灯依次闪亮一次,循环下去。

傲游截图20220620230211.png

傲游截图20220620230227.png

    声明任务函数,在主函数中添加3个任务,任务简单,栈不需要太大,开1024足够用了。

傲游截图20220620230633.png

    至此,程序代码全部修改完毕,编译下载到板卡,运行看效果。

 

    3、3任务控制分别R、G、B三个灯依次闪亮。程序运行效果见视频

    

VID_20220620_233511

 

    4、源代码附上:

    main.c (5.05 KB, 下载次数: 0)


回复

2万

帖子

71

资源

管理员

期待后续哈

个人签名

不管是哪年,都要加油!继续为中国电子行业做出小小的贡献吧! 扣扣 1206973913


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表