在開(kāi)始點(diǎn)燈之前,我們需要從“https://www.rt-thread.org/page/studio.html”下載RT-Thread Studio開(kāi)發(fā)工具,從“https://gitee.com/bluetrum/Downloader/blob/main/Downloader_v1.9.7.zip”下載燒錄固件的工具,然后將RT-Thread Studio快速安裝完畢后,安裝針對(duì)AB32VG1開(kāi)發(fā)板的資源包
安裝RT-Thread Studio中集成SDK所必要的最新資源庫(kù)
工程源碼的編譯當(dāng)然少不了交叉編譯器,工程采用RISC-V GCC編譯器,勾選該項(xiàng)并安裝
安裝完這些組件后,然后將開(kāi)發(fā)板與PC端連接,新建工程,選擇“基于開(kāi)發(fā)板”
根據(jù)自己的需要,使能串口外設(shè)接口
開(kāi)發(fā)板上板載一個(gè)三色RGB彩燈,控制RGB燈的變化實(shí)際上就是控制這三個(gè)GPIO口的電平輸出。板上的電路連接原理圖如下:
由上圖可知,引腳PA1對(duì)應(yīng)藍(lán)燈,引腳PE1對(duì)應(yīng)紅燈,引腳PE4對(duì)應(yīng)綠燈,RGB為共陽(yáng)極,當(dāng)引腳拉低時(shí),對(duì)應(yīng)的led點(diǎn)亮,在“applications”文件夾下新建立一個(gè)rgb.c和rgb.h文件,源代碼編輯如下:
#ifndef APPLICATIONS_RGB_C_
#define APPLICATIONS_RGB_C_
#endif /* APPLICATIONS_RGB_C_ */
#include "rgb.h"
#include
#include "board.h"
struct Led_s
{
uint8_t LED_R;
uint8_t LED_B;
uint8_t LED_G;
};
struct Led_s 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.1");
//設(shè)置引腳為輸出方式
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);
}
//紅燈驅(qū)動(dòng)
void RGB_Red(rt_bool_t on)
{
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_R, PIN_LOW);
}else {
rt_pin_write(Led.LED_R, PIN_HIGH);
}
}
//藍(lán)燈驅(qū)動(dòng)
void RGB_Blue(rt_bool_t on){
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_R, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_B, PIN_LOW);
}else {
rt_pin_write(Led.LED_B, PIN_HIGH);
}
}
//綠燈驅(qū)動(dòng)
void RGB_Green(rt_bool_t on)
{
rt_pin_write(Led.LED_R, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_G, PIN_LOW);
}else {
rt_pin_write(Led.LED_G, PIN_HIGH);
}
}
主函數(shù)的源文件中包含“rgb.h”頭文件,然后編寫(xiě)rgb彩燈運(yùn)行線程,三種顏色依次切換,中間延時(shí)1秒鐘。
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);
}
}
接著創(chuàng)建線程啟動(dòng)函數(shù),用于啟動(dòng)上一步編寫(xiě)的線程主體
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);
}
最后記得將線程初始化添加入系統(tǒng)初始化中:INIT_APP_EXPORT(Thread_RGB);
然后編譯,打開(kāi)“Downloader.exe”下載軟件,選擇剛才編譯生成的.dcf文件,選擇對(duì)應(yīng)的串口號(hào)(如果電腦未識(shí)別到串口,需要安裝對(duì)應(yīng)的USB轉(zhuǎn)串口驅(qū)動(dòng)),點(diǎn)擊“開(kāi)始”,按一下板子上復(fù)位按鍵,即可完成程序的燒錄。
開(kāi)發(fā)板燒錄完成后,RGB燈點(diǎn)亮的效果如下圖所示,此次分享告一段落,使用RT-Thread Studio能夠更快的構(gòu)建工程框架,而且編輯代碼時(shí)會(huì)自動(dòng)彈出備選的參考函數(shù),實(shí)現(xiàn)的方式引入線程的概念,如果能夠使用RT-Thread Studio內(nèi)部集成的下載接口下載程序就更好了,這里必須采用官方提供的“Downloader.exe”下載工具。
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5087瀏覽量
97792 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1299瀏覽量
40263 -
RISC-V
+關(guān)注
關(guān)注
45文章
2306瀏覽量
46291 -
中科藍(lán)訊
+關(guān)注
關(guān)注
9文章
57瀏覽量
9906
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論