diff --git a/cpu/stm32_common/cpu_common.c b/cpu/stm32_common/cpu_common.c index 7f6b0320a79c..12dac29d8d78 100644 --- a/cpu/stm32_common/cpu_common.c +++ b/cpu/stm32_common/cpu_common.c @@ -18,8 +18,19 @@ * @} */ +#include "periph_conf.h" #include "periph_cpu_common.h" +uint32_t periph_apb_clk(uint8_t bus) +{ + if (bus == APB1) { + return CLOCK_APB1; + } + else { + return CLOCK_APB2; + } +} + void periph_clk_en(uint8_t bus, uint32_t mask) { if (bus == APB1) { diff --git a/cpu/stm32_common/include/periph_cpu_common.h b/cpu/stm32_common/include/periph_cpu_common.h index e9abc3a0a508..7c72a5bd50c0 100644 --- a/cpu/stm32_common/include/periph_cpu_common.h +++ b/cpu/stm32_common/include/periph_cpu_common.h @@ -65,6 +65,26 @@ typedef uint32_t gpio_t; */ #define GPIO_PIN(x, y) ((GPIOA_BASE + (x << 10)) | y) +/** + * @brief Timer configuration + */ +typedef struct { + TIM_TypeDef *dev; /**< timer device */ + uint32_t max; /**< maximum value to count to (16/32 bit) */ + uint32_t rcc_mask; /**< corresponding bit in the RCC register */ + uint8_t bus; /**< APBx bus the timer is clock from */ + uint8_t irqn; /**< global IRQ channel */ +} timer_conf_t; + +/** + * @brief Get the actual bus clock frequency for the APB buses + * + * @param[in] bus target APBx bus + * + * @return bus clock frequency in Hz + */ +uint32_t periph_apb_clk(uint8_t bus); + /** * @brief Enable the given peripheral clock *