本文章為DshanMCU-R128s2-DEVKIT應(yīng)用開(kāi)發(fā)案例,本文案例(點(diǎn)亮一顆 LED 燈)代碼可以到全志在線(xiàn)-在線(xiàn)文檔或者復(fù)制鏈接前往下載。
首先我們搭建電路,如下:
載入方案
我們使用的開(kāi)發(fā)板是 DshanMCU-R128s2-DEVKIT,需要開(kāi)發(fā) C906 核心的應(yīng)用程序,所以載入方案選擇r128s2_module_c906
$ source envsetup.sh $ lunch_rtos 1
勾選GPIO驅(qū)動(dòng)
mrtos_menuconfig找到下列驅(qū)動(dòng)
Drivers Options ---> soc related device drivers ---> GPIO devices ---> [*] enable GPIO driver [*] enbale GPIO hal APIs Test command
編寫(xiě)程序
打開(kāi)你喜歡的編輯器,修改文件:lichee/rtos/projects/r128s2/module_c906/src/main.c
引入頭文件
#include
使用GPIO配置引腳
1.配置 GPIO 的上下拉狀態(tài)
使用 hal_gpio_set_pull(gpio_pin_t pin, gpio_pull_status_t pull);來(lái)設(shè)置。這里我們?cè)O(shè)置 PA18 引腳為默認(rèn)上拉狀態(tài)。
hal_gpio_set_pull(GPIOA(18), GPIO_PULL_UP);
2.配置 GPIO 輸入輸出模式
使用 hal_gpio_set_direction(gpio_pin_t pin, gpio_direction_t direction);來(lái)設(shè)置 GPIO 的輸入輸出模式,這里配置為輸出模式。
hal_gpio_set_direction(GPIOA(18), GPIO_DIRECTION_OUTPUT);
3.配置 GPIO 的 MUX 功能
GPIO 通常有多種功能,需要配置 MUX 選擇需要的功能,使用hal_gpio_pinmux_set_function(gpio_pin_t pin, gpio_muxsel_t function_index);來(lái)設(shè)置 GPIO 的復(fù)用功能,這里配置為GPIO 輸出模式(GPIO_MUXSEL_OUT)
hal_gpio_pinmux_set_function(GPIOA(18), GPIO_MUXSEL_OUT);
4.配置 GPIO 的電平
使用hal_gpio_set_data(gpio_pin_t pin, gpio_data_t data);來(lái)配置 GPIO 的電平,這里配置PA18為高電平點(diǎn)亮 LED
hal_gpio_set_data(GPIOA(18), GPIO_DATA_HIGH);
5.完整的配置 GPIO
hal_gpio_set_pull(GPIOA(18), GPIO_PULL_UP); // 配置 GPIO 的上下拉狀態(tài) hal_gpio_set_direction(GPIOA(18), GPIO_DIRECTION_OUTPUT); // 配置 GPIO 輸入輸出模式 hal_gpio_pinmux_set_function(GPIOA(18), GPIO_MUXSEL_OUT); // 配置 GPIO 的 MUX 功能 hal_gpio_set_data(GPIOA(18), GPIO_DATA_HIGH); // 配置 GPIO 的電平
以此類(lèi)推,我們同時(shí)配置PA18,PA13,PA12的 GPIO
hal_gpio_set_pull(GPIOA(18), GPIO_PULL_UP); hal_gpio_set_direction(GPIOA(18), GPIO_DIRECTION_OUTPUT); hal_gpio_pinmux_set_function(GPIOA(18), GPIO_MUXSEL_OUT); hal_gpio_set_data(GPIOA(18), GPIO_DATA_HIGH); hal_gpio_set_pull(GPIOA(13), GPIO_PULL_UP); hal_gpio_set_direction(GPIOA(13), GPIO_DIRECTION_OUTPUT); hal_gpio_pinmux_set_function(GPIOA(13), GPIO_MUXSEL_OUT); hal_gpio_set_data(GPIOA(13), GPIO_DATA_HIGH); hal_gpio_set_pull(GPIOA(12), GPIO_PULL_UP); hal_gpio_set_direction(GPIOA(12), GPIO_DIRECTION_OUTPUT); hal_gpio_pinmux_set_function(GPIOA(12), GPIO_MUXSEL_OUT); hal_gpio_set_data(GPIOA(12), GPIO_DATA_HIGH);
結(jié)果
編譯固件后燒錄,可以看到三色 LED 燈同時(shí)亮起。
流水燈
為了實(shí)現(xiàn)流水燈,我們先實(shí)現(xiàn)一個(gè)sleep函數(shù)
static inline int msleep(int ms) { vTaskDelay(ms / portTICK_RATE_MS); }
然后實(shí)現(xiàn)流水燈邏輯即可,之前已經(jīng)設(shè)置過(guò)的GPIO狀態(tài)不需要重復(fù)設(shè)置。
while (1) { hal_gpio_set_data(GPIOA(18), GPIO_DATA_HIGH); hal_gpio_set_data(GPIOA(13), GPIO_DATA_LOW); hal_gpio_set_data(GPIOA(12), GPIO_DATA_LOW); msleep(100); hal_gpio_set_data(GPIOA(18), GPIO_DATA_LOW); hal_gpio_set_data(GPIOA(13), GPIO_DATA_HIGH); hal_gpio_set_data(GPIOA(12), GPIO_DATA_LOW); msleep(100); hal_gpio_set_data(GPIOA(18), GPIO_DATA_LOW); hal_gpio_set_data(GPIOA(13), GPIO_DATA_LOW); hal_gpio_set_data(GPIOA(12), GPIO_DATA_HIGH); msleep(100); }
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349920 -
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
107749 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4896瀏覽量
97059 -
GPIO
+關(guān)注
關(guān)注
16文章
1188瀏覽量
51836
原文標(biāo)題:R128點(diǎn)燈指南
文章出處:【微信號(hào):gh_79acfa3aa3e3,微信公眾號(hào):全志在線(xiàn)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論