先选择自己飞控板支持的硬件平台
打开对应的路径我的是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文件烧入飞控板即可