3#include "../../hardware_api.h"
5#if defined(_STM32_DEF_) || defined(TARGET_STM32H7)
8#ifndef SIMPLEFOC_STM32_MAX_TIMERSUSED
9#define SIMPLEFOC_STM32_MAX_TIMERSUSED 6
11#ifndef SIMPLEFOC_STM32_MAX_TIMERSRESERVED
12#define SIMPLEFOC_STM32_MAX_TIMERSRESERVED 4
14#ifndef SIMPLEFOC_STM32_MAX_MOTORSUSED
15#define SIMPLEFOC_STM32_MAX_MOTORSUSED 4
19#ifndef SIMPLEFOC_STM32_DEBUG
21#define SIMPLEFOC_STM32_DEBUG
25#define PinMap_TIM PinMap_PWM
35#define SIMPLEFOC_STM32_PWM_FREQUENCY 25000
36#define SIMPLEFOC_STM32_MIN_RESOLUTION 255
39#define _HARDWARE_6PWM 1
40#define _SOFTWARE_6PWM 0
44typedef struct STM32DriverParams {
45 TIM_HandleTypeDef* timers_handle[6] = {NULL};
47 uint32_t llchannels[6];
50 TIM_HandleTypeDef* master_timer = NULL;
52 uint8_t interface_type;
57int stm32_getNumTimersUsed();
58int stm32_getNumMotorsUsed();
59int stm32_getNumTimersReserved();
60STM32DriverParams* stm32_getMotorUsed(
int index);
61bool stm32_isTimerUsed(TIM_HandleTypeDef* timer);
62bool stm32_isChannelUsed(PinMap* pin);
63bool stm32_isTimerReserved(TIM_TypeDef* timer);
64TIM_HandleTypeDef* stm32_getTimer(PinMap* timer);
65TIM_HandleTypeDef* stm32_useTimer(PinMap* timer);
66bool stm32_reserveTimer(TIM_TypeDef* timer);
68void stm32_pause(STM32DriverParams*
params);
69void stm32_resume(STM32DriverParams*
params);
GenericCurrentSenseParams * params