Skip to content

File hal_map.h

File List > external-docs > libDaisy > src > util > hal_map.h

Go to the documentation of this file

Source Code

#pragma once
#ifndef DSY_HAL_MAP_H
#define DSY_HAL_MAP_H
#include "stm32h7xx_hal.h"
#include "daisy_core.h"

#ifdef __cplusplus
namespace daisy
{
constexpr uint32_t GetHALPin(Pin p)
{
    return (1 << p.pin);
}
constexpr GPIO_TypeDef *GetHALPort(Pin p)
{
    switch(p.port)
    {
        case PORTA: return GPIOA;
        case PORTB: return GPIOB;
        case PORTC: return GPIOC;
        case PORTD: return GPIOD;
        case PORTE: return GPIOE;
        case PORTF: return GPIOF;
        case PORTG: return GPIOG;
        case PORTH: return GPIOH;
        case PORTI: return GPIOI;
        case PORTJ: return GPIOJ;
        case PORTK: return GPIOK;
        default: return NULL;
    }
}
inline void GPIOClockEnable(Pin p)
{
    switch(p.port)
    {
        case PORTA: __HAL_RCC_GPIOA_CLK_ENABLE(); return;
        case PORTB: __HAL_RCC_GPIOB_CLK_ENABLE(); return;
        case PORTC: __HAL_RCC_GPIOC_CLK_ENABLE(); return;
        case PORTD: __HAL_RCC_GPIOD_CLK_ENABLE(); return;
        case PORTE: __HAL_RCC_GPIOE_CLK_ENABLE(); return;
        case PORTF: __HAL_RCC_GPIOF_CLK_ENABLE(); return;
        case PORTG: __HAL_RCC_GPIOG_CLK_ENABLE(); return;
        case PORTH: __HAL_RCC_GPIOH_CLK_ENABLE(); return;
        case PORTI: __HAL_RCC_GPIOI_CLK_ENABLE(); return;
        case PORTJ: __HAL_RCC_GPIOJ_CLK_ENABLE(); return;
        case PORTK: __HAL_RCC_GPIOK_CLK_ENABLE(); return;
        default: return;
    }
}
} // namespace daisy

#endif
#endif