【RTT大赛作品连载】AB32VG1开发板——RGB交替闪烁
1. 实验目的
让板载 RGB 灯交替闪烁
2. 开发板硬件平台
RGB灯硬件电路,可知,使用 RGB 灯组要使用
PE1 —— 红
PA1 —— 蓝
PE4 —— 绿
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. 程序编译下载
编译程序,点击小锤子即可。
下载程序
打开我们下载的Downloader软件,双击Downloader.exe
配置连接串口,千万不要搞错串口号哦。
选择工程目录下的\Debug\rtthread.dcf,这里我的完整目录是
D:\RT-ThreadStudio\workspace\ab32vg1_demo\Debug\rtthread.dcf
点击开始即可下载成功
5. 实验现象:
download 串口打印 msh 控制台信息。
板载RGB灯,红色绿色蓝色交替闪烁。
6. 总结
每一个伟大的程序员都要从 led 及 helloworld 开始,哈哈。
编辑:fqj
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6043文章
44617浏览量
638352 -
RTT
+关注
关注
0文章
65浏览量
17208 -
中科蓝讯
+关注
关注
9文章
57浏览量
9930
发布评论请先 登录
相关推荐
蓝桥杯物联网开发板硬件组成
第一节开发板简介物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产,该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的实践教学环节。
【敏矽微ME32G070开发板免费体验】使用JLINK的RTT功能实现类似串口printf打印功能
和浮点数,所以我还是希望 敏矽微 能给我补发一个好的 ME32G070开发板,方便我后面做电机FOC等复杂算法来实现浮点数据的打印功能。在此先谢谢电子发烧友群主。
Jlink RTT的打印结果视频如下
发表于 12-15 20:30
正点原子fpga开发板不同型号
正点原子作为国内领先的FPGA开发板供应商,其产品线覆盖了从入门级到高端应用的各个领域。这些开发板不仅适用于学术研究,还广泛应用于工业控制、通信、图像处理等多个领域。 1. 入门级开发板
【干货】性价比拉满!HK32F407VG开发板介绍
开发板简介开发板是基于航顺芯片公司F4系列HK32F407VGT7芯片的一款开发板,Cortex-M4内核,最高主频168MHz,内置1MKBFlash和256KBSRAM,SDIO、
linux开发板如何编译curl
在Linux开发板上编译 curl 库通常涉及到几个步骤,包括准备开发环境、下载源代码、配置编译选项以及执行编译和安装过程。以下是一个基本的指南,帮助你在Linux开发板上编译 curl 。
机智云ESP8266开发板RGB彩灯控件
用户带来了全新的家居体验。无论是个性化的灯光设置,还是智能化的远程管理,这款产品都展现了其在智能家居领域的引领地位。机智云esp8266开发板RGB彩灯控件1、将
智能家居之旅(7):HomeAssistant开发板的RGB颜色
怎么上HomeAssistant,然后控制Ai-M61开发板的 RGB 灯的颜色,感觉这个项目用来控制家里的灯条就挺不错的。 彩灯实体创建 1.彩灯实体资源启用 彩灯实体在 HomeAssistant
米尔NXP i.MX 93开发板的Qt开发指南
1.概述Qt是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔NXPi.MX93开发板(MYD-LMX9X开发板)使用Qt6.5版本进行
玩转PSoC 6 RTT积木式开发套件,实现毫米波雷达等实用功能
本期英飞凌手工课,将由来自英飞凌的工程师Jenson给大家带来PSoC62withCAPSENSEevaluationkit(下称PSoC6RTT开发板)和其积木式开发套件的全面介绍。让我们跟着
fpga开发板是什么?fpga开发板有哪些?
FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPGA芯片、时钟模块、电源模块、输入输出接口等组
评论