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

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

    关注

    173

    文章

    6064

    浏览量

    177487
  • 操作系统
    +关注

    关注

    37

    文章

    7329

    浏览量

    128653
  • 中科蓝讯
    +关注

    关注

    10

    文章

    64

    浏览量

    10575
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    光缆怎么分ab

    、基站等)。 B端:光缆的终止端,通常连接接收设备(如终端盒、用户端等)。 作用: 确保光纤对(如TX-RX)正确配对,避免信号反射或丢失。 在环形网络或双纤链路中,AB端区分可防止光纤交叉连接导致的故障。 二、AB端的区分方法 1
    的头像 发表于 09-28 09:38 978次阅读

    RT-Thread支持STM32H723VG芯片吗?

    RT-Thread支持STM32H723VG芯片吗,我现在的工程是裸板工程,芯片是STM32H723VG的芯片,在构建工程时中找不到对应的芯片
    发表于 09-22 06:57

    【创龙TLT113-MiniEVM开发板试用体验】T113开发板LED闪烁控制终极教程

    ;T113 LED控制菜单\" echo \"1. 心跳灯闪烁\" echo \"2. 用户LED0闪烁\" echo \"3. 双LED交替
    发表于 08-06 13:56

    请问VG710都有那些外置接口?

    VG710都有那些外置接口?
    发表于 08-06 06:50

    【沁恒CH585开发板免费试用体验】+点亮RGB彩灯

    掌握GPIO口的使用是步入硬件学习的第一步,为此将它的学习同点亮RGB彩灯相结合可起到学习和兴趣相结合的功效。 RGB彩灯模块是采用共阴极连
    发表于 07-03 22:17

    【BPI-CanMV-K230D-Zero开发板体验】+灯效控制与Python编程

    ,在学习Python编程的基础上通过GPIO来实现LED灯的控制。 在开发板上,仅有的2个可供GPIO控制的器件是RGB_LED和按键,其中RGB_LED的电路如图
    发表于 06-27 17:33

    RT-Thread支持STM32H723VG芯片吗?

    RT-Thread支持STM32H723VG芯片吗,我现在的工程是裸板工程,芯片是STM32H723VG的芯片,在构建工程时中找不到对应的芯片
    发表于 06-11 08:28

    X1G0054910008,VG7050EFN差分晶振,EPSON寻呼机6G晶振

    产品简介X1G0054910008,VG7050EFN差分晶振,EPSON寻呼机6G晶振,日本进口晶振,EPSON爱普生株式会社,型号:VG7050EFN,编码为:X1G0054910
    发表于 05-20 14:13 0次下载

    爱普生压控晶振 VG7050CDN(X1G004861)在 5G 通信基站中的应用

    7050CDN(X1G004861)是爱普生推出的一款电压控制晶体振荡器,振凭借出色的频率稳定性、低相位噪声、快速频率响应以及宽温度适应性等特点,成为5G通信基站的理想选择。 VG7050CDN 晶振如何满足 5G 基站的需求: VG
    的头像 发表于 03-25 16:03 661次阅读

    DS1265AB adi

    电子发烧友网为你提供ADI(ADI)DS1265AB相关产品参数、数据手册,更有DS1265AB的引脚图、接线图、封装手册、中文资料、英文资料,DS1265AB真值表,DS1265AB
    发表于 03-10 18:32
    DS1265<b class='flag-5'>AB</b> adi

    DLPC300在使用5V 1A的电源线供电时,电源指示灯红绿交替闪烁,是否说明存在故障?

    芯片在使用5V 1A的电源线供电时,电源指示灯红绿交替闪烁,是否说明存在故障?如果存在故障的话可能原因是什么?用户手册中介绍芯片基于win7和xp的操作系统,win10的操作系统能否兼容?如果不行的话是否有解决措施?
    发表于 02-24 07:47

    DLPDLCR4710EVM-G2如何实现单通道无闪烁地图像输出?

    想要用DLPDLCR4710EVM-G2实现单通道投影,虽然在GUI程序里可以控制RGB三色LED的开关,只点亮其中一路LED,但是输出图像用相机拍摄会有闪烁,特别是将曝光率调小后闪烁特别明显,请问是否可以通过编程或者烧写固件
    发表于 02-20 08:05

    【ELF 2学习板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    2学习板 一款用于嵌入式系统学习开发板。 红绿灯板 一个简单的外部设备包含红、绿、黄三个LED灯。 连接1* ELF 2学习板 按钮 红
    发表于 02-06 15:39

    【ELF 2学习板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    .html) 红绿灯项目 硬件 ELF 2学习板 :一款用于嵌入式系统学习开发板。 红绿灯板 :一个简单的外部设备,包含红、绿、黄三个LED灯。 连接1* ELF 2
    发表于 02-06 11:55

    mXT1296M1T-AT/mXT1296M1T-AB 1.1数据手册

    电子发烧友网站提供《mXT1296M1T-AT/mXT1296M1T-AB 1.1数据手册.pdf》资料免费下载
    发表于 01-22 16:11 1次下载
    mXT1296M<b class='flag-5'>1</b>T-AT/mXT1296M<b class='flag-5'>1T-AB</b> 1.1数据手册