HarmonyOS 鸿蒙Next中Hi3861点亮LED
HarmonyOS 鸿蒙Next中Hi3861点亮LED 我自己的 Hi3861 V100 的开发板的主控芯片 Hi3861,在板子上的引脚分配如下:
板载用于 log 输出的串口为 USART0(TX:GPIO4, RX:GPIO3),通过 CH340 转到 USB 端口。波特率默认为 115200。
1、
用于控制 LED 灯的 GPIO 引脚电路如下:
GPIO9 输出为低电平时,LED 点亮
2、
在上一篇《Hi3861 创建一个工程 demo -华为开发者论坛 | 华为开发者联盟 (huawei.com)》的基础上,编写 ledFlash.c 的代码如下:
#define LED_GPIO_PIN HI_IO_NAME_GPIO_9
#define LED_GPIO_OUTPUT IOT_GPIO_DIR_OUT
程序首先要使用 GPIO9,需要调用
IoTGpioInit(LED_GPIO_PIN);
来初始化 GPIO 引脚,并调用
IoTGpioSetDir(LED_GPIO_PIN, LED_GPIO_OUTPUT);
将 GPIO 引脚设置为输出(一个 GPIO 引脚可以有不同的编号和复用的工作模式,具体在 hi_io.h 中定义)。
void LedInit(void)
{
IoTGpioInit(LED_GPIO_PIN);
IoTGpioSetDir(LED_GPIO_PIN, LED_GPIO_OUTPUT);
}
之后通过
IoTGpioSetOutputVal(LED_GPIO_PIN, state);
来控制 GPIO 的输出电平。
void LedControl(eLedState state)
{
IoTGpioSetOutputVal(LED_GPIO_PIN, state);
}
通过
IoTGpioGetInputVal(LED_GPIO_PIN, &value);
来获得当前 GPIO 的电平。
eLedState LedGetState(void)
{
IotGpioValue value = IOT_GPIO_VALUE0;
IoTGpioGetInputVal(LED_GPIO_PIN, &value);
return (IOT_GPIO_VALUE0 == value ? LED_ON_STATE : LED_OFF_STATE);
}
LiteOS 中设置 tick 为 10ms,osDelay()
以 tick 为最小单位。
ledFlash.c 中,先设置了任务配置变量 osThreadAttr_t attr;
之后通过 osThreadNew((osThreadFunc_t)LedTask, NULL, &attr)
创建并 LedTask 任务并在之后由系统调用该任务。
static void LedExampleEntry(void)
{
osThreadAttr_t attr;
attr.name = LED_TASK_NAME;
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = LED_TASK_STACK_SIZE;
attr.priority = LED_TASK_PRIO;
printf("ledFlash start\n");
if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
printf("[LedExample] Falied to create GpioTask!\n");
}
}
L edTask 任务函数整体如下:
static void *LedTask(const char *arg)
{
LedInit();
eLedState state = LED_OFF_STATE;
while (1)
{
LedControl(state);
state = (state == LED_OFF_STATE ? LED_ON_STATE : LED_OFF_STATE);
printf("LED Flash Run\r\n");
osDelay(LED_FLASH_DELAY_1S) ;
}
}
更多关于HarmonyOS 鸿蒙Next中Hi3861点亮LED的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next中Hi3861点亮LED的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,使用Hi3861开发板点亮LED的步骤如下:
- 硬件连接:确保LED正确连接到Hi3861开发板的GPIO引脚。
- 创建工程:在DevEco Studio中新建一个Hi3861项目。
- 配置GPIO:在代码中配置GPIO引脚为输出模式。
- 控制LED:通过设置GPIO引脚的高低电平来控制LED的亮灭。
示例代码:
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "hi_gpio.h"
#define LED_GPIO 9 // 假设LED连接到GPIO9
void LED_Task(void *arg) {
hi_gpio_init();
hi_gpio_set_dir(LED_GPIO, HI_GPIO_DIR_OUT);
while (1) {
hi_gpio_set_output(LED_GPIO, HI_GPIO_VALUE1); // 点亮LED
osDelay(500);
hi_gpio_set_output(LED_GPIO, HI_GPIO_VALUE0); // 熄灭LED
osDelay(500);
}
}
void LED_Example(void) {
osThreadAttr_t attr = {0};
attr.stack_size = 1024;
attr.priority = osPriorityNormal;
osThreadNew(LED_Task, NULL, &attr);
}
APP_FEATURE_INIT(LED_Example);
编译并烧录代码到Hi3861开发板,LED将按照设定的时间间隔闪烁。