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

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

    关注

    172

    文章

    5841

    浏览量

    171896
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123187
  • 中科蓝讯
    +关注

    关注

    9

    文章

    54

    浏览量

    9849
收藏 人收藏

    评论

    相关推荐

    【干货】性价比拉满!HK32F407VG开发板介绍

    开发板简介开发板是基于航顺芯片公司F4系列HK32F407VGT7芯片的一款开发板,Cortex-M4内核,最高主频168MHz,内置1MKBFlash和256KBSRAM,SDIO、
    的头像 发表于 11-08 13:27 141次阅读
    【干货】性价比拉满!HK32F407<b class='flag-5'>VG</b><b class='flag-5'>开发</b>板介绍

    负载管的闪烁噪声和热噪声的区别

    负载管的闪烁噪声和热噪声是两种不同的噪声类型,它们在电子设备中的表现和影响各有特点。 闪烁噪声(1/f噪声) 定义 : 闪烁噪声,也称为1/
    的头像 发表于 10-10 11:19 348次阅读

    【RA-Eco-RA0E1-32PIN-V1.0开发板试用】软件驱动TFT屏幕

    接上篇:【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开发环境搭建及流水灯(附踩坑记录) - 瑞萨单片机论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com
    发表于 08-26 21:45

    TINA-TI仿真,为什么VF1VG1的波形不一样?

    为什么VF1VG1的波形不一样? 还有就是如果我把波形的下降沿改为100N,VF1的波形就会被削顶,这个有是什么原因?
    发表于 08-19 07:15

    机智云ESP8266开发RGB彩灯控件

    用户带来了全新的家居体验。无论是个性化的灯光设置,还是智能化的远程管理,这款产品都展现了其在智能家居领域的引领地位。机智云esp8266开发RGB彩灯控件1、将
    的头像 发表于 08-09 08:10 343次阅读
    机智云ESP8266<b class='flag-5'>开发</b>板<b class='flag-5'>RGB</b>彩灯控件

    智能家居之旅(7):HomeAssistant开发板的RGB颜色

    怎么上HomeAssistant,然后控制Ai-M61开发板的 RGB 灯的颜色,感觉这个项目用来控制家里的灯条就挺不错的。 彩灯实体创建 1.彩灯实体资源启用 彩灯实体在 HomeAssistant
    的头像 发表于 07-03 16:39 446次阅读
    智能家居之旅(7):HomeAssistant<b class='flag-5'>开发</b>板的<b class='flag-5'>RGB</b>颜色

    ESP32-C3-DevKitM-1跑示例程序Blink,RGB灯不闪的原因?

    新手学习,买了两块ESP32-C3-DevKitM-1,到手后插入USB供电后,两块开发板的RGB灯蓝色常亮。然后烧录示例example
    发表于 06-21 06:01

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

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

    如何使用Arduino控制RGB LED

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

    学习笔记分享|使用C库函数控制ELF 1开发板的LED

    (ELF1/ELF1S开发板及显示屏)在嵌入式Linux系统开发中,通过编程控制硬件资源是至关重要的技能之一,今天各位小伙伴分享一篇专注于
    的头像 发表于 01-19 11:12 525次阅读
    <b class='flag-5'>学习</b>笔记分享|使用C库函数控制ELF <b class='flag-5'>1</b><b class='flag-5'>开发</b>板的LED

    VD6283TX环境光传感器(2)----移植闪烁频率代码

    人造光源,如家庭和商业办公室使用的,会在接入电网时产生闪烁,其频率通常由所在国家的电力频率决定,一般为50 Hz或60 Hz。由于电流在光源中的交替流动,这些光源会在50 Hz或60 Hz的电网下产生
    的头像 发表于 12-28 10:17 531次阅读
    VD6283TX环境光传感器(2)----移植<b class='flag-5'>闪烁</b>频率代码

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

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

    LED灯闪烁的原因 LED灯闪烁故障解决方法

    LED灯闪烁的原因 LED灯闪烁故障解决方法 LED灯闪烁是指在正常使用过程中,LED灯的亮度或者频率会不断变化,从而产生闪烁的现象。闪烁
    的头像 发表于 12-11 15:31 7388次阅读

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

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

    VD6283TX环境光传感器驱动开发(3)----测试闪烁频率代码

    ST提供了6283A1_AnalogFlicker代码在X-NUCLEO-6283A1获取闪烁频率,同时移植到VD6283TX-SATEL。
    的头像 发表于 12-01 16:14 521次阅读
    VD6283TX环境光传感器驱动<b class='flag-5'>开发</b>(3)----测试<b class='flag-5'>闪烁</b>频率代码