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进行点灯的主要内容,如果未能解决你的问题,请参考以下文章