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

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

3天内不再提示

RTT大赛作品:AB32VG1开发板—RGB交替闪烁

嵌入式开发 来源:AB32VG1开发笔记 作者:AB32VG1开发笔记 2021-11-06 18:59 次阅读

【RTT大赛作品连载】AB32VG1开发板——RGB交替闪烁

1. 实验目的

让板载 RGB 灯交替闪烁

2. 开发板硬件平台

poYBAGGGRgCAejjsABX3VGGeJIc209.png

RGB灯硬件电路,可知,使用 RGB 灯组要使用

PE1 —— 红

PA1 —— 蓝

PE4 —— 绿

pYYBAGGGXsmAObtfAABjOi7lL1M212.png

poYBAGGGXteARcgAAABNgTuU8OE787.png

3. 软件编写

在 application 目录下,新建 rgb.c 和 rgb.h

//rgb.c
/*
 * 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
 */
#include "rgb.h"
#include "rtthread.h"
#include "board.h"

struct Led_s
{
    uint8_t LED_R;
    uint8_t LED_B;
    uint8_t LED_G;
};   //  定义一个 RGB 结构体

struct Led_s Led;
rt_thread_t rgb_thread = RT_NULL;

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);
    }
}

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);
}

INIT_APP_EXPORT(Thread_RGB);

//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);
    }
}

4. 程序编译下载

编译程序,点击小锤子即可。

pYYBAGGGRnmADAsxAAKXmT_LCcc372.png

下载程序

打开我们下载的Downloader软件,双击Downloader.exe

配置连接串口,千万不要搞错串口号哦。

选择工程目录下的\Debug\rtthread.dcf,这里我的完整目录是

D:\RT-ThreadStudio\workspace\ab32vg1_demo\Debug\rtthread.dcf

点击开始即可下载成功

poYBAGGGRoeAOoWjAAEzlPzfcAs365.png

5. 实验现象:

download 串口打印 msh 控制台信息

板载RGB灯,红色绿色蓝色交替闪烁。

6. 总结

每一个伟大的程序员都要从 led 及 helloworld 开始,哈哈。

编辑:fqj

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

    关注

    5997

    文章

    43944

    浏览量

    620435
  • RTT
    RTT
    +关注

    关注

    0

    文章

    63

    浏览量

    16879
  • 中科蓝讯
    +关注

    关注

    8

    文章

    48

    浏览量

    9625
收藏 人收藏

    评论

    相关推荐

    玩转PSoC 6 RTT积木式开发套件,实现毫米波雷达等实用功能

    本期英飞凌手工课,将由来自英飞凌的工程师Jenson给大家带来PSoC62withCAPSENSEevaluationkit(下称PSoC6RTT开发板)和其积木式开发套件的全面介绍。让我们跟着
    的头像 发表于 03-20 08:35 207次阅读
    玩转PSoC 6 <b class='flag-5'>RTT</b>积木式<b class='flag-5'>开发</b>套件,实现毫米波雷达等实用功能

    【每周一练】小眼睛FPGA1K开发板硬件平台

    感谢电子发烧友提供的每周一练的测评机会。本次测评试用的是深圳市小眼睛半导体科技有限公司的MES1K开发板,以紫光Compact系列PGC1KG-LPG100器件为核心,丰富的扩展IO 及数码管、按键
    发表于 12-19 23:37

    开源作品!稚晖君超迷你低成本开发板、超酷机器人、智能手环等参考方案

    ;>点此查看全文&下载资料 5.稚晖君整活作品!基于全志F1C200s的超迷你&低成本开发板开源 曾经靠着“B站最强小电视”以及号称“钢铁侠机械臂”等硬核产品
    发表于 12-12 10:28

    【ELF 1开发板试用】+ RGB LED及按键的控制

    1开发板上,自然也不会少了它,其在开发板上的位置如图1所示,共有3个,其颜色分别为红、绿、黄3个色彩。 图1LED灯 3个LED灯的电路
    发表于 11-21 11:11

    #fpga开发板 Lattic-mipi开发板

    FPGA开发板
    明德扬科技
    发布于 :2023年10月25日 18:01:23

    【社区工程师专题系列第七期】嵌入式工程师离不开技术创新——张海良

    应用设计大赛一个桌面智能坞小工具 项目简介 很荣幸能申请到AB32VG1开发板参加这次RTT的创新大赛,这个芯片的功能很强大。我基于这个
    发表于 08-11 15:32

    英飞凌开发板模块评测任务大挑战-SPI驱动测试

    使用PSoC™ 62 with CAPSENSE™ evaluation kit开发板适配的RTT SPI驱动,做显示测试。
    发表于 08-10 15:44 457次阅读
    英飞凌<b class='flag-5'>开发板</b>模块评测任务大挑战-SPI驱动测试

    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>

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

    开发板的语音播放功能; 3、基于Node-Red的串口功能与AB32VG1通讯; 4、连接腾讯云的Explorer平台; 5、腾讯连连公众号接收云平报警信息; 6、门窗检测开关。 硬件说明 因为官方提供了
    发表于 06-13 15:26

    iTOP-STM32MP157开发板开发学习一两用

    处理器 iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。 核心 主频650M、1
    发表于 06-07 10:54

    【英飞凌PSoC 6 RTT开发板试用】+开箱测试

    【英飞凌PSoC 6 RTT开发板试用】+开箱测试 硬件资源介绍 Psoc6-evaluationkit-062S2 是 RT-Thread 联合英飞凌推出的一款集成32位双核CPU子系统( ARM
    发表于 06-05 01:06

    【沁恒CH32V208开发板试用】1-构建RTT-Stdio开发环境

    【沁恒CH32V208开发板试用】1-创建RTT-Stdio开发环境 首先真诚感谢电子发烧友、沁恒微电子举办【沁恒CH32V208开发板试用
    发表于 05-28 15:41

    【感芯科技MC3172开发板体验】初次使用多线程开发板

    基于CH32V203的下载调试工具、用于数据存储的闪存P25Q40及LED灯。不过,这也为后续的外设扩展留足了空间。 图5 所配资源 在为开发板上电后,可见到绿色的LED1在不停地闪烁,见图6
    发表于 05-25 00:54

    【沁恒 CH32V208 开发板免费试用】RTT 模拟Arduino库开发项目

    title: 【沁恒 CH32V208 开发板免费试用】RTT 模拟Arduino库开发项目 date: 2023-05-24 20:16:10 tags: [嵌入式,rt-thread移植] 本文
    发表于 05-24 20:31

    【英飞凌PSoC 6】新建RTT工程

    介绍英飞凌PSoC 6 RTT开发板环境创建
    的头像 发表于 04-24 15:29 1437次阅读
    【英飞凌PSoC 6】新建<b class='flag-5'>RTT</b>工程