RT-Thread Studio快速配置GPIO进行点灯

Posted 嵌入式up笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RT-Thread Studio快速配置GPIO进行点灯相关的知识,希望对你有一定的参考价值。

文章目录

RT-Thread Studio快速配置GPIO进行点灯

1. 前言说明

1.1 本章内容

本章通过RT-Thread Studio配置AB32VG1片上外设GPIO的引脚,控制RGB彩灯进行简单的颜色变换

1.2 模块介绍

开发板上板载一个三色RGB彩灯

RGB彩灯原理图如下

开发板引脚连接如下图,引脚PA2对应蓝灯,引脚PE1对应红灯,引脚PE4对应绿灯,RGB为共阳极,当引脚拉低时,对应的led点亮

1.3 开发软件

编译平台:RT-Thread Studio: 安装链接

下载平台:Downloader: 安装链接

2. 步骤说明

2.1 新建工程

点击 文件-> 新建-> RT-Thread项目控件

选择基于开发板的项目,填写工程名字,选择我们使用到的开发板(AB32VG1),调试器我们随便选,下载方式不是通过此处下载

注意:如果第一次使用RISC-V芯片需要安装工具链,在SDK管理器中下载工具链

然右击项目名称,进入属性

找到MCU->RISC-V ToolchainsPat ,配置Tool的环境,在软件安装位置下面的路径中

软件安装位置\\RT-ThreadStudio\\repo\\Extract\\ToolChain_Support_Packages\\RISC-V\\RISC-V-GCC\\10.1.0\\bin

工程新建后左边的项目资源管理器会显示我们的工程,我们把他展开,编译一下,编译结果如下

编译无报错,新建工程完成了!

2.2 编写RGB驱动程序文件

新建程序文件:在applications文件夹下新建立一个rgb.c和.h文件,建立后如下

rgb.c内写入如下程序

添加头文件,定义一个RGB结构体,并声明LED

#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_pin_get获取led句柄,通过句柄设置对应引脚模式为输出模式

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.2");
    // 设置引脚为输出方式
    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);

编写rgb不同颜色点灯驱动,通过rt_pin_write来控制gpio口电平高低,点亮红灯即拉低红灯引脚,拉高其他两个颜色灯的引脚

//传入参数 on=1:对应亮,on=0:对应灭
//红灯驱动
void RGB_Red(rt_bool_t on)

    if (on) 
        rt_pin_write(Led.LED_R, PIN_LOW);
    else 
        rt_pin_write(Led.LED_R, PIN_HIGH);
    
    rt_pin_write(Led.LED_G, PIN_HIGH);
    rt_pin_write(Led.LED_B, PIN_HIGH);

//蓝灯驱动
void RGB_Blue(rt_bool_t on)
    if (on) 
        rt_pin_write(Led.LED_B, PIN_LOW);
    else 
        rt_pin_write(Led.LED_B, PIN_HIGH);
    
    rt_pin_write(Led.LED_G, PIN_HIGH);
    rt_pin_write(Led.LED_R, PIN_HIGH);

//绿灯驱动
void RGB_Green(rt_bool_t on)

    if (on) 
        rt_pin_write(Led.LED_G, PIN_LOW);
    else 
        rt_pin_write(Led.LED_G, PIN_HIGH);
    
    rt_pin_write(Led.LED_R, PIN_HIGH);
    rt_pin_write(Led.LED_B, PIN_HIGH);

2.3 编写主程序文件

编写rgb彩灯运行线程,三种颜色依次切换,中间延时1s

static void rgb_thread_entry(void* p)

    RGB_Init();
    while(1)
    
      rt_thread_mdelay(1000);
      RGB_Blue(1);
      rt_thread_mdelay(1000);
      RGB_Green(1);
      rt_thread_mdelay(1000);
      RGB_Red(1);
    

创建线程启动函数,用于启动上一步编写的线程主体

static int Thread_RGB(void)

    rt_thread_t thread = RT_NULL;
    thread = rt_thread_create("rgb", rgb_thread_entry, RT_NULL, 512, 10, 10);
    if(thread == RT_NULL)
    
        rt_kprintf("Thread_GRB Init ERROR");
        return RT_ERROR;
    
    rt_thread_startup(thread);

添加将线程初始化添加入系统初始化中

INIT_APP_EXPORT(Thread_RGB);

3. 代码验证

编译程序,可以看到无报错

编译完成,打开Downloaded下载器,通过download下载生成的.dcf文件(第一次使用前需要先安装串口驱动)

扫描串口,点击开始后,按一下板子上复位按键下载程序

程序现象

4. 章节总结

本章节我们学会了如何在RT-Thread上配置GPIO口,总的来说GPIO的使用步骤很简单,第一步获取对应GPIO句柄,第二步配置GPIO模式,之后就可以调用rtt函数对GPIO进行读写操作了!

以上是关于RT-Thread Studio快速配置GPIO进行点灯的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thread Studio快速配置AB32进行音频输出

RT-Thread Studio快速配置IIC驱动OLED

RT-Thread Studio快速配置AB32读写SD卡

RT-Thread初识学习-04-GPIO操作

RT-Thread Studio配置连接WIFI模块

使用技巧如何在RT-Thread Studio上使用GIT进行工程管理