#include "gpio.h" #include "board_gpio.h" /** ****************************************************************************** ** \brief 初始化外部GPIO引脚 ** ** \return 无 ******************************************************************************/ void board_GpioInit(void) { stc_gpio_cfg_t GpioInitStruct; DDL_ZERO_STRUCT(GpioInitStruct); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); ///< 端口方向配置->输入 GpioInitStruct.enDir = GpioDirOut; ///< 端口驱动能力配置->高驱动能力 GpioInitStruct.enDrv = GpioDrvH; ///< 端口上下拉配置->上拉 GpioInitStruct.enPu = GpioPuDisable; GpioInitStruct.enPd = GpioPdDisable; ///< 端口开漏输出配置->开漏输出关闭 GpioInitStruct.enOD = GpioOdDisable; ///< 端口输入/输出值寄存器总线控制模式配置->AHB GpioInitStruct.enCtrlMode = GpioAHB; /****************************** LED指示灯***************************/ GpioInitStruct.enDrv = GpioDrvH; GpioInitStruct.enDir = GpioDirOut; Gpio_Init(LED_TX_PORT, LED_TX_PIN, &GpioInitStruct); Gpio_Init(LED_RX_PORT, LED_RX_PIN, &GpioInitStruct); Gpio_WriteOutputIO(LED_TX_PORT, LED_TX_PIN, TRUE); //输出高,熄灭LED Gpio_WriteOutputIO(LED_RX_PORT, LED_RX_PIN, TRUE); //输出高,熄灭LED /******************************发射按键输入脚 *******************************/ ///< 端口方向配置->输入 GpioInitStruct.enDir = GpioDirIn; ///< 端口驱动能力配置->高驱动能力 GpioInitStruct.enDrv = GpioDrvH; ///< 端口上下拉配置->上拉 GpioInitStruct.enPu = GpioPuEnable; GpioInitStruct.enPd = GpioPdDisable; ///< 端口开漏输出配置->开漏输出关闭 GpioInitStruct.enOD = GpioOdDisable; ///< 端口输入/输出值寄存器总线控制模式配置->AHB GpioInitStruct.enCtrlMode = GpioAHB; ///< KEY按键初始化 Gpio_Init(GPIO_PORT_KEY, GPIO_PIN_KEY, &GpioInitStruct); /********************************* RF IRQ | RF RST ******************************************/ ///< 端口方向配置->输入 GpioInitStruct.enDir = GpioDirIn; ///< 端口驱动能力配置->高驱动能力 GpioInitStruct.enDrv = GpioDrvH; ///< 端口上下拉配置->上拉 GpioInitStruct.enPu = GpioPuDisable; GpioInitStruct.enPd = GpioPdDisable; ///< 端口开漏输出配置->开漏输出关闭 GpioInitStruct.enOD = GpioOdDisable; ///< 端口输入/输出值寄存器总线控制模式配置->AHB GpioInitStruct.enCtrlMode = GpioAHB; ///< GPIO IO rf_irq 初始化 Gpio_Init(RADIO_IRQ_PORT, RADIO_IRQ_PIN, &GpioInitStruct); ///< 打开并配置 rf_irq 为上升沿中断 Gpio_EnableIrq(RADIO_IRQ_PORT, RADIO_IRQ_PIN, GpioIrqRising); ///< 使能端口系统中断 EnableNvic(PORTA_IRQn, IrqLevel3, TRUE); ///< 端口方向配置->输出 GpioInitStruct.enDir = GpioDirOut; ///< GPIO IO rf_reset初始化 Gpio_Init(RADIO_RST_POT, RADIO_RST_PIN, &GpioInitStruct); } void App_LowPowerModeGpioSet(void) { ///< 打开GPIO外设时钟门控 Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //swd as gpio //Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE); ///< 配置为数字端口 M0P_GPIO->PAADS = 0; M0P_GPIO->PBADS = 0; M0P_GPIO->PCADS = 0; M0P_GPIO->PDADS = 0; ///< 配置为端口输入 M0P_GPIO->PADIR = 0XFFFF; M0P_GPIO->PBDIR = 0XFFFF; M0P_GPIO->PCDIR = 0XFFFF; M0P_GPIO->PDDIR = 0XFFFF; ///< 输入下拉 M0P_GPIO->PAPD = 0xFFFF; M0P_GPIO->PBPD = 0xFFFF; M0P_GPIO->PCPD = 0xFFFF; M0P_GPIO->PDPD = 0xFFFF; }