6621Px GPIO 相关API 规则概括如下 (1) GPIO API中,只有 pinmux_config() 这个函数,可以针对所有管脚都适用。参数直接用IO编号, 但只能一个个设置。不能多个IO一起配置。 (2) IO编号低等于31的,除pinmux_config()函数外,GPIO相关API 均使用 不带_EX 字符的接口。 参数中都使用BIT_MASK,且不需要减32。 (3) IO号高于32(包括),除pinmux_config()函数外,GPIO操作函数,使用的API 均有 _ex 后缀,参数均使用BIT_MASK按位设置。 ,, 且BIT MASK时需要减32,如(idx-32) 带Ex的接口函数如下
我们6621Px的IO口会超过31口的编号,这种情况默认的simple中IO口配置会有一些修改,现在举例如下: 1) static uint32_t pin_wakeup_mask = (BIT_MASK(PIN_WAKEUP_0-32) | BIT_MASK(PIN_WAKEUP_1-32)); static void pinmux_init(void) { // KEY #if 1 pinmux_config(PIN_WAKEUP_0, PINMUX_GPIO_MODE_CFG);//32-36 pinmux_config(PIN_WAKEUP_1, PINMUX_GPIO_MODE_CFG);//32-36 pmu_pin_mode_set_ex(pin_wakeup_mask, PMU_PIN_MODE_PU); #endif // UART0 pinmux_config(PIN_UART0_TX, PINMUX_UART0_SDA_O_CFG);//32-36 // UART1 pinmux_config(PIN_UART1_TX, PINMUX_UART1_SDA_O_CFG);//32-36 pinmux_config(PIN_UART1_RX, PINMUX_UART1_SDA_I_CFG);//32-36 pmu_pin_mode_set_ex(BITMASK(PIN_UART1_TX-32), PMU_PIN_MODE_PP);//32-36 pmu_pin_mode_set_ex(BITMASK(PIN_UART1_TX-32), PMU_PIN_MODE_PP);//32-36 pmu_pin_mode_set_ex(BITMASK(PIN_UART1_RX-32), PMU_PIN_MODE_PU);//32-36 pinmux_config(PIN_LED_0, PINMUX_GPIO_MODE_CFG);//32-36 pmu_pin_mode_set_ex(BITMASK(PIN_LED_0-32), PMU_PIN_MODE_PP);//32-36 } 2) static void peripheral_init(void) { // Init GPIO gpio_open(); // Wakeup Pin gpio_set_direction_ex(pin_wakeup_mask, GPIO_INPUT);//32-36 gpio_set_interrupt_ex(pin_wakeup_mask, GPIO_BOTH_EDGE);//32-36 gpio_set_interrupt_callback_ex(gpio_handler);//32-36 // wakeup pmu_wakeup_pin_set_ex(pin_wakeup_mask, PMU_PIN_WAKEUP_LOW_LEVEL);//32-36 pmu_wakeup_pin_register_callback_ex(wakeup_gpio_handler, wakeup_gpio_handler);//32-36 #if 1 pmu_pin_mode_set_ex(BIT_MASK(PIN_FACTORY_RESET - 32), PMU_PIN_MODE_PU);//32-36 gpio_set_direction_ex(BIT_MASK(PIN_FACTORY_RESET-32), GPIO_INPUT);//32-36 gpio_set_interrupt_ex(BIT_MASK(PIN_FACTORY_RESET-32), GPIO_FALLING_EDGE);//32-36 pmu_pin_mode_set_ex(BIT_MASK(PIN_FACTORY_RESET_1 - 32), PMU_PIN_MODE_PU);//32-36 gpio_set_direction_ex(BIT_MASK(PIN_FACTORY_RESET_1-32), GPIO_INPUT);//32-36 gpio_set_interrupt_ex(BIT_MASK(PIN_FACTORY_RESET_1-32), GPIO_FALLING_EDGE);//32-36 gpio_set_interrupt_callback_ex(gpio_ex_handler); //32-36 pmu_wakeup_pin_set_ex(BIT_MASK(PIN_FACTORY_RESET - 32)|BIT_MASK(PIN_FACTORY_RESET_1 - 32), PMU_PIN_WAKEUP_LOW_LEVEL);//32-36 pmu_wakeup_pin_register_callback_ex(wakeup_gpio_ex_handler, wakeup_gpio_ex_handler);//32-36 #endif // Init UART uart_open(HS_UART0, DEBUG_UART_BAUDRATE, UART_FLOW_CTRL_DISABLED, NULL); uart_open(HS_UART1, HCI_UART_BAUDRATE, UART_FLOW_CTRL_DISABLED, app_uart1_rx_callback); gpio_write_ex(BITMASK(PIN_LED_0-32), GPIO_HIGH);//32-36 gpio_set_direction_ex(BITMASK(PIN_LED_0-32), GPIO_OUTPUT);//32-36 } |