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

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

3天内不再提示

【RTT大赛作品连载】AB32VG1评估板到货控制彩灯测试

磐石90 2021-11-07 19:39 次阅读

上次发布了一篇文章(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com)),解决很多爱好者从在RT-ThreadStudio新建项目到对应开发配置及下载等各部分环节的问题!得到了很多爱好者的认可!

poYBAGGHrWyASMyOAAYobxoiuxI615.png

哈哈,先晒点赞的!

pYYBAGGHrb-ACM6mAAX42sJaxqw946.png

重要的是帮好多爱好者解决了实际问题!

接下来看看在如何AB32VG1评估板控制彩灯!

在RT-ThreadStudio新建项目到对应开发配置及下载及验证测试!!!

还是详细点!!!用截图-》

新建项目!

poYBAGGHrseAOHNcAAFyO6pqkpc957.png


poYBAGGHr8KAILxwAAFBOz6cLlg570.png

点完成,新建就好了!

接下来是这次会用的软件包设置!!!

poYBAGGHsL2AUAC8AAHa1S9PV8Y803.png

设置好后点关闭,会提示保存设置选项,点保存即可!

接下来会用到这几IO!如图

pYYBAGGHsdWAOYclAA9a6ZVbpp4963.png

软件代码内容暂时直接写在main函数文件里!!!

如图

具体内容如下:

#include
#include "board.h"
#include
#define BUTTON_PIN_0 rt_pin_get("PF.0")//control timeDelay
#define BUTTON_PIN_1 rt_pin_get("PF.1")//control colorLed mode
uint32_t delayTime = 1;
uint32_t state = 0;
uint32_t cnt_0 = 1;
static struct button btn_0;
static struct button btn_1;

static uint8_t button_read_pin_0(void)
{
return rt_pin_read(BUTTON_PIN_0);
}
static uint8_t button_read_pin_1(void)
{
return rt_pin_read(BUTTON_PIN_1);
}

static void button_0_callback(void* btn)
{
uint32_t btn_event_val;
btn_event_val = get_button_event((struct button*)btn);
switch (btn_event_val)
{
case SINGLE_CLICK:
cnt_0++;
delayTime = cnt_0 * 200;
if (cnt_0 == 10)
{
cnt_0 = 1;
}
rt_kprintf("button 0 single click\ndelayTime=%d\n", delayTime);
break;
case DOUBLE_CLICK:
if (cnt_0 > 1)
{
cnt_0--;
}
delayTime = cnt_0 * 200;
rt_kprintf("button 0 double click\ndelayTime=%d\n", delayTime);
break;

case LONG_PRESS_START:
rt_kprintf("button 0 long press start\n");
break;
case LONG_PRESS_HOLD:
rt_kprintf("button 0 long press hold\n");
break;
}
}
static void button_1_callback(void* btn)
{
uint32_t btn_event_val;
btn_event_val = get_button_event((struct button*)btn);
switch (btn_event_val)
{
case SINGLE_CLICK:
state = !state;
if (state == 0) {
rt_kprintf("one color\n");
}
else {
rt_kprintf("more color\n");
}
rt_kprintf("button 1 single click\n");
break;
case DOUBLE_CLICK:
rt_kprintf("more color\n");
rt_kprintf("button 1 single click\n");
default:
break;
}
}
static void btn_thread_entry(void* p)
{
while (1)
{
/* 5ms */
rt_thread_delay(RT_TICK_PER_SECOND / 200);
button_ticks();
}
}
static int multi_button_test(void)
{
rt_thread_t thread = RT_NULL;
/* Create background ticks thread */
thread = rt_thread_create("btn", btn_thread_entry, RT_NULL, 1024, 10, 10);
if (thread == RT_NULL)
{
return RT_ERROR;
}
rt_thread_startup(thread);
/* low level drive */
rt_pin_mode(BUTTON_PIN_0, PIN_MODE_INPUT_PULLUP);
button_init(&btn_0, button_read_pin_0, PIN_LOW);
button_attach(&btn_0, SINGLE_CLICK, button_0_callback);
button_attach(&btn_0, DOUBLE_CLICK, button_0_callback);
button_attach(&btn_0, LONG_PRESS_START, button_0_callback);
button_attach(&btn_0, LONG_PRESS_HOLD, button_0_callback);
button_start(&btn_0);

rt_pin_mode(BUTTON_PIN_1, PIN_MODE_INPUT_PULLUP);
button_init(&btn_1, button_read_pin_1, PIN_LOW);
button_attach(&btn_1, SINGLE_CLICK, button_1_callback);
button_attach(&btn_1, DOUBLE_CLICK, button_1_callback);
button_attach(&btn_1, LONG_PRESS_START, button_1_callback);
button_attach(&btn_1, LONG_PRESS_HOLD, button_1_callback);
button_start(&btn_1);
return RT_EOK;
}
INIT_APP_EXPORT(multi_button_test);

int main(void)
{
uint32_t cnt = 0;
rt_kprintf("Hello, world11\n");
uint8_t pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
uint8_t pin1 = rt_pin_get("PE.4");
rt_pin_mode(pin1, PIN_MODE_OUTPUT);
uint8_t pin2 = rt_pin_get("PA.1");
rt_pin_mode(pin2, PIN_MODE_OUTPUT);
while (1)
{
if (cnt % 8 == 0)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 1)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 2)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 3)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 4)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 5)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 6)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 7)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
if (state == 1)
cnt++;
rt_thread_mdelay(delayTime);
}
}

编译好,下载验证如下!

poYBAGGHs9CAVGLXAAC80dTZHUo405.png

验证OK!

其实还可以在此基础上,让ColorLed'更好玩,喜欢的爱好者可以试试让它更炫酷!!!

最后,看到上一篇阅读量破2100了(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com))

很高兴!!!大家一起加油!!!

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

    关注

    237

    文章

    22420

    浏览量

    645790
  • RTOS
    +关注

    关注

    20

    文章

    773

    浏览量

    118773
  • 开发板
    +关注

    关注

    25

    文章

    4403

    浏览量

    93788
  • RT-Thread
    +关注

    关注

    31

    文章

    1148

    浏览量

    38857
  • 中科蓝讯
    +关注

    关注

    8

    文章

    49

    浏览量

    9625
收藏 人收藏

    评论

    相关推荐

    研华荣获信通院工业数字孪生大赛优秀作品

    在信通院和芜湖市人民政府联合主办的2023第三届工业数字孪生大赛中,研华表现卓越,其研华数字孪生InsightAPM和研华智慧能源iEMS团队作品均获优秀作品奖,展现其在技术创新与应用实践上的卓越能力,推动“工业互联网+数字孪生
    的头像 发表于 04-17 09:48 133次阅读
    研华荣获信通院工业数字孪生<b class='flag-5'>大赛</b>优秀<b class='flag-5'>作品</b>奖

    大功率二极管晶闸管知识连载——控制特性

    大功率二极管晶闸管知识连载——控制特性
    的头像 发表于 12-14 17:09 295次阅读
    大功率二极管晶闸管知识<b class='flag-5'>连载</b>——<b class='flag-5'>控制</b>特性

    【每周一练】盘古1K开发 练习二:按键控制彩灯实验

    实验目的 1 设计 8 种彩灯效果, 可通过按键切换。 2 选择一个按键作为控制输入, 按下一次换一种显示效果, 在 8 种效果中循环。 实验要求 1、 实验平台: MES2KG 开发
    发表于 12-09 14:55

    【每周一练】+盘古1K开发+键盘控制彩灯+硬件约束改变按键

    感谢发烧友爱好者和小眼睛科技公司提供的FPGA测试机会。在上一次的测试中实现了开发环境建立和8个LED的流水灯效果,今天来完成第2个测试。这次的目的是设计 8 种彩灯效果,选择一个按键
    发表于 11-29 21:01

    彩灯控制电路的设计与制作

    让自己学号的后2位编码后点亮相应的灯,能实现循环左、右移,按键控制,同时按键控制彩灯亮灭速度。
    的头像 发表于 08-25 17:16 1809次阅读
    <b class='flag-5'>彩灯</b><b class='flag-5'>控制</b>电路的设计与制作

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

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

    彩灯珠的秘密

    本文主要介绍了市场上面的幻彩灯珠组成及应用场景,并重点介绍了幻彩灯珠内部驱动芯片的原理和编码格式以及该芯片的典型硬件应用电路,最后通过例举用一颗8位MCU控制彩灯珠的算法。
    的头像 发表于 06-25 15:31 941次阅读
    幻<b class='flag-5'>彩灯</b>珠的秘密

    【资料分享】NXP i.MX 8M Mini评估测试手册(1

    本帖最后由 Tronlong创龙科技 于 2023-6-15 14:33 编辑 目录1 评估快速测试1.1系统启动测试1.2文件传送
    发表于 06-15 14:32

    【资料分享】全志科技A40i评估测试手册(1

    本帖最后由 Tronlong创龙科技 于 2023-6-14 15:57 编辑 目 录1 评估快速测试1.1系统启动测试1.2文件传
    发表于 06-14 15:49

    恩智浦NXP i.MX 6ULL评估测试手册(中)

    软件。本文主要提供评估的硬件资源测试方法。无特殊说明情况下,默认使用USB TO UART1作为调试串口,使用Linux系统启动卡(SD启动模式)启动系统,通过路由器与PC机进行网络
    发表于 06-14 14:25

    恩智浦NXP i.MX 6ULL评估测试手册(上)

    串口调试终端、VMware虚拟机等相关软件。本文主要提供评估的硬件资源测试方法。无特殊说明情况下,默认使用USB TO UART1作为调试串口,使用Linux系统启动卡(SD启动模式
    发表于 06-14 09:45

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

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

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

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

    报名开启!开放原子开源大赛OpenHarmony创新赛来啦!

    流程 4月19日:OpenHarmony开发者大会上大赛发布,启动报名 4月19日至9月30日:参赛者在此期间内提交作品提案,通过后完成作品开发,按照提交规则提交作品。 10月
    发表于 05-17 16:52

    嵌入式工业开发基础测试手册——基于NXP iMX6ULL开发1

    LED2灭Target# echo 1 &gt; /sys/class/leds/user-led1/brightness //控制LED2亮 图 22按键测试用户输入按键
    发表于 05-03 22:41