先选择自己飞控板支持的硬件平台
打开对应的路径我的是Desktop/px4/PX4-Autopilot/boards/zhty/nora

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

打开后可以看到有很多GPIO引脚的定义,例如:
cpp
#define GPIO_CAN2_SILENT_S1 /* PH3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN3)
可以看到这个定义中,是把PH13引脚的输出拉高
然后在初始化列表中添加该定义,即为init.c文件会按照列表执行该初始化操作。
cpp
#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)
cpp
#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)
再将这两个添加到初始化列表中
cpp
#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文件烧入飞控板即可