OpenHarmony輕量系統(tǒng)開發(fā)其它驅(qū)動開發(fā)示例
原創(chuàng)??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??
8.1代碼示例
OpenHarmony代碼中,Hi3861提供了絕大部分的驅(qū)動示例代碼,文件路徑:
device\soc\hisilicon\hi3861v100\sdk_liteos\app\demo\src
開發(fā)者可以參考,文件如下:
8.2如何使用
(1)創(chuàng)建文件夾
一般情況下,我們自己如果需要使用某個驅(qū)動,編寫的代碼要存放在app目錄下,
這里我們以app_demo_pwm.c為例。
我們在app中新建文件夾 demo_pwm,里面存放代碼 demo_pwm.c,然后app_demo_pwm.c所有的代碼都復制到demo_pwm.c中,整個文件夾如下:
(2)編寫入口函數(shù)
我們需要為demo_pwm.c編寫一個入口函數(shù),通常情況下,是創(chuàng)建一個線程去執(zhí)行,通用的代碼示例如下:
void *PWM_Task(const char *arg)
{
arg = arg;
while(1)
{
//調(diào)用app_demo_pwm
app_demo_pwm();
usleep(10000);
}
}
void pwm_demo(void)
{
osThreadAttr_t attr;
attr.name = "PWM_Task";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = 2048;
attr.priority = 26;
if (osThreadNew((osThreadFunc_t)PWM_Task, NULL, &attr) == NULL) {
printf("[PWM_Task] Falied to create PWM_Task!\n");
}
}
SYS_RUN(pwm_demo);
(3)頭文件
此外我們還得修改頭文件,首先我們先刪除掉原先的include的頭文件,然后添加如下通用頭文件:
#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include <hi_types_base.h>
#include <hi_early_debug.h>
接著我們可以根據(jù)自己使用到的哪個驅(qū)動,添加對應的驅(qū)動頭文件,比如我們用到的是pwm,那么添加的頭文件如下:
#include
(4)頭文件路徑
此外我們還得修改頭文件,這里主要修改 BUILD.gn文件,通常情況下需要增加:
"http://device/soc/hisilicon/hi3861v100/hi3861_adapter/hals/communication/wifi_lite/wifiservice",
"http://device/soc/hisilicon/hi3861v100/hi3861_adapter/kal",
修改后如下:
(5)修改usr_config.mk文件
此外,如果某個驅(qū)動對應的宏我們?nèi)绻麤]有打開,那么我們可能還得修改usr_config.mk文件,該文件通常路徑為:
device\soc\hisilicon\hi3861v100\sdk_liteos\build\config\usr_config.mk
這里我們用到了PWM,修改前:
修改后:
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
??https://harmonyos.51cto.com??