예제 #1
0
파일: pinmap.c 프로젝트: sg-/mbed-os
void pin_mode(PinName pin, PinMode mode)
{
    uint32_t port = 0;
    uint8_t bit = 0;

    // Assert that pin is valid
    MBED_ASSERT(pin != NC);

    // Check if function is in range
    if (mode > OpenDrain) {
        return;
    }
    // Calculate port and pin position
    port = PIN_PORT(pin);
    bit = PIN_POS(pin);
    // Set pin mode
    switch (mode) {
        case PullNone:
            GPIO_SetPullUp((GPIO_Port)port, (1 << bit), DISABLE);
            GPIO_SetPullDown((GPIO_Port)port, (1 << bit), DISABLE);
            GPIO_SetOpenDrain((GPIO_Port)port, (1 << bit), DISABLE);
            break;
        case PullUp:
            GPIO_SetPullUp((GPIO_Port)port, (1 << bit), ENABLE);
            break;
        case PullDown:
            GPIO_SetPullDown((GPIO_Port)port, (1 << bit), ENABLE);
            break;
        case OpenDrain:
            GPIO_SetOpenDrain((GPIO_Port)port, (1 << bit), ENABLE);
            break;
        default:
            break;
    }
}
예제 #2
0
파일: SBI_SLAVE.c 프로젝트: coocox/Mplib
/**
  * @brief  Config the GPIO for SBI1
  * @param  None
  * @retval None
  */
void SBI1_IO_Configuration(void)
{
    GPIO_EnableFuncReg(GPIO_PD, GPIO_FUNC_REG_2, GPIO_BIT_0);
    GPIO_EnableFuncReg(GPIO_PD, GPIO_FUNC_REG_2, GPIO_BIT_1);
    GPIO_SetOutputEnableReg(GPIO_PD, GPIO_BIT_0, ENABLE);
    GPIO_SetOutputEnableReg(GPIO_PD, GPIO_BIT_1, ENABLE);
    GPIO_SetInputEnableReg(GPIO_PD, GPIO_BIT_0, ENABLE);
    GPIO_SetInputEnableReg(GPIO_PD, GPIO_BIT_1, ENABLE);
    GPIO_SetOpenDrain(GPIO_PD, GPIO_BIT_0, ENABLE);
    GPIO_SetOpenDrain(GPIO_PD, GPIO_BIT_1, ENABLE);
    /* Pull up for SDA&SCL */
    GPIO_SetPullUp(GPIO_PD, GPIO_BIT_1, ENABLE);
    GPIO_SetPullUp(GPIO_PD, GPIO_BIT_0, ENABLE);
}
예제 #3
0
/**
  * @brief  CAN port initialization
  * @param  None.
  * @retval None.
  */
void CAN_PortInit(void)
{
    GPIO_SetOutput(GPIO_PE, GPIO_BIT_4);        /* Set TX pin as output */
    GPIO_SetInput(GPIO_PE, GPIO_BIT_5); /* Set RX pin as input */
    GPIO_EnableFuncReg(GPIO_PE, GPIO_FUNC_REG_3, (uint8_t) (GPIO_BIT_4 | GPIO_BIT_5));  /* Enable TX and RX pin functions */
    GPIO_SetOpenDrain(GPIO_PE, GPIO_BIT_4, DISABLE);    /* Set TX pin as CMOS output */
    GPIO_SetPullUp(GPIO_PE, (uint8_t) (GPIO_BIT_4 | GPIO_BIT_5), DISABLE);      /* Disable pull-ups for CAN pins */
}
예제 #4
0
/**
  * @brief  Configure I/O ports for INT
  * @param  None
  * @retval None
  */
void GPIO_SetINT(void)
{
    //for INT0
    GPIO_SetOutputEnableReg(GPIO_PG, GPIO_BIT_3, DISABLE);
    GPIO_EnableFuncReg(GPIO_PG, GPIO_FUNC_REG_2, GPIO_BIT_3);
    GPIO_SetInputEnableReg(GPIO_PG, GPIO_BIT_3, ENABLE);
    GPIO_SetOpenDrain(GPIO_PG, GPIO_BIT_3, DISABLE);

    //for SW1
#ifdef M341_SK_BOARD
    GPIO_SetOutputEnableReg(GPIO_PE, GPIO_BIT_3, DISABLE);
    GPIO_SetInputEnableReg(GPIO_PE, GPIO_BIT_3, ENABLE);
    GPIO_SetPullUp(GPIO_PE, GPIO_BIT_3, ENABLE);
#else
    GPIO_SetOutputEnableReg(GPIO_PG, GPIO_BIT_7, DISABLE);
    GPIO_SetInputEnableReg(GPIO_PG, GPIO_BIT_7, ENABLE);
    GPIO_SetPullUp(GPIO_PG, GPIO_BIT_7, ENABLE);
#endif

}