開發板簡介
HMI-Board 為 RT-Thread 聯合瑞薩推出的高性價比圖形評估套件,相比較于傳統的 HMI +主控板,一套硬件即可實現 HMI + IoT +控制的全套能力。依托于瑞薩高性能芯片 RA6M3 及 RT-Thread 軟件生態,HMI Board 不僅硬件性能強勁,同時軟件生態豐富,助力開發者快速開發出 GUI 智能硬件產品。
開發環境搭建指南
詳見瑞薩RA6M3開發實踐指南-UART實踐(qq.com)
本章內容
我們將使用RT-Thread Studio來創建工程,配置IO,最終實現使用板載三個按鍵控制板載的兩個LED的亮與滅。
模塊介紹:
板載的兩個LED燈接入了P209與P210,原理圖如下:
板載了三個按鍵,分別接入了P005、P006、P007。原理圖如下:
開發軟件:
RT-ThreadStudio
步驟說明
1、新建工程
●安裝開發板SDK:
打開RT-Thread Studio,點擊SDK管理器,下載開發板SDK:
等待安裝結束后退出SDK管理器
●新建HMI_RA6M3_GPIO工程:
●選擇基于開發板創建工程
●輸入工程名稱點完成生成工程:
●生成工程預覽如下:
2.配置RASC工程
●選擇RA Smart Configurator文件夾位置,只需要選到FSP文件夾就行了:
●在RASC工程配置LED為輸出模式,按鍵為輸入模式,并設置為默認的中斷號。保存并生成工程:
3. 編寫代碼
我們編寫hal_entry.c代碼如下:
/*
*Copyright(c)2006-2023,RT-ThreadDevelopmentTeam
*
*SPDX-License-Identifier:Apache-2.0
*
*ChangeLogs:
*DateAuthorNotes
*2021-10-10Shermanfirstversion
*/
#include
#include"hal_data.h"
#include
#defineUSER1_PINBSP_IO_PORT_02_PIN_09/*OnboardLEDpins*/
#defineUSER2_PINBSP_IO_PORT_02_PIN_10/*OnboardLEDpins*/
#defineTN0_PINBSP_IO_PORT_00_PIN_05/*OnboardTN0pins*/
#defineTN1_PINBSP_IO_PORT_00_PIN_06/*OnboardTN1pins*/
#defineTN2_PINBSP_IO_PORT_00_PIN_07/*OnboardTN2pins*/
staticuint8_tled_flash_state=0;
voidled_off(void*args)
{
rt_kprintf("bnt0down! ");
led_flash_state=0;
}
voidled_on(void*args)
{
rt_kprintf("bnt1down! ");
led_flash_state=1;
}
#defineTHREAD_PRIORITY25
#defineTHREAD_STACK_SIZE512
#defineTHREAD_TIMESLICE5
staticrt_thread_ttid1=RT_NULL;
/*線程1的入口函數*/
staticvoidthread_led_flash_entry(void*parameter)
{
staticuint32_tflash_cnt;
while(1)
{
if(led_flash_state==0){
rt_pin_write(USER1_PIN,PIN_LOW);
rt_pin_write(USER2_PIN,PIN_LOW);
}
elseif(led_flash_state==1){
rt_pin_write(USER1_PIN,PIN_HIGH);
rt_pin_write(USER2_PIN,PIN_HIGH);
}
elseif(led_flash_state==2){
if(flash_cnt<50)
{
rt_pin_write(USER1_PIN,PIN_HIGH);
rt_pin_write(USER2_PIN,PIN_LOW);
}
elseif(flash_cnt<100)
{
rt_pin_write(USER1_PIN,PIN_LOW);
rt_pin_write(USER2_PIN,PIN_HIGH);
}
else{
flash_cnt=0;
}
flash_cnt++;
}
rt_thread_mdelay(10);
}
}
voidkey_init(void)
{
/*按鍵0引腳為輸入模式*/
rt_pin_mode(TN0_PIN,PIN_MODE_INPUT_PULLUP);
/*綁定中斷,下降沿模式,回調函數名為beep_on*/
rt_pin_attach_irq(TN0_PIN,PIN_IRQ_MODE_FALLING,led_off,RT_NULL);
/*使能中斷*/
rt_pin_irq_enable(TN0_PIN,PIN_IRQ_ENABLE);
/*按鍵1引腳為輸入模式*/
rt_pin_mode(TN1_PIN,PIN_MODE_INPUT_PULLUP);
/*綁定中斷,下降沿模式,回調函數名為beep_on*/
rt_pin_attach_irq(TN1_PIN,PIN_IRQ_MODE_FALLING,led_on,RT_NULL);
/*使能中斷*/
rt_pin_irq_enable(TN1_PIN,PIN_IRQ_ENABLE);
/*按鍵2引腳為輸入模式*/
rt_pin_mode(TN2_PIN,PIN_MODE_INPUT_PULLUP);
}
voidhal_entry(void)
{
rt_kprintf(" HelloRT-Thread! ");
key_init();
/*創建線程1,名稱是thread1,入口是thread1_entry*/
tid1=rt_thread_create("thread_led",
thread_led_flash_entry,RT_NULL,
THREAD_STACK_SIZE,
THREAD_PRIORITY,THREAD_TIMESLICE);
/*如果獲得線程控制塊,啟動這個線程*/
if(tid1!=RT_NULL)
rt_thread_startup(tid1);
while(1)
{
if(rt_pin_read(TN2_PIN)==0)
{
rt_thread_delay(10);
if(rt_pin_read(TN2_PIN)==0)
led_flash_state=2;
rt_kprintf(" TN2pushdown! ");
}
rt_thread_delay(10);
}
}
4.代碼驗證
我們編譯下載后,我們按TN0,兩個LED亮,按下TN1,兩個LED燈滅,按下TN2,兩個LED燈交替閃爍。
章節總結
本章主要介紹了如果新建GPIO工程,RASC工程配置,驅動三個按鍵與三個LED燈的GPIO,涉及到了GPIO的輸出、輸入的配置,中斷輸入的配置與以及中斷回調函數的編寫。本文函蓋了GPIO的所有操作。
也可以閱讀帖子:
https://club.rt-thread.org/ask/article/ddc499ea99f1ea23.html
【購買HMIBoard】
———————End———————
新生態,創未來 | 2023RT-Thread 開發者大會開啟報名
邀請你參加 2023 RT-Thread 開發者大會的六大理由
1、刷新RT-Thread最新技術動態和產業服務能力
2、聆聽行業大咖分享,洞察產業趨勢
3、豐富的技術和產品展示,前沿技術發展和應用
5、精美伴手禮人手一份開發板盲盒和免費午餐
6、黑科技滿點~滴水湖地鐵口安排無人車接送至會場
立刻掃碼報名吧
-
RT-Thread
+關注
關注
32文章
1369瀏覽量
41506 -
RA6M3
+關注
關注
0文章
52瀏覽量
249
原文標題:RA6M3 RT-Thread* LVGL HMI Board開發實踐指南-GPIO實踐
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
2025 RT-Thread全球技術大會議程正式發布!

【直播預告】《實時操作系統應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介

【RA-Eco-RA4M2開發板評測】開箱和RT-Thread上手操作
HMI-Board OTA升級快速上手指南

RT-Thread上CAN實踐

開源共生 商業共贏 | RT-Thread 2024開發者大會報名啟動!

課程上線 - RT-Thread應用開發實踐課程上線慕課平臺啦!

新書發布——《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》

獲獎公布!2024 RT-Thread全球巡回線下培訓火熱來襲!報名提問有獎!
【QEMU系列】不用開發板運行RT-Thread指南-ARM架構

2024 RT-Thread全球巡回 線下培訓火熱來襲!

rt-thread中的lvgl怎樣才使用外部RAM?
lvgl移植到RT-Thread Nano后進入硬件錯誤中斷的原因?
開發者分享 | 基于先楫RT-Thread BSP,使用CLion開發應用

評論