Esempio n. 1
0
int main() {
    __GPIOA_CLK_ENABLE();
    auto init_configuration = GPIO_InitTypeDef();
    init_configuration.Pin = GPIO_PIN_0;
    init_configuration.Mode = GPIO_MODE_OUTPUT_PP;
    init_configuration.Pull = GPIO_NOPULL;
    init_configuration.Speed = GPIO_SPEED_HIGH;
    init_configuration.Alternate = 0;

    HAL_GPIO_Init(GPIOA, &init_configuration);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
    
    return 0;
}
Esempio n. 2
0
GPIOPins::GPIOPins(GPIO_TypeDef *peripheral, std::initializer_list<Pin> pins, Mode mode, Pull pull, Speed speed, AlternateFunction alternate /*= AlternateFunction::None*/) {
    this->peripheral = peripheral;

    for (const auto &pin : pins) {
        pins_bitmask |= std::bitset<16>(static_cast<uint16_t>(pin));
    }

    //if (std::find(initialized_peripherals.begin(), initialized_peripherals.end(), peripheral) == initialized_peripherals.end()) {
    if (peripheral == GPIOA)
        __GPIOA_CLK_ENABLE();
    else if (peripheral == GPIOB)
        __GPIOB_CLK_ENABLE();
    else if (peripheral == GPIOC)
        __GPIOC_CLK_ENABLE();
    else if (peripheral == GPIOD)
        __GPIOD_CLK_ENABLE();
    else if (peripheral == GPIOE)
        __GPIOE_CLK_ENABLE();
    else if (peripheral == GPIOF)
        __GPIOF_CLK_ENABLE();
    else if (peripheral == GPIOG)
        __GPIOG_CLK_ENABLE();
    else if (peripheral == GPIOH)
        __GPIOH_CLK_ENABLE();
    else if (peripheral == GPIOI)
        __GPIOI_CLK_ENABLE();
    //}

    //initialized_peripherals.push_back(peripheral);

    auto init_configuration = GPIO_InitTypeDef();
    init_configuration.Pin = pins_bitmask.to_ulong();
    init_configuration.Mode = static_cast<uint32_t>(mode);
    init_configuration.Pull = static_cast<uint32_t>(pull);
    init_configuration.Speed = static_cast<uint32_t>(speed);
    if (alternate != AlternateFunction::None)
        init_configuration.Alternate = static_cast<uint8_t>(alternate);

    HAL_GPIO_Init(peripheral, &init_configuration);
}