/** * @brief Clear the pending interrupt of a specified pin * * @param GPIO_Pin: The data structer which contains the parameters for the GPIO Pin. * * @retval None */ HAL_Status HAL_GPIO_ClearISR_8195a( HAL_GPIO_PIN *GPIO_Pin ) { u8 port_num; u8 pin_num; HAL_GPIO_PIN_MODE pin_mode; port_num = HAL_GPIO_GET_PORT_BY_NAME(GPIO_Pin->pin_name); pin_num = HAL_GPIO_GET_PIN_BY_NAME(GPIO_Pin->pin_name); pin_mode = GPIO_Pin->pin_mode; if ((pin_mode & HAL_GPIO_PIN_INT_MODE)==0 || (port_num != GPIO_PORT_A)) { DBG_GPIO_ERR("HAL_GPIO_ClearISR_8195a: This pin(%x:%x) is'nt an interrupt pin\n", GPIO_Pin->pin_name, GPIO_Pin->pin_mode); return HAL_ERR_PARA; } if (GPIO_Lock() != HAL_OK) { return HAL_BUSY; } // Clear pending interrupt before unmask it HAL_WRITE32(GPIO_REG_BASE, GPIO_PORTA_EOI, (1<<pin_num)); GPIO_UnLock(); return HAL_OK; }
uint32_t digitalPinToPort( uint32_t ulPin ) { uint32_t pin_name; if ( ulPin < 0 || ulPin > TOTAL_GPIO_PIN_NUM ) { return 0xFFFFFFFF; } pin_name = HAL_GPIO_GetPinName(g_APinDescription[ulPin].pinname); return HAL_GPIO_GET_PORT_BY_NAME(pin_name); }