上次发布了一篇文章(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com)),解决很多爱好者从在RT-ThreadStudio新建项目到对应开发配置及下载等各部分环节的问题!得到了很多爱好者的认可!
![poYBAGGHrWyASMyOAAYobxoiuxI615.png](http://file.elecfans.com/web2/M00/1B/B6/poYBAGGHrWyASMyOAAYobxoiuxI615.png)
哈哈,先晒点赞的!
![pYYBAGGHrb-ACM6mAAX42sJaxqw946.png](http://file.elecfans.com/web2/M00/1B/BE/pYYBAGGHrb-ACM6mAAX42sJaxqw946.png)
重要的是帮好多爱好者解决了实际问题!
接下来看看在如何AB32VG1评估板控制彩灯!
在RT-ThreadStudio新建项目到对应开发配置及下载及验证测试!!!
还是详细点!!!用截图-》
新建项目!
![poYBAGGHrseAOHNcAAFyO6pqkpc957.png](http://file.elecfans.com/web2/M00/1B/B6/poYBAGGHrseAOHNcAAFyO6pqkpc957.png)
![poYBAGGHr8KAILxwAAFBOz6cLlg570.png](http://file.elecfans.com/web2/M00/1B/B6/poYBAGGHr8KAILxwAAFBOz6cLlg570.png)
点完成,新建就好了!
接下来是这次会用的软件包设置!!!
![poYBAGGHsL2AUAC8AAHa1S9PV8Y803.png](http://file.elecfans.com/web2/M00/1B/B6/poYBAGGHsL2AUAC8AAHa1S9PV8Y803.png)
设置好后点关闭,会提示保存设置选项,点保存即可!
接下来会用到这几IO!如图
![pYYBAGGHsdWAOYclAA9a6ZVbpp4963.png](http://file.elecfans.com/web2/M00/1B/BE/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](http://file.elecfans.com/web2/M00/1B/B6/poYBAGGHs9CAVGLXAAC80dTZHUo405.png)
验证OK!
其实还可以在此基础上,让ColorLed'更好玩,喜欢的爱好者可以试试让它更炫酷!!!
最后,看到上一篇阅读量破2100了(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com))
很高兴!!!大家一起加油!!!
-
led
+关注
关注
242文章
23403浏览量
664130 -
RTOS
+关注
关注
22文章
821浏览量
119950 -
开发板
+关注
关注
25文章
5146浏览量
98456 -
RT-Thread
+关注
关注
31文章
1308浏览量
40504 -
中科蓝讯
+关注
关注
9文章
57浏览量
9956
发布评论请先 登录
相关推荐
ADS1285EVM-PDK评估板输出没有动态信号,只有静态信号是怎么回事?
【干货】性价比拉满!HK32F407VG开发板介绍
![【干货】性价比拉满!HK32F407<b class='flag-5'>VG</b>开发<b class='flag-5'>板</b>介绍](https://file1.elecfans.com/web2/M00/A4/0C/wKgaomUACo-Ae1rtAAB1LgQrdkg565.png)
机智云ESP8266开发板RGB彩灯控件
![机智云ESP8266开发<b class='flag-5'>板</b>RGB<b class='flag-5'>彩灯</b>控件](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
常见的电子元器件评估板的作用
AB变频器电源驱动板坏了怎么修
3562-评估板测试手册
ADS8-V1EBZ 亚德诺半导体 评估板 射频微波开发板
英飞凌推出用于2kV碳化硅MOSFET模块的数字驱动评估板
研华荣获信通院工业数字孪生大赛优秀作品奖
![研华荣获信通院工业数字孪生<b class='flag-5'>大赛</b>优秀<b class='flag-5'>作品</b>奖](https://file1.elecfans.com/web2/M00/CA/90/wKgZomYfKxCAapEXAABEj3S9x8w741.png)
玩转PSoC 6 RTT积木式开发套件,实现毫米波雷达等实用功能
![玩转PSoC 6 <b class='flag-5'>RTT</b>积木式开发套件,实现毫米波雷达等实用功能](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
基于CPK-RA2L1评估板的呼吸灯效果实现
![基于CPK-RA2L<b class='flag-5'>1</b><b class='flag-5'>评估</b><b class='flag-5'>板</b>的呼吸灯效果实现](https://file1.elecfans.com/web2/M00/C0/6F/wKgZomXVnaCAEB19AACYsHLE2xk310.png)
评论