news 2026/7/19 6:03:02

nrf52832移植freertos

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nrf52832移植freertos

官方SDK参考路径如下:


最好是先找一个空白工程不要直接使用官方例程便于后续移植开发,移植如下:

1、新建freertos组对文件进行管理

添加的文件路径如下:

这些文件路径为:


路径为:


路径为:


路径为:


还需要添加官方对freertos二次封装的api文件:

路径为:


然后添加头路径索引,这里需要根据自己的路径,我这个仅作参考:


2、进行编译

编译之后可能会报一个定时器的错误,直接去FREERTOS_CONFIG.h文件中把定时器宏开启即可


清除这个报错之后还会有另个报错,报错是定时器中断重复定义,

  • port_cmsis_systick.o(FreeRTOS CMSIS 移植层自带 RTC1 中断服务函数)
  • drv_rtc.o(nrf_drv_rtc 驱动自带RTC1_IRQHandler

直接不使用nrf_drv_rtc,工程移除drv_rtc.c,全程只用 FreeRTOS 系统定时器即可,路径一般在

这个组下有个drv_rtc.c直接移除就行


三、解决main报错

头文件包含如下

#include <stdbool.h> #include <stdint.h> #include <string.h> #include "nordic_common.h" #include "nrf.h" #include "app_error.h" #include "app_timer.h" #include "app_uart.h" #include "app_scheduler.h" #include "nrf_log.h" #include "nrf_log_ctrl.h" #include "nrf_log_default_backends.h" #include "nrf_pwr_mgmt.h" #include "nrf_drv_clock.h" #include "nrf_drv_saadc.h" #if defined (UART_PRESENT) #include "nrf_uart.h" #endif #if defined (UARTE_PRESENT) #include "nrf_uarte.h" #endif #include "bsp.h" #include "bsp_btn_ble.h" #include "ble.h" #include "ble_hci.h" #include "ble_srv_common.h" #include "ble_advdata.h" #include "ble_advertising.h" #include "ble_conn_params.h" #include "ble_conn_state.h" #include "nrf_ble_gatt.h" #include "nrf_ble_qwr.h" #include "nrf_ble_lesc.h" #include "ble_bas.h" #include "ble_lbs.h" #include "ble_hrs.h" #include "ble_dis.h" #include "ble_hts.h" #include "my_ble_uarts.h" #include "sensorsim.h" #include "fds.h" #include "device_name_op.h" #include "nrf_sdh_soc.h" #include "nrf_sdh_ble.h" #include "nrf_sdh_freertos.h" #include "peer_manager.h" #include "peer_manager_handler.h" #include"nrf_sdh.h" #include "FreeRTOS.h" #include "task.h" #include "timers.h" #include "semphr.h"

开始解决报错

首先sdk_config.h里搜索NRF_SDH_DISPATCH_MODEL,把这个宏定义为2即可

然后是定时器函数,我们需要把

组中的定时器app_timer2.c函数移除,然后添加app_timer_freertos.c函数,路径为:

现在只剩最后一个报错

这个是空闲钩子函数,打开freertos_config.h确保参数置1,

然后在main中进行实现

//log #if NRF_LOG_ENABLED static TaskHandle_t m_logger_thread; /**< Definition of Logger thread. */ #endif void vApplicationIdleHook( void ) { #if NRF_LOG_ENABLED vTaskResume(m_logger_thread); #endif }


至此结束,关于函数的使用以及初始化部分在下一篇,有问题评论区见

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 6:01:23

Unity 2020 LTS版本深度解析:从2020.1到2020.3的升级决策与实战指南

1. 项目概述&#xff1a;为什么需要深挖Unity 2020 LTS的版本迭代&#xff1f;如果你是一个Unity项目的技术负责人&#xff0c;或者是一个在2020年前后开始接触Unity的开发者&#xff0c;手头可能正维护着一个基于Unity 2020 LTS&#xff08;长期支持版&#xff09;的项目。Uni…

作者头像 李华
网站建设 2026/7/19 6:01:02

2026 上海 APP 开发甄选:技术架构搭建、全流程落地、综合选型解读

摘要&#xff1a;本文从APP开发的技术路径、架构选型、跨端兼容性、性能瓶颈与工程落地约束等维度出发&#xff0c;系统分析上海主流APP软件开发公司的技术能力差异&#xff0c;并结合D-coding平台的实际架构实践&#xff0c;为有定制开发需求的企业提供参考框架。在上海寻找一…

作者头像 李华
网站建设 2026/7/19 5:59:15

Canva高级排版实战手册(非公开工作流首次披露)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Canva高级排版实战手册&#xff08;非公开工作流首次披露&#xff09; 在专业视觉内容生产中&#xff0c;Canva 的排版能力常被低估——其底层样式引擎支持 CSS-in-JS 式的实时样式覆盖与层级锚定机制。本章披…

作者头像 李华
网站建设 2026/7/19 5:59:07

TI显示子系统寄存器编程实战:RFBI与VENC模块配置详解

1. 项目概述与核心价值在嵌入式显示系统的开发中&#xff0c;无论是驱动一块LCD屏幕还是输出复合视频信号&#xff0c;最底层、最直接的控制手段永远是寄存器编程。这就像直接与硬件对话&#xff0c;每一个比特位的设置都对应着物理电路状态的改变。对于追求极致性能、低功耗或…

作者头像 李华
网站建设 2026/7/19 5:59:03

C++性能优化实战:从CPU缓存到并发编程的系统级调优指南

1. 项目概述&#xff1a;为什么C性能优化是系统软件的命脉&#xff1f;最近刚从一场全球性的技术峰会回来&#xff0c;和不少老朋友、新同行聊下来&#xff0c;一个共识越来越清晰&#xff1a;在硬件红利逐渐见顶的今天&#xff0c;软件性能&#xff0c;尤其是底层系统软件的效…

作者头像 李华
网站建设 2026/7/19 5:57:37

步进电机驱动芯片A3977和A3979驱动电路

步进电机微步进驱动芯片A3977的基本功能说明及应用电路 随着微步进电机应用的日益广泛&#xff0c;其驱动电路的发展也相当迅速&#xff0c;各类控制芯片的功能越来越丰富&#xff0c;操作也越来越简便。A3977是一种新近开发出来、专门用于双极型步进电机的微步进电机驱动集成电…

作者头像 李华