|
【HarmonyOS开发板试用】IOT板子LED闪烁,
本帖最后由 PCB62304753 于 2021-1-24 21:31 编辑
这周试一下GPIO控制
首先在./applications/sample/wifi-iot/app下新建一个目录,路径文件结构如下。
QQ截图20210124205847.png (7.47 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:23 上传
然后是app/my_LED/my_led.c文件 创建一个任务500ms翻转一下LED
- #include <stdio.h>
- #include <unistd.h>
- #include “ohos_init.h“
- #include “cmsis_os2.h“
- #include “wifiiot_gpio.h“
- #include “wifiiot_gpio_ex.h“
- #define LED_GPIO WIFI_IOT_IO_NAME_GPIO_9
- #define LED_TASK_STACK_SIZE 512 //任务堆栈
- #define LED_TASK_PRIO 25 //任务优先级
- static void *LedTask(const char *arg)
- {
- (void)arg;
- for(;;) {
- GpioSetOutputVal(LED_GPIO, 0);
- usleep(500*1000); //延时500ms
- GpioSetOutputVal(LED_GPIO, 1);
- usleep(500*1000);
- }
- return NULL;
- }
- static void myLedEntry(void)
- {
- osThreadAttr_t attr;
- GpioInit(); //初始化io模块
- IoSetFunc(LED_GPIO, WIFI_IOT_IO_FUNC_GPIO_9_GPIO); //配置GPIO9为GPIO模式
- GpioSetDir(LED_GPIO, WIFI_IOT_GPIO_DIR_OUT); //配置GPIO9为输出
- attr.name = “LedTask“;
- 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;
- if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
- printf(“[my_led] Falied to create LedTask!\n“); //创建任务失败后打印
- }
- }
- SYS_RUN(myLedEntry);
复制代码
app/my_led.c/BUILD.gn文件
- static_library(“my_led“) {
- sources = [
- “my_led.c“
- ]
- include_dirs = [
- “//utils/native/lite/include“,
- “//kernel/liteos_m/components/cmsis/2.0“,
- “//base/iot_hardware/inteRFaces/kits/wifiiot_lite“,
- ]
- }
复制代码
app/BUILD.gn 文件
- import(“//build/lite/config/component/lite_component.gni“)
- lite_component(“app“) {
- features = [
- “my_led:my_led“,
- ]
- }
复制代码
最后下载到板子上,效果如下。
VID_20210123_232729.gif (1.22 MB, 下载次数: 0)
下载附件 保存到相册
昨天 21:24 上传 |
|