初学harmony开发板,学习的顺序很有讲究,因为要对整个系统熟悉有一定难,短时间是不可能对整个系统的编译和运行逻辑熟悉的,建议是要按照官方的建议的顺序,去熟悉这个板子。我一开始是按照 单片机的学习方法去点LED灯,撞了一鼻子的灰,硬是没有把LED灯点亮,那回过头来,我们是学习系统,就应该按照系统的学习方式,首先还是学习串口的调试和Hello world的入门程序操作。这里主要参考下面这个官方的贴子
https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start-0000001050168544
;
第一个程序是调试串口功能。
串口的连接和设置:
1,串口的使用方法是先将Hi3861_wifiiot_app_allinone.bin程序烧录好
2,之后在电脑打开串口终端(sscom或者putty), 然后打开串口号是和烧录同一个串口,3,然后设置好串口的波特率,如下:
设置波特率为115200,
8 位数据位,
1位停止位,,
设置完成后就打开串口
4,然后需要按开发板reset键一下。这个时候就可以看到串口终端有初始化信息返回来。
[attach]976675[/attach]
串口指令的操作:按照官网的方法,把下面这些AT指令按顺序发下去,最终可以顺利连接上路由器和ping通同网段的其他终端。
在DevEco的串口终端中,依次执行如下AT命令,启动STA模式,连接指定AP热点,并开启DHCP功能。
1. AT+STARTSTA - 启动STA模式
2. AT+SCAN - 扫描周边AP
3. AT+SCANRESULT - 显示扫描结果
4. AT+CONN="SSID",,2,"PASSWORD" - 连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码
5. AT+STASTAT - 查看连接结果
6. AT+DHCP=wlan0,1 - 通过DHCP向AP请求wlan0的IP地址
查看WLAN模组与网关联通是否正常,如下图所示。
7. AT+IFCFG - 查看模组接口IP
8. AT+PING=X.X.X.X - 检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址
[attach]976677[/attach]
如上图,ping 指令返回了另一个终端的reply
第二个程序是从开发最基本的Hello world程序着手,先摸到入门的方向。回到官方的Helloworld 程序贴子,按下面文件架构新建文件夹my_first_app以及目录下的文件hello_world.c ,BUILD.gn
[attach]976678[/attach]
全部需要更新单元的代码如下:
1,/applications/sample/wifi-iot/app/my_first_app/hello_world.c
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorld(void)
{
printf("[DEMO] Hello world.n");
}
SYS_RUN(HelloWorld);
2, /applications/sample/wifi-iot/app/my_first_app/ BUILD.gn
static_library("myapp") {
sources = [
"hello_world.c"
include_dirs = [
"//utils/native/lite/include"
}
3,/applications/sample/wifi-iot/app/ BUILD.gn
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"my_first_app:myapp",
}
按贴子的一步步走下来,按Helloworld的操作步骤完整的操作下来, 编译程序,烧录到板上, 不过板上是什么都没有显示的,按官网的步骤,没有坑,不过示例程序告诉我们在VScode集成的串口调试终端上可以看到返回的Helloword打印信息,我却没有实现,我是需要借助三方的串口终端sscom,才能看到运行的结果,于是烧录完成后把烧录口对应的串口在Sscom工具上打开,按动板上的reset键后,可以看到hello world的输出信息输出在串口终端了。
[attach]976679[/attach]
入门级的朋友需要注意的点是,这里刚开始容易漏了添加模块的入口索引到
/applications/sample/wifi-iot/app/BUILD.gn
目录下的features 列表,官方的贴子有详细的信息,一定是要在feature要中增加对应目录业务模式的索引,才能使目标业务模块参与编译。本例的具体代码见上面的第3段代码。