0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NCS怎么添加.c.h文件到工程

TedLee 来源:jf_29076475 作者:jf_29076475 2025-06-27 14:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【NCS随笔】

SEGGER添加方式

在介绍NCS工程之前,我们先看看大家熟悉的SEGGER工程(Keil同理):

左边的项目栏可以看到工程的配置,通过点击 User Include Directories添加头文件路径

在这里插入图片描述

对工程或者文件夹鼠标右击就可以添加文件或者.c文件管理文件等操作。
在这里插入图片描述

可以看出,Segger添加源文件和目录的方式比较直观,但是如果文件比较多,路径比较深的话效率就会比较低下。
在这里插入图片描述

NCS 构建

Zephyr 使用CMake作为构建系统,CMake 是一个跨平台的构建工具,它通过读取CMakeLists.txt文件来生成平台特定的构建文件,
Zephyr 的构建系统基于GNUMakeCMake ,但 CMake 是主要的配置入口。每个 Zephyr 项目(应用程序、驱动或模块)都需要一个或多个CMakeLists.txt文件来定义构建规则
我们可以打开一个例程参考,我这里使用ncs3.0.0的peripheral_uart例程
在这里插入图片描述

  • cmake_minimum_required:指定所需的最低 CMake 版本。
  • find_package(Zephyr):查找并加载 Zephyr 的 CMake 工具链和模块
  • project:定义项目名称,通常与应用程序名称一致
  • target_sources:指定项目的源文件路径(如.c.cpp文件)

我们选择一个更加复杂的例程来分析v3.0.0nrfapplicationsnrf_desktop
在这里插入图片描述

  • cmake_minimum_required :要求 CMake 版本至少为 3.20.0
  • APPLICATION_CONFIG_DIR :设置应用配置文件目录,根据目标开发板动态调整(如configuration/nrf52840dk_nrf52840
  • find_package(Zephyr) :查找并加载 Zephyr 构建系统
  • project :定义项目名称为 "nRF Desktop",版本为 0.1
  • assert :确保在 Kconfig 中定义了CONFIG_DESKTOP_HID_REPORT_DESC(HID 报告描述符文件路径)
  • target_sources :添加主源文件src/main.c和 HID 描述符文件到构建
  • zephyr_library_include_directories :为应用库添加头文件路径(供内部模块使用)
  • zephyr_include_directories :为整个项目添加头文件路径(全局可见)
  • add_subdirectory :递归添加子目录中的代码模块,每个子目录需包含自己的 CMakeLists.txt
  • CONFIG_IMG_MANAGER :如果启用固件管理功能,链接 MCUboot 的引导工具库
  • CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE :如果启用配置通道功能,添加自定义链接脚本nrf_desktop.ld

总结

上面的功能可能有点多,需要长期使用才知道大部分的功能,实际我们添加.c.h甚至.a&.lib文件只需要需要下面的指令就行了,添加在Cmakelists.txt

  • 添加.c文件: target_sources :target_sources(app PRIVATE xxx.c )
  • 添加.h文件路径:target_include_directories(app PRIVATE common)
  • 添加.a或者.lib文件:target_link_libraries(app PRIVATE xxx.lib)

测试

使用periphreal_uart例程
1、在src目录添加test文件夹,在test文件下创建CMakeList.txt文件,将这个文件下面的test.c和test.h包含进去
2、在periphreal_uart例程根目录下把test这个文件夹使用add_subdirectory(src/test)包含进去,这样就可以了
zai

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最后一如既往的到了臭不要脸环节,作为一名精通Nordic硬件设计和软件开发的FAE,你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NCS
    NCS
    +关注

    关注

    1

    文章

    22

    浏览量

    9350
  • Nordic
    +关注

    关注

    9

    文章

    238

    浏览量

    48771
  • Zephyr
    +关注

    关注

    0

    文章

    47

    浏览量

    6512
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析onsemi NCS2016x系列运放:高性能与多应用的完美结合

    作为电子工程师,在日常设计工作中,选择合适的运算放大器(op amp)至关重要。今天就来和大家详细探讨onsemi的NCS20161、NCS20162、NCS20164以及对应的NCV
    的头像 发表于 12-03 13:52 160次阅读
    深入解析onsemi <b class='flag-5'>NCS</b>2016x系列运放:高性能与多应用的完美结合

    GCC开发工程的模版

    的interrupts_cw32l083.h。 10、修改Libraries/Libraries.mk文件内容,主要是文件夹的名称重新定位。 # 模块名_DIR 是上一层传递下来的参数, # 是从
    发表于 11-28 08:15

    RISC-V GCC编译,如何添加math.h文件

    在使用一些数学函数(例如exp)时,需要添加math.h文件 risc-v embedded gcc在添加math.h函数时,会到risc
    发表于 11-10 07:50

    基于蜂鸟E203添加完外设后软件头文件添加过程

    对应的头文件,才可以在软件代码里调用。platform.h文件定义了SoC平台相关的宏定义。在里面添加下图所示代码。 AES_CTRL_ADDR _AC(0x10041000,U
    发表于 10-30 06:48

    NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒

    入system_off模式 在prj.conf里面添加 CONFIG_POWEROFF=y 在主函数文件调用如下头文件 #include 即可使用进入system_off模式的函数
    的头像 发表于 09-29 00:56 481次阅读
    【<b class='flag-5'>NCS</b>随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒

    LCD屏幕无法正确显示效果如何解决?

    的rtthread的标准工程。 2.找到正点原子例程:实验14 LTDC LCD(RGB屏)实验,然后将目录下面的驱动移动到rtthread例程的: 3.修改SDRAM和LCD中.c.h的头文件,例如
    发表于 09-25 08:16

    更改RT-Thread Settings后,applications下文件丢失怎么解决?

    工程的applications目录下添加了自己的.c和子目录,子目录中也有.h和.c,编译下载都正常。此时由于需要新增一些软硬件模块,通过
    发表于 09-22 06:47

    RT-thread studio添加新的软件包和新的文件出错怎么解决?

    从模板工程中,添加新的软件包时,点击同步scons配置至项目出现报错 另外,添加新创文件夹后,点击添加至构建,并没有效果 是否是需要新
    发表于 09-19 06:02

    【匠芯创D133CBS KunLun Pi开发板试用体验】+添加用户APP文件夹到构建系统

    c文件构建系统,递归添加子目录的c文件构建系统
    发表于 09-11 16:36

    NCS随笔】NCS使用CJSON库

    NCS随笔】NCS使用CJSON库 这个文章讲一下在NCS上面如何使用JSON库,我使用Hello_world例程添加库 宏的配置 CONFIG_LOG =y
    的头像 发表于 08-13 15:12 495次阅读
    【<b class='flag-5'>NCS</b>随笔】<b class='flag-5'>NCS</b>使用CJSON库

    VScode使用STM32CUBE CLT如何添加静态库.a文件工程中?

    我使用VScode搭配ST的插件基于Cmake来编译和调试程序,我感觉非常方便。但是遇到一个问题,我不知道如何把.a后缀的静态库文件添加工程中。有没有大佬可以帮忙解决一下。
    发表于 08-12 07:36

    如何创建ESP32P4自定义工程、移植示例和注意事项

    文件以递归的方式解析,便于组件的添加。另外用户也可以不依赖idf_component.yml,自定义CMakeList文件的方式进行工程管理。关于ESP IDF的构建系统的详情,可以参
    发表于 05-03 16:16

    ZED75-48S48C-H ZED75-48S48C-H

    电子发烧友网为你提供AIPULNION(AIPULNION)ZED75-48S48C-H相关产品参数、数据手册,更有ZED75-48S48C-H的引脚图、接线图、封装手册、中文资料、英文资料,ZED75-48S48C-H真值表,
    发表于 03-21 18:53
    ZED75-48S48<b class='flag-5'>C-H</b> ZED75-48S48<b class='flag-5'>C-H</b>

    FA5-220H052424C2N3 FA5-220H052424C2N3

    、英文资料,FA5-220H052424C2N3真值表,FA5-220H052424C2N3管脚等资料,希望可以帮助广大的电子工程师们。
    发表于 03-18 18:41
    FA5-220<b class='flag-5'>H052424C</b>2N3 FA5-220<b class='flag-5'>H052424C</b>2N3

    如何利用RTC外设实现万年历功能

    本小节讲解的是如何利用RTC外设实现万年历功能,本实验工程与RTC底层驱动相关的文件为bsp_rtc.c/h,在底层驱动之上我们添加了bsp
    的头像 发表于 02-18 16:56 1537次阅读