基于Bearpi开发板鸿蒙OS之Hello world

这篇具有很好参考价值的文章主要介绍了基于Bearpi开发板鸿蒙OS之Hello world。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Bearpi开发环境搭建及代码获取请参考以下链接

开发环境搭建

用VS code打开获取到的源码后,在sample目录下新建一个文件夹my_app,在my_app下新建hello_world.c和BUILD.gn两个文件

基于Bearpi开发板鸿蒙OS之Hello world,C/C++,Bearpi开发板,HarmonyOS

在hello_world.c中加入以下内容

#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"

void Hello_World(void)
{
    for(int i=0; i<1000; i++)  // 打印1000次,间隔1秒打印一次
    {
        printf("Hello World!\r\n"); // 打印Hello World!
        usleep(1000000); // 延时1秒
    }
    
}
APP_FEATURE_INIT(Hello_World);   // 注册初时化模块
  • 在my_app下的BUILD.gn中加入以下内容
static_library("hello_world") {  //编译成静态库文件libhello_world.a
sources = [
"hello_world.c"       // 源文件名
]
include_dirs = [    //头文件路径
  
  "//utils/native/lite/include",  
  "//kernel/liteos_m/components/cmsis/2.0",
 
]
}
  • 在sample下的BUILD.gn中新增"my_app:hello_world",并将原来的"B2_basic_button:button_example"注释掉

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        #"A1_kernal_thread:thread_example",
        #"A2_kernel_timer:timer_example",
        #"A3_kernel_event:event_example",
        #"A4_kernel_mutex:mutex_example",
        #"A5_kernel_semaphore:semaphore_example",
        #"A6_kernel_message:message_example",

        #"B1_basic_led_blink:led_example",
        #"B2_basic_button:button_example",
        #"B3_basic_pwm_led:pwm_example",
        #"B4_basic_adc:adc_example",
        #"B5_basic_i2c_nfc:i2c_example",
        #"B6_basic_uart:uart_example",
        
        #"C1_e53_sf1_mq2:e53_sf1_example",
        #"C2_e53_ia1_temp_humi_pls:e53_ia1_example",
        #"C3_e53_sc1_pls:e53_sc1_example",
        #"C4_e53_sc2_axis:e53_sc2_example",
        #"C5_e53_is1_infrared:e53_is1_example",

        #"D1_iot_wifi_ap:wifi_ap",
        #"D2_iot_wifi_sta_connect:wifi_sta_connect",        
        #"D3_iot_udp_client:udp_client",
        #"D4_iot_tcp_server:tcp_server",
        #"D5_iot_mqtt:iot_mqtt",        
        #"D6_iot_cloud_oc:oc_mqtt",
        #"D7_iot_cloud_onenet:onenet_mqtt",
        #"D8_iot_cloud_oc_smoke:cloud_oc_smoke",
        #"D9_iot_cloud_oc_light:cloud_oc_light",
        #"D10_iot_cloud_oc_manhole_cover:cloud_oc_manhole_cover",
        #"D11_iot_cloud_oc_infrared:cloud_oc_infrared",
        #"D12_iot_cloud_oc_agriculture:cloud_oc_agriculture",
        #"D13_iot_cloud_oc_gps:cloud_oc_gps",
        
        "my_app:hello_world",
        
    ]
}

  • 使用MobaXterm工具编译后并烧录代码到开发板,运行效果图
    基于Bearpi开发板鸿蒙OS之Hello world,C/C++,Bearpi开发板,HarmonyOS

注册入口函数

基于Bearpi开发板鸿蒙OS之Hello world,C/C++,Bearpi开发板,HarmonyOS

  • APP_FEATURE_INIT宏原型
#define APP_FEATURE_INIT(func) LAYER_INITCALL_DEF(func, app_feature, "app.feature")
  • LAYER_INITCALL_DEF宏原型
// Default priority is 2, priority range is [0, 4]
#define LAYER_INITCALL_DEF(func, layer, clayer) \
    LAYER_INITCALL(func, layer, clayer, 2)
  • LAYER_INITCALL宏原型
#define LAYER_INITCALL(func, layer, clayer, priority)            \
    static const InitCall USED_ATTR __zinitcall_##layer##_##func \
        __attribute__((section(".zinitcall." clayer #priority ".init"))) = func
  • InitCall定义原型
typedef void (*InitCall)(void);
  • USED_ATTR 宏定义原型
#define USED_ATTR __attribute__((used))

-那么APP_FEATURE_INIT(my_led_example)宏依次展开如下文章来源地址https://www.toymoban.com/news/detail-639498.html

  1. APP_FEATURE_INIT(my_led_example)
LAYER_INITCALL_DEF(my_led_example, app_feature, "app.feature")
LAYER_INITCALL(my_led_example, app_feature, "app.feature", 2)
static const InitCall USED_ATTR __zinitcall_app_feature_my_led_example \
        __attribute__((section(".zinitcall.app_feature2 .init"))) = my_led_example

到了这里,关于基于Bearpi开发板鸿蒙OS之Hello world的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鸿蒙HarmonyOS应用开发能找到工作么?_harmony os 应用开发前景

    四、如何学习鸿蒙HarmonyOS应用开发技术? 为了能够帮助大家快速掌握鸿蒙(Harmony NEXT)应用开发技术知识。 首先得是开发语言 ArkTS,这个尤为重要,然后就是ArkUI声明式UI开发、Stage模型、网络/数据库管理、分布式应用开发、进程间通信与线程间通信技术、OpenHarmony多媒体技

    2024年04月27日
    浏览(31)
  • HarmonyOS第一课运行Hello World

    俗话说,工欲善其事必先利其器。鸿蒙第一课,我们先从简单的 Hello World 运行说起。要先运行 Hello World ,那么我们必须搭建 HarmonyOS 的开发环境。 在 HarmonyOS 应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具 DevEco Studio 的下载与安装以及环境配置。 DevEco

    2024年02月08日
    浏览(32)
  • <HarmonyOS第一课>运行Hello World课后作业

    HarmonyOS应用开发者基础认证课程课后习题,仅供参考,也欢迎各位小伙伴讨论指正。 判断题 1. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。                            正确(True) 2. main_pages.json存放页面page路径配置信息。                                   

    2024年02月04日
    浏览(26)
  • <HarmonyOS第一课>·1运行Hello World课后作业

    其中详细如下: AppScope中存放应用全局所需要的资源文件。         在AppScope,其中有resources文件夹和配置文件app.json5。AppScoperesourcesbase中包含element和media两个文件夹          其中,element文件夹主要存放公共的字符串、布局文件等资源。media存放全局公共的多媒体资

    2024年02月07日
    浏览(33)
  • <HarmonyOS第一课>1·运行Hello World【学习笔记+课后考核】

    其中详细如下: AppScope中存放应用全局所需要的资源文件。         在AppScope,其中有resources文件夹和配置文件app.json5。AppScoperesourcesbase中包含element和media两个文件夹          其中,element文件夹主要存放公共的字符串、布局文件等资源。media存放全局公共的多媒体资

    2024年02月11日
    浏览(35)
  • HarmonyOS鸿蒙基于Java开发: 相机开发

    目录 相机开发流程 接口说明 相机权限申请 相机设备创建 相机设备配置 相机帧捕获 相机设备释放 相机模块主要工作是给相机应用开发者提

    2024年01月20日
    浏览(39)
  • 详细教程 - 进阶版 鸿蒙harmonyOS应用 第十八节——鸿蒙OS应用性能优化指南

    性能优化是提升鸿蒙OS应用质量的重要手段。优化的角度包括加载速度、CPU使用率、内存占用、电量消耗、网络流量等多个方面。 本文将通俗解释性能表现的影响因素,并结合实例提供有效的检测分析方法与优化策略建议,帮助开发者系统地提升应用性能与用户体验。 2.1 加载时

    2024年01月16日
    浏览(36)
  • 初识基于鸿蒙系统(HarmonyOS)的App开发

    网传鸿蒙系统的下一个版本不再支持安卓,这几天看了一遍基于鸿蒙系统的App开发,现在二刷,顺便总结一下写一些心得或笔记吧。 先说IDE,IDE支持主流的Windows、Mac,包括M系列芯片的Mac,使用M芯片Mac的小伙伴看见有专门支持的软件,心里还是比较开心的,至少我是,嘿嘿。

    2024年01月19日
    浏览(60)
  • HarmonyOS鸿蒙开发指南:基于ArkTS开发 音频渲染开发指导

    目录 场景介绍 音频中断 状态检查 异步操作 开发步骤

    2024年01月16日
    浏览(37)
  • HarmonyOS鸿蒙开发指南:基于ArkTS开发 音频录制开发指导

    目录 场景介绍 开发步骤 全流程场景 正常录制场景 音频录制的主要工作是捕获音频信号

    2024年01月19日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包