@oiouou123 已经解决,忘了勾选硬件复位烧写模式模式了
O
oiouou123 发布的最佳帖子
-
【XR806开发板试用】 PWM播放《铃儿响叮当》
PWM播放<<铃儿响叮当>>
参考
OpenHarmony LYEVK-3861开发板播放《蜜雪冰城》
OpenHarmony Neptune开发板PWM驱动 播放《小星星》
收到XR806开发板了,之前在公众号看到有人用开发板播放蜜雪冰城,快到圣诞节了,今天试下播放<<铃儿响叮当>>。环境搭建
- WSL2 Ubuntu 20.04 LTS开发环境搭建
感觉和正常的Ubuntu环境配置(220119发现链接失效,我从提交记录里找到了当时参考的那一篇)没啥区别,区别有以下几个
a.在 安装必要的库和工具的时候把
libc6-dev-amd64
替换为libc6-dev
就成,这个方法参考github上边wsl给的遇到E: Unable to locate package libc6-dev-amd64的解决方案b.我没装LLVM也可以烧录
- XR806开发板、无源蜂鸣器
开发
曲谱
流程
代码编写
cd device/xradio/xr806/ohosdemo mkdir beeperMusic
目录如下
. ├── BUILD.gn ├── beeperMusic │ ├── BUILD.gn │ └── src │ └── main.c ├── hello_demo ├── iot_peripheral └── wlan_demo
源代码
//main.c #include <stdio.h> #include <string.h> #include <unistd.h> #include "kernel/os/os.h" #include "iot_pwm.h" #include "ohos_init.h" static OS_Thread_t g_main_thread; // 音符对应的频率 static const uint16_t g_tuneFreqs[] = {523,587,659,698,784,880,988}; // 曲谱音符 static const uint8_t g_scoreNotes[] = { 3,3,3, 3,3,3, 3,5,1,2, 3, 4,4,4, 4,4,3,3, 3,2,2,1, 2,5, 3,3,3, 3,3,3, 3,5,1,2, 3, 4,4,4, 4,4,3,3, 5,5,4,2, 1, }; // 曲谱时值 static const uint8_t g_scoreDurations[] = { 4,4,8, 4,4,8, 4,4,4,4, 16, 4,4,4, 4,4,4,8, 4,4,4,4, 8,8, 4,4,8, 4,4,8, 4,4,4,4, 16, 4,4,4, 4,4,4,8, 4,4,4,4, 16, }; static void BeeperMusicTask(const char *arg) { (void)arg; printf("BeeperMusicTask start!\r\n"); IoTPwmInit(0); unsigned int pwm_duty_ratio = 30; for (size_t i = 0; i < sizeof(g_scoreNotes)/sizeof(g_scoreNotes[0]); i++) { unsigned int pwm_delay_cnt = 0; uint32_t tune = g_scoreNotes[i]; // 音符 uint16_t freqDivisor = g_tuneFreqs[tune]; uint32_t tuneInterval = g_scoreDurations[i] * 10; // 音符时间 printf("%d %d %d %d\r\n", tune,freqDivisor, pwm_duty_ratio,tuneInterval); IoTPwmStart(0,30,freqDivisor); OS_MSleep(tuneInterval*5); IoTPwmStop(0); } IoTPwmDeinit(0); } void MusicTestMain(void) { printf("Music Test Start\n"); if (OS_ThreadCreate(&g_main_thread, "MainThread", BeeperMusicTask, NULL, OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) { printf("[ERR] Create MainThread Failed\n"); } } SYS_RUN(MusicTestMain);
beeperMusic目录的BUILD.gn
import("//device/xradio/xr806/liteos_m/config.gni") static_library("app_music") { configs = [] sources = [ "src/main.c", ] cflags = board_cflags include_dirs = board_include_dirs include_dirs += [ "//kernel/liteos_m/kernel/arch/include", "include", "//base/iot_hardware/peripheral/interfaces/kits", ] }
group("ohosdemo") { deps = [ #"hello_demo:app_hello", #"iot_peripheral:app_peripheral", #"wlan_demo:app_WlanTest", "beeperMusic:app_music" ] }
效果
-
直接拷贝官网点灯代码出错error: unknown type name '\U0000200b' 及解决方案
拷贝点灯 hb build -f 遇到了如下报错
../../../device/xradio/xr806/ohosdemo/LED/main.c:17:1: error: unknown type name '\U0000200b' 17 | IoTGpioSetOutputVal(GPIO_ID_PA21, 1); //(5)输出高电平 | ../../../device/xradio/xr806/ohosdemo/LED/main.c:8:22: error: expected declaration specifiers or '...' before numeric constant 8 | #define GPIO_ID_PA21 21 | ^~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:17:28: note: in expansion of macro 'GPIO_ID_PA21' 17 | IoTGpioSetOutputVal(GPIO_ID_PA21, 1); //(5)输出高电平 | ^~~~~~~~~~~~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:17:42: error: expected declaration specifiers or '...' before numeric constant 17 | IoTGpioSetOutputVal(GPIO_ID_PA21, 1); //(5)输出高电平 | ^ ../../../device/xradio/xr806/ohosdemo/LED/main.c:18:1: error: unknown type name '\U0000200b' 18 | OS_MSleep(500); | ../../../device/xradio/xr806/ohosdemo/LED/main.c:18:18: error: expected declaration specifiers or '...' before numeric constant 18 | OS_MSleep(500); | ^~~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:19:1: error: unknown type name '\U0000200b' 19 | IoTGpioSetOutputVal(GPIO_ID_PA21, 0); //(6)输出高电平 | ../../../device/xradio/xr806/ohosdemo/LED/main.c:8:22: error: expected declaration specifiers or '...' before numeric constant 8 | #define GPIO_ID_PA21 21 | ^~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:19:28: note: in expansion of macro 'GPIO_ID_PA21' 19 | IoTGpioSetOutputVal(GPIO_ID_PA21, 0); //(6)输出高电平 | ^~~~~~~~~~~~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:19:42: error: expected declaration specifiers or '...' before numeric constant 19 | IoTGpioSetOutputVal(GPIO_ID_PA21, 0); //(6)输出高电平 | ^ ../../../device/xradio/xr806/ohosdemo/LED/main.c:20:1: error: unknown type name '\U0000200b' 20 | OS_MSleep(500); | ../../../device/xradio/xr806/ohosdemo/LED/main.c:20:18: error: expected declaration specifiers or '...' before numeric constant 20 | OS_MSleep(500); | ^~~ ../../../device/xradio/xr806/ohosdemo/LED/main.c: In function 'LEDMain': ../../../device/xradio/xr806/ohosdemo/LED/main.c:28:1: error: '\U0000200b' undeclared (first use in this function) 28 | OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) { | ../../../device/xradio/xr806/ohosdemo/LED/main.c:28:1: note: each undeclared identifier is reported only once for each function it appears in ../../../device/xradio/xr806/ohosdemo/LED/main.c:28:4: error: expected ')' before 'OS_PRIORITY_NORMAL' 28 | OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) { | ^ | ) ../../../device/xradio/xr806/ohosdemo/LED/main.c:27:7: error: too few arguments to function 'OS_ThreadCreate' 27 | if (OS_ThreadCreate(&g_main_thread, "MainThread", MainThread, NULL, | ^~~~~~~~~~~~~~~ In file included from ../../../device/xradio/xr806/xr_skylark/include/kernel/os/os.h:34, from ../../../device/xradio/xr806/ohosdemo/LED/main.c:3: ../../../device/xradio/xr806/xr_skylark/include/kernel/os/os_thread.h:92:11: note: declared here 92 | OS_Status OS_ThreadCreate(OS_Thread_t *thread, const char *name, | ^~~~~~~~~~~~~~~ ../../../device/xradio/xr806/ohosdemo/LED/main.c:29:4: error: expected ';' before 'printf' 29 | printf("[ERR] Create MainThread Failed\n"); | ^ ~~~~~~ | ; [101/252] gcc cross compiler obj/kernel/liteos_m/kal/posix/src/libposix.time.o
尝试了下把17行前边的字符全删了,重新编译不报错了
如法炮制把其他出错行搞了下,成功编译
感觉是官网代码拷贝的时候混入了奇怪的字符,特发帖提醒下各位(吐槽下) -
XR806helloworld使用问题
参考XR806OpenHarmony的Hello world,烧录之后没有输出hello world,只有一些平台信息,能打开console,怎么正确输出hello world呢?