|
@ -68,26 +68,23 @@ |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#ifdef STM32F0xx |
|
|
#ifdef STM32F0xx |
|
|
#define MCU_TIMER_RATE (F_CPU) // Frequency of timer peripherals
|
|
|
|
|
|
#define MCU_STEP_TIMER 16 |
|
|
#define MCU_STEP_TIMER 16 |
|
|
#define MCU_TEMP_TIMER 17 |
|
|
#define MCU_TEMP_TIMER 17 |
|
|
#elif defined(STM32F1xx) |
|
|
#elif defined(STM32F1xx) |
|
|
#define MCU_TIMER_RATE (F_CPU) |
|
|
|
|
|
#define MCU_STEP_TIMER 4 |
|
|
#define MCU_STEP_TIMER 4 |
|
|
#define MCU_TEMP_TIMER 2 |
|
|
#define MCU_TEMP_TIMER 2 |
|
|
#elif defined(STM32F401xC) || defined(STM32F401xE) |
|
|
#elif defined(STM32F401xC) || defined(STM32F401xE) |
|
|
#define MCU_TIMER_RATE (F_CPU / 2) |
|
|
|
|
|
#define MCU_STEP_TIMER 9 |
|
|
#define MCU_STEP_TIMER 9 |
|
|
#define MCU_TEMP_TIMER 10 |
|
|
#define MCU_TEMP_TIMER 10 |
|
|
#elif defined(STM32F4xx) || defined(STM32F7xx) |
|
|
#elif defined(STM32F4xx) || defined(STM32F7xx) |
|
|
#define MCU_TIMER_RATE (F_CPU / 2) |
|
|
|
|
|
#define MCU_STEP_TIMER 6 // STM32F401 has no TIM6, TIM7, or TIM8
|
|
|
#define MCU_STEP_TIMER 6 // STM32F401 has no TIM6, TIM7, or TIM8
|
|
|
#define MCU_TEMP_TIMER 14 // TIM7 is consumed by Software Serial if used.
|
|
|
#define MCU_TEMP_TIMER 14 // TIM7 is consumed by Software Serial if used.
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#ifndef HAL_TIMER_RATE |
|
|
#ifndef HAL_TIMER_RATE |
|
|
#define HAL_TIMER_RATE MCU_TIMER_RATE |
|
|
#define HAL_TIMER_RATE GetStepperTimerClkFreq() |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#ifndef STEP_TIMER |
|
|
#ifndef STEP_TIMER |
|
|
#define STEP_TIMER MCU_STEP_TIMER |
|
|
#define STEP_TIMER MCU_STEP_TIMER |
|
|
#endif |
|
|
#endif |
|
@ -115,6 +112,13 @@ HardwareTimer *timer_instance[NUM_HARDWARE_TIMERS] = { nullptr }; |
|
|
// Public functions
|
|
|
// Public functions
|
|
|
// ------------------------
|
|
|
// ------------------------
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t GetStepperTimerClkFreq() { |
|
|
|
|
|
// Timer input clocks vary between devices, and in some cases between timers on the same device.
|
|
|
|
|
|
// Retrieve at runtime to ensure device compatibility. Cache result to avoid repeated overhead.
|
|
|
|
|
|
static uint32_t clkfreq = timer_instance[STEP_TIMER_NUM]->getTimerClkFreq(); |
|
|
|
|
|
return clkfreq; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// frequency is in Hertz
|
|
|
// frequency is in Hertz
|
|
|
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { |
|
|
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { |
|
|
if (!HAL_timer_initialized(timer_num)) { |
|
|
if (!HAL_timer_initialized(timer_num)) { |
|
|