找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

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

连天风火_268 2022-8-22 09:55:28
上次发布了一篇文章(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com)),解决很多爱好者从在RT-ThreadStudio新建项目到对应开发配置及下载等各部分环节的问题!得到了很多爱好者的认可!
        哈哈,先晒点赞的!
       
        重要的是帮好多爱好者解决了实际问题!
        接下来看看在如何AB32VG1评估板控制彩灯!
        在RT-ThreadStudio新建项目到对应开发配置及下载及验证测试!!!
        还是详细点!!!用截图-》
        新建项目!





        点完成,新建就好了!
        接下来是这次会用的软件包设置!!!
        设置好后点关闭,会提示保存设置选项,点保存即可!
        接下来会用到这几IO!如图
        软件代码内容暂时直接写在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 clickndelayTime=%dn", delayTime);
        break;
        case DOUBLE_CLICK:
        if (cnt_0 > 1)
        {
         cnt_0--;
        }
        delayTime = cnt_0 * 200;
        rt_kprintf("button 0 double clickndelayTime=%dn", delayTime);
        break;
        case LONG_PRESS_START:
        rt_kprintf("button 0 long press startn");
        break;
        case LONG_PRESS_HOLD:
        rt_kprintf("button 0 long press holdn");
        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 colorn");
        }
        else {
         rt_kprintf("more colorn");
        }
        rt_kprintf("button 1 single clickn");
        break;
        case DOUBLE_CLICK:
        rt_kprintf("more colorn");
        rt_kprintf("button 1 single clickn");
        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, world11n");
        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);
        }
        }
        编译好,下载验证如下!
        验证OK!
        其实还可以在此基础上,让ColorLed'更好玩,喜欢的爱好者可以试试让它更炫酷!!!
        最后,看到上一篇阅读量破2100了(【RTT大赛作品连载】AB32VG1评估板到货点灯测试-电子发烧友网 (elecfans.com))
        很高兴!!!大家一起加油!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

您需要登录后才可以回帖 立即登录
不错
2022-8-23 02:58:31
太赞了
2022-8-23 08:30:02
2022-8-24 07:41:27
看了楼主的帖子,让我陷入了严肃的思考中,我认为,如果不把楼主的帖子顶上去,就是对真理的一种背叛,
就是对谬论的极大妥协。因此,我决定义无返顾的顶了。
2022-8-27 07:11:15
第一次评论啊,好紧张啊,该怎么说啊,打多少字才显的有文采啊,这样说好不好啊,会不会成热贴啊,我写的这么好会不会太招遥,写的这么深奥别人会不会看不懂啊,怎样才能写出我博士后的水平呢,半年写了这么多会不会太快啊,好激动啊
2022-8-27 07:11:19
◥█▄▃▁
.......◥█☆█▅▄▃▁▁▁▁▁▃▄▅▅ 辽宁代表队 ▅▅▅▄▁
〓▇█████ 雷雷雷雷雷雷██████████████████▅▄▃▁▁
〓〓〓█████████████◤
....................轰炸过
..................轰炸过
...............轰炸过
............轰炸过
..........轰炸过
........轰炸过
......轰炸过
.....轰炸过
....轰炸过
...轰炸过
..轰炸过
.轰炸过 .轰炸过 楼上l楼下保持队行 !!!!!
2022-8-27 16:03:06
学习了!!!!
2022-8-27 18:11:07
谢谢楼主,,,收藏ing
2022-8-27 20:19:08
很给力。。。。很喜欢
2022-8-27 22:27:09
1234下一页
返回顶部