【PX4_Autopolite飞控源码】中飞控板初始化过程中的引脚IO控制(拉低/拉高)

先选择自己飞控板支持的硬件平台

打开对应的路径我的是Desktop/px4/PX4-Autopilot/boards/zhty/nora

找到board_config.h文件,打开nora后再往下去找Desktop/px4/PX4-Autopilot/boards/zhty/nora/src/borad_config.h

打开后可以看到有很多GPIO引脚的定义,例如:

#define GPIO_CAN2_SILENT_S1  /* PH3  */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN3)

可以看到这个定义中,是把PH13引脚的输出拉高

然后在初始化列表中添加该定义,即为init.c文件会按照列表执行该初始化操作。

#define PX4_GPIO_INIT_LIST { \PX4_ADC_GPIO,                     \GPIO_HW_REV_DRIVE,                \GPIO_HW_VER_DRIVE,                \GPIO_CAN1_TX,                     \GPIO_CAN1_RX,                     \GPIO_CAN2_TX,                     \GPIO_CAN2_RX,                     \GPIO_CAN1_SILENT_S0,              \GPIO_CAN2_SILENT_S1,              \GPIO_HEATER_OUTPUT,               \GPIO_nPOWER_IN_CAN,               \GPIO_nPOWER_IN_ADC,               \GPIO_nPOWER_IN_C,                 \GPIO_nVDD_5V_PERIPH_EN,           \GPIO_nVDD_5V_PERIPH_OC,           \GPIO_VDD_5V_HIPOWER_EN,           \GPIO_VDD_5V_HIPOWER_OC,           \GPIO_VDD_5V_RC_EN,                \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D0), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D1), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D2), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D3), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_CMD),\GPIO_VDD_3V3_SD_CARD_EN,          \GPIO_TONE_ALARM_IDLE,             \GPIO_OTGFS_VBUS,                  \PX4_GPIO_PIN_OFF(GPIO_HS_USB_EN), \GPIO_RSSI_IN,                     \FMU_LED_AMBER,                    \GPIO_BTN_SAFETY,                  \}

例子:如果我想控制一个引脚IO输出(例如PD1)

#define TEST1  /* PD1拉高  */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN1)
#define TEST2  /* PD1拉低  */ (GPIO_OUTPUT|GPIO_PUSHDOWN|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN1)

再将这两个添加到初始化列表中

#define PX4_GPIO_INIT_LIST { \PX4_ADC_GPIO,                     \GPIO_HW_REV_DRIVE,                \GPIO_HW_VER_DRIVE,                \GPIO_CAN1_TX,                     \GPIO_CAN1_RX,                     \GPIO_CAN2_TX,                     \GPIO_CAN2_RX,                     \GPIO_CAN1_SILENT_S0,              \GPIO_CAN2_SILENT_S1,              \GPIO_HEATER_OUTPUT,               \GPIO_nPOWER_IN_CAN,               \GPIO_nPOWER_IN_ADC,               \GPIO_nPOWER_IN_C,                 \GPIO_nVDD_5V_PERIPH_EN,           \GPIO_nVDD_5V_PERIPH_OC,           \GPIO_VDD_5V_HIPOWER_EN,           \GPIO_VDD_5V_HIPOWER_OC,           \GPIO_VDD_5V_RC_EN,                \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D0), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D1), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D2), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D3), \PX4_GPIO_PIN_OFF(GPIO_SDMMC1_CMD),\GPIO_VDD_3V3_SD_CARD_EN,          \GPIO_TONE_ALARM_IDLE,             \GPIO_OTGFS_VBUS,                  \PX4_GPIO_PIN_OFF(GPIO_HS_USB_EN), \GPIO_RSSI_IN,                     \FMU_LED_AMBER,                    \GPIO_BTN_SAFETY,                  \TEST1,                            \TEST2,                            \}

修改后再对固件进行重新编译 make_nora_default ,再将生成的PX4文件烧入飞控板即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478823.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Postman优雅地进行接口自动加密与解密

引言 在上一篇文章中,分享了 Requests 自动加解密的方法,本篇文章分享一下更加方便的调试某个服务端接口。 Postman Postman 这个工具后端小伙伴应该相当熟悉了,一般情况下我们会在开发和逆向过程中使用它来快速向接口发送请求,…

Spring Boot——统一功能处理

1. 拦截器 拦截器主要用来拦截用户的请求,在指定方法前后,根据业务需要执行设定好的代码,也就是提前定义一些逻辑,在用户的请求响应前后执行,也可以在用户请求前阻止其执行,例如登录操作,只有登…

PYTORCH基础语法知识

初识Torch PyTorch,简称Torch,主流的经典的深度学习框架,深度学习的框架。 简介 PyTorch是一个基于Python的深度学习框架,它提供了一种灵活、高效、易于学习的方式来实现深度学习模型。PyTorch最初由Facebook开发,被…

C嘎嘎探索篇:栈与队列的交响:C++中的结构艺术

C嘎嘎探索篇:栈与队列的交响:C中的结构艺术 前言: 小编在之前刚完成了C中栈和队列(stack和queue)的讲解,忘记的小伙伴可以去我上一篇文章看一眼的,今天小编将会带领大家吹奏栈和队列的交响&am…

刷题日常(数据流中的中位数,逆波兰表达式求值,最长连续序列,字母异位词分组)

数据流中的中位数 描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()…

SQL 复杂查询

目录 复杂查询 一、目的和要求 二、实验内容 (1)查询出所有水果产品的类别及详情。 查询出编号为“00000001”的消费者用户的姓名及其所下订单。(分别采用子查询和连接方式实现) 查询出每个订单的消费者姓名及联系方式。 在…

uniapp-vue2引用了vue-inset-loader插件编译小程序报错

报错信息 Error: Vue packages version mismatch: - vue3.2.45 (D:\qjy-myApp\admin-app\node_modules\vue\index.js) - vue-template-compiler2.7.16 (D:\qjy-myApp\admin-app\node_modules\vue-template-compiler\package.json) This may cause things to work incorrectly.…

VOLO实战:使用VOLO实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

【Linux】TCP网络编程

目录 V1_Echo_Server V2_Echo_Server多进程版本 V3_Echo_Server多线程版本 V3-1_多线程远程命令执行 V4_Echo_Server线程池版本 V1_Echo_Server TcpServer的上层调用如下,和UdpServer几乎一样: 而在InitServer中,大部分也和UDP那里一样&…

XG(S)-PON原理

前言 近年来,随着全球范围内接入市场的飞快发展以及全业务运营的快速开展,已有的PON技术标准在带宽需求、业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求XG(S)-PON(10G GPON)是在已有GPON技术标准上演进的增强下一代GPON技…

C语言学习 12(指针学习1)

一.内存和地址 1.内存 在讲内存和地址之前,我们想有个⽣活中的案例: 假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩,如果想找到你,就得挨…

前端---CSS(部分用法)

HTML画页面--》这个页面就是页面上需要的元素罗列起来,但是页面效果很差,不好看,为了让页面好看,为了修饰页面---》CSS CSS的作用:修饰HTML页面 用了CSS之后,样式和元素本身做到了分离的效果。---》降低了代…

H.265流媒体播放器EasyPlayer.js无插件H5播放器关于移动端(H5)切换网络的时候,播放器会触发什么事件

EasyPlayer.js无插件H5播放器作为一款功能全面的H5流媒体播放器,凭借其多种协议支持、多种解码方式、丰富的渲染元素和强大的应用功能,以及出色的跨平台兼容性,为用户提供了高度定制化的选项和优化的播放体验。无论是视频直播还是点播&#x…

零基础学安全--云技术基础

目录 学习连接 前言 云技术历史 云服务 公有云服务商 云分类 基础设施即服务(IaaS) 平台即服务(PaaS) 软件即服务(SaaS) 云架构 虚拟化 容器 云架构设计 组件选择 基础设施即代码 集成部署…

【AI绘画】Midjourney进阶:色调详解(上)

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯Midjourney中的色彩控制为什么要控制色彩?为什么要在Midjourney中控制色彩? 💯色调白色调淡色调明色调 &#x1f4af…

前端适配:常用的几种方案

一、rem和第三方插件 rem与em不同,rem会根据html的根节点字体大小进行变换,例如1rem就是一个字体大小那么大,比如根大小font size为12px,那么1rem即12px,大家可以在网上寻找单位换算工具进行换算(从设计稿…

蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! ! ! 关注博主,更多蓝桥杯nice题目静待更新:) 动态规划 三、括号序列 【问题描述】 给定一个括号序列,要求尽可能少地添加若干括号使得括号序列变得合…

AIGC--AIGC与人机协作:新的创作模式

AIGC与人机协作:新的创作模式 引言 人工智能生成内容(AIGC)正在以惊人的速度渗透到创作的各个领域。从生成文本、音乐、到图像和视频,AIGC使得创作过程变得更加快捷和高效。然而,AIGC并非完全取代了人类的创作角色&am…

Hot100 - 字母异位词分组

Hot100 - 字母异位词分组 最佳思路&#xff1a;排序 时间复杂度&#xff1a; O(nmlogm)&#xff0c;其中 n 为 strs 数组的长度&#xff0c;m 为每个字符串的长度。 代码&#xff1a; class Solution {public List<List<String>> groupAnagrams(String[] strs) …

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…