0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

跟AB32VG1开发学习RGB交替闪烁

RT_THREAD 来源:RT_THREAD 作者:RT_THREAD 2021-11-21 09:14 次阅读

今天开始学习RGB交替闪烁。
这是一个最基本的io口控制例程。看到AB32VG1编写的内容,感觉有些地方不懂,后面再说。现在先记录整个学习过程。
1.查看硬件电路结构

pYYBAGGZfPiAZLetAAAkGuecaVg341.pngled接口电路pYYBAGGZfRaAddn2AABl0X6T5Zo444.pngled接口电路2

这里采用了header4×2来转接一下。便于胸口复用。
2.软件设计与编写
可以看到LED是低电平使能,在相应的io口轮次输出0,使得LED点亮。
获得LED
设置pin模式,
轮次输出相应电平,点亮或熄灭相应led
void RGB_Init(void)
{
// 获得 led
Led.LED_R = rt_pin_get("PE.1");
Led.LED_G = rt_pin_get("PE.4");
Led.LED_B = rt_pin_get("PA.1");
// 设置引脚为输出方式
rt_pin_mode(Led.LED_R, PIN_MODE_OUTPUT);
rt_pin_mode(Led.LED_G, PIN_MODE_OUTPUT);
rt_pin_mode(Led.LED_B, PIN_MODE_OUTPUT);

rt_kprintf("rgb init success\n");
}

//传入参数 on=1:对应亮,on=0:对应灭
//红灯驱动
void RGB_Red(rt_bool_t on)
{
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_R, PIN_LOW);
} else {
rt_pin_write(Led.LED_R, PIN_HIGH);
}
}
//蓝灯驱动
void RGB_Blue(rt_bool_t on){
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_R, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_B, PIN_LOW);
} else {
rt_pin_write(Led.LED_B, PIN_HIGH);
}
}
//绿灯驱动
void RGB_Green(rt_bool_t on)
{
rt_pin_write(Led.LED_R, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_G, PIN_LOW);
} else {
rt_pin_write(Led.LED_G, PIN_HIGH);
}
}

下面要做的是使得led能够循环工作。
void rgb_switch(void)
{
static uint8_t led_num = 0;
if(led_num == 0)
RGB_Red(1);
else if(led_num == 1)
RGB_Blue(1);
else if(led_num == 2)
RGB_Green(1);
led_num++;
if(led_num == 3)
led_num = 0;
}
操作系统入口函数
void rgb_thread_entry(void* p)
{
RGB_Init();
while(1)
{
rt_thread_mdelay(500);
rgb_switch();
}
}
//这个函数不太明白是做什么的,应该是线程控制函数,不知道哪里有相应的教程可以看到
static int Thread_RGB(void)
{
rgb_thread = rt_thread_create("rgb", rgb_thread_entry, RT_NULL, 512, 10, 10);
if(rgb_thread == RT_NULL)
{
rt_kprintf("Thread_GRB Init ERROR");
return RT_ERROR;
}
rt_thread_startup(rgb_thread);
}


然后看到该同学还设置了key.h函数。
//rgb.h
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-11-06 Administrator the first version
*/
#ifndef APPLICATIONS_RGB_H_
#define APPLICATIONS_RGB_H_

#endif /* APPLICATIONS_RGB_H_ */

不太明白为什么要做这个,是为了以后扩展用?

修改主函数main.c
/*
* Copyright (c) 2020-2021, Bluetrum Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020/12/10 greedyhao The first version
*/

/**
* Notice!
* All functions or data that are called during an interrupt need to be in RAM.
* You can do it the way exception_isr() does.
*/

#include
#include "board.h"

int main(void)
{
rt_kprintf("Hello, world\n");

while (1)
{
rt_thread_mdelay(500);
rt_thread_mdelay(500);
}
}
该同学把原来的按键控制删掉后,给了两个mdelay();不明白为什么要这样写。
3.执行downloader
实现功能。

看完了这个学习,感觉疑惑还是很多,
有关于系统本身的,也有关于这位同学的编写代码内容的。可是独学而无友,则孤陋而寡闻。
多向各位大佬学习。
争取能够看明白。

还有这个编辑界面不知道为什么无法直接在word中直接粘贴复制。

难道是需要排版才行?

ymf

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路
    +关注

    关注

    169

    文章

    5467

    浏览量

    169184
  • 操作系统
    +关注

    关注

    37

    文章

    6204

    浏览量

    121727
  • 中科蓝讯
    +关注

    关注

    8

    文章

    46

    浏览量

    9616
收藏 人收藏

    评论

    相关推荐

    如何将LED连接到Arduino板并使其闪烁

     在本快速入门指南中,您将学习如何将 LED 连接到 Arduino 板并使其闪烁
    的头像 发表于 02-11 10:53 740次阅读
    如何将LED连接到Arduino板并使其<b class='flag-5'>闪烁</b>

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino
    的头像 发表于 02-11 10:28 1053次阅读
    如何使用Arduino控制<b class='flag-5'>RGB</b> LED

    为什么不能直接对RGB图做直方图均衡化

    相信好多人在开始学习FPGA图像处理的时候都是接触的RGB转灰度图,Sobel图像检测,直方图均衡化这样的算法。
    的头像 发表于 01-02 09:41 302次阅读
    为什么不能直接对<b class='flag-5'>RGB</b>图做直方图均衡化

    【每周一练】+盘古1K开发板+2. 按键控制RGB led

    的Demo,再次基础上学习实现功能。 1 代码分析 官方提供的实力代码其实已经实现了题目要求实现的功能,所以我主要的目的就是学习实力代码的实现方案,了解如何实现的。 官方代码使用4个文件来实现: 其中
    发表于 12-17 11:33

    【每周一练】盘古1K开发板 练习二:按键控制RGB

    实验目的 掌握按键消抖原理,实现按键控制RDB灯颜色更换 实验要求 设计 8 种彩灯效果,选择一个按键作为控制输入,按下一次换一种显示效果 学习心得 学习RGB灯颜色控制 按键消抖原理
    发表于 12-10 16:43

    S3C2410A GPB端口低两位与次低两位两个反逻辑LED指示灯的交替闪烁

    各位大神求指导, S3C2410AGPB端口低两位与次低两位两个反逻辑LED指示灯的交替闪烁,这个当初没好好学,求指导
    发表于 11-14 20:22

    三星宣布正开发RGB OLEDoS 苹果考虑采用

    三星显示宣布正在开发 OLEDoS,可沉积红、绿、蓝 (RGB) 像素。RGB OLEDoS 是一种尚未在全球范围内商业化的显示器。
    的头像 发表于 10-24 10:59 658次阅读

    闪烁噪声代码实现方法

    闪烁噪声代码实现方法 闪烁噪声是指由不规则交替的明暗点所组成的噪声,在各种应用中都有着非常广泛的应用。闪烁噪声可以用于视频的特效处理、图像的模糊处理等领域中。本文将介绍
    的头像 发表于 09-19 16:39 402次阅读

    什么是闪烁噪声?闪烁噪声的性质和特点

    什么是闪烁噪声?闪烁噪声的性质和特点 闪烁噪声(Flicker noise)是指信号中指定频率范围内的噪音,它的频率范围通常包括几十到几千赫兹。通常认为该噪音源于随机在集成电路等元件中存在的电荷扰动
    的头像 发表于 09-19 16:33 1288次阅读

    TinyLily RGB LED万圣节装饰蜡烛闪烁

    电子发烧友网站提供《TinyLily RGB LED万圣节装饰蜡烛闪烁.zip》资料免费下载
    发表于 06-16 14:43 0次下载
    TinyLily <b class='flag-5'>RGB</b> LED万圣节装饰蜡烛<b class='flag-5'>闪烁</b>

    【社区工程师专题系列第二期】电子工程师需要在参赛中历练成长——林宏华

    项目简介: 基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能,主要包含如下功能: 1、基于RT-Thread操作系统的按键组件,音频播放组件等; 2、基于AB32
    发表于 06-13 15:26

    3.100ASK_V853-PRO开发板支持七寸RGB

    ​ 在前面我们已经学习了关于100ASK_V853-PRO编译和烧写,接下来就是在Tina SDK下去适配七寸RGB屏。
    的头像 发表于 05-10 15:26 839次阅读
    3.100ASK_V853-PRO<b class='flag-5'>开发</b>板支持七寸<b class='flag-5'>RGB</b>屏

    AB PLC学习笔记

    AB的PLC编程软件根据使用功能分类:工控机编程使用RSView32,PLC编程使用RSlogix5000,触摸屏编程使用RSWiewME,通讯处理程序使用RSLinx。注意 :RSlogix5000的通讯必须安装RSLinx才能与AB的 PLC进行通讯。软件安装的时候
    发表于 04-18 10:22 4次下载
    <b class='flag-5'>AB</b> PLC<b class='flag-5'>学习</b>笔记

    AB32VG1使用Pahomqtt组件mqtt_publish报错是何原因?

    实行例程的mqtt_publish功能是,无论后面输入多少字符,一进入MQTTSerialize_publish 函数里payloadlen = 589505315 都为固定值,然后开始定位如图
    发表于 04-14 11:07

    基于AB32vg1板子创建的工程加载DMA驱动后编译报错怎么办?

    基于AB32vg1板子创建的工程加载DMA驱动后编译报错unknown type name 'DMA_HandleTypeDef'../libraries/hal_drivers
    发表于 04-03 16:02