/***************************************************************************//**
* @brief Get pointer to GPIO peripheral due to GPIO port
* @param[in] portNum : Port Number value, should be in range from 0 to 6.
* @return Pointer to GPIO peripheral
*******************************************************************************/
static GPIO_TypeDef* STM32_GetGPIO(uint8_t port)
{
GPIO_TypeDef *pGPIO = COX_NULL;
switch(port)
{
case 0: pGPIO = GPIOA; break;
case 1: pGPIO = GPIOB; break;
case 2: pGPIO = GPIOC; break;
case 3: pGPIO = GPIOD; break;
case 4: pGPIO = GPIOE; break;
case 5: pGPIO = GPIOF; break;
case 6: pGPIO = GPIOG; break;
default: break;
}
return pGPIO;
}
/***************************************************************************//**
* @brief Initializes the PIO peripheral
* @param[in] pio : The specified peripheral
* @return Result, may be :
* -COX_ERROR : Error occurred, parameter is not supported
* -COX_SUCCESS : Previous argument of the specified option
*******************************************************************************/
static COX_Status STM32_PIO_Init (COX_PIO_Dev pio)
{
/* Enable GPIO and AFIO clocks */
switch(port)
{
case 0: RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN); break;
case 1: RCC->APB2ENR |= (RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN); break;
case 2: RCC->APB2ENR |= (RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN); break;
case 3: RCC->APB2ENR |= (RCC_APB2ENR_IOPDEN | RCC_APB2ENR_AFIOEN); break;
case 4: RCC->APB2ENR |= (RCC_APB2ENR_IOPEEN | RCC_APB2ENR_AFIOEN); break;
default: break;
}
return COX_SUCCESS;
}
/***************************************************************************//**
* @brief Set direction (Input or Output)
* @param[in] pio : The specified PIO peripheral
* @param[in] dir : Direction, should be
* -0: Input
* -1: Output
* @return Result, may be :
* -COX_ERROR : Error occurred, parameter is not supported
* -COX_SUCCESS : Previous argument of the specified option
*******************************************************************************/
static COX_Status STM32_PIO_SetDir(COX_PIO_Dev pio, uint8_t dir)
{