layson. li 2024-09-18 16:27 采纳率: 100%
浏览 5
已结题

BetaFlight 添加 NRF24L01 驱动

请问 BetaFlight 3.2.5 的 ALIENFLIGHTF1 固件中如何添加 NRF24L01 进行无线通讯,谢谢

下图为我添加过程中遇到错误查找时发现的,好像是不支持 NRF24L01 的无线通讯,但驱动里面有 rx_24l01.c 的驱动

./src/main/rx/rx_spi.c: In function 'rxSpiSetProtocol':
./src/main/rx/rx_spi.c:73:5: error: label at end of compound statement
     default:
     ^~~~~~~
%% ibus_shared.c
make[2]: *** [Makefile:296: obj/main/ALIENFLIGHTF1/rx/rx_spi.o] Error 1
make[2]: *** Waiting for unfinished jobs....
%% esc_sensor.c
make[2]: Leaving directory '/home/betaflight-3.2.5'
make[1]: *** [Makefile:396: binary] Error 2
make[1]: Leaving directory '/home/betaflight-3.2.5'
make: *** [Makefile:340: ALIENFLIGHTF1] Error 2
root@iZuf66vtliq7q2zvwnmmv7Z:/home/betaflight-3.2.5#

** target.h 中添加的定义如下:**


/* ======== SPI NRF24L01 测试 ======== */
#define USE_SPI //启用 bus_spi.c 文件
#define USE_RX_SPI //启用 rx_spi.c 文件
#define RX_SPI_INSTANCE                 SPI2 //启用 硬件 SPI 在 rx_spi.c 文件 中调用
#define USE_RX_NRF24 //启用 rx_nrf24l01.c 文件
#define USE_SPI
#define USE_SPI_DEVICE_2
#define SPI2_NSS_PIN                    PB12
#define SPI2_SCK_PIN                    PB13
#define SPI2_MISO_PIN                   PB14
#define SPI2_MOSI_PIN                   PB15
#define RX_CE_PIN                                   PB8
#define RX_NSS_PIN                      PB12

img

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-18 17:09
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    为了在 BetaFlight 3.2.5 的 ALIENFLIGHTF1 固件中添加 NRF24L01 的无线通讯支持,您需要按照以下步骤操作:

    1. 确保硬件连接正确:首先确保 NRF24L01 与 STM32 的 SPI 连接正确,包括NSS、SCK、MISO 和 MOSI 针脚。
    2. 配置 target.h 文件:根据您提供的代码片段,target.h 文件中的配置看起来是正确的。确保 USE_RX_NRF24 已定义,这将启用 rx_nrf24l01.c 文件。此外,您已经为 SPI 定义了相关实例和引脚配置。
    3. 解决编译错误:您遇到的编译错误可能与 rxSpiSetProtocol 函数中的 default: 部分有关。请检查该部分是否有任何语法错误或遗漏的实现。通常,default: 后应该有一个或多个 break 语句或返回语句来避免编译器警告。
    4. 集成 NRF24L01 驱动:确保 rx_nrf24l01.crx_nrf24l01.h 文件存在并正确实现。这些文件应该包含 NRF24L01 的初始化、数据接收和设置接收数据等函数。
    5. 修改或添加必要的协议支持:如果在 rx_spi.c 中有关于其他接收机类型的协议支持代码(如 SYMA、CX10 等),您可能需要为 NRF24L01 添加类似的协议支持代码块。或者,如果已有通用的 NRF24 支持,确保您的协议枚举和案例语句正确引用 NRF24L01。
    6. 测试:在添加了所有必要的配置和代码后,编译并上传到您的硬件上进行测试。确保 NRF24L01 正确工作并与您的应用兼容。

    请注意,由于 BetaFlight 是一个不断更新的项目,某些功能或实现可能会随着版本的更新而变化。因此,建议经常查看最新的官方文档和源码以获取最新的信息和指导。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 修改了问题 9月18日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏