152 lines
6.0 KiB
C
152 lines
6.0 KiB
C
/**********************************TIM**************************************
|
||
Данный файл содержит объявления базовых функции и дефайны для инициализации
|
||
таймеров.
|
||
***************************************************************************/
|
||
#ifndef __TIM_GENERAL_H_
|
||
#define __TIM_GENERAL_H_
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
/////////////////////////---USER SETTINGS---/////////////////////////
|
||
#define HAL_TIM_MODULE_ENABLED // need to uncomment this define in stm32f4xx_hal_conf.h
|
||
|
||
#define USE_TIM1
|
||
#define USE_TIM2
|
||
#define USE_TIM3
|
||
#define USE_TIM4
|
||
#define USE_TIM5
|
||
#define USE_TIM6
|
||
#define USE_TIM7
|
||
#define USE_TIM8
|
||
#define USE_TIM9
|
||
#define USE_TIM10
|
||
#define USE_TIM11
|
||
#define USE_TIM12
|
||
#define USE_TIM13
|
||
#define USE_TIM14
|
||
/* note: used uart defines in modbus.h */
|
||
|
||
/////////////////////////---USER SETTINGS---/////////////////////////
|
||
#include "periph_general.h"
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
////////////////////////////---DEFINES---////////////////////////////
|
||
#define TIM_IT_CONF_Pos 0
|
||
//#define TIM_PWM_CONF_Pos 1
|
||
//#define TIM_CLCK_SRC_CONF_Pos 2
|
||
//#define TIM_SLAVE_CONF_Pos 3
|
||
//#define TIM_MASTER_CONF_Pos 4
|
||
//#define TIM_BDTR_CONF_Pos 5
|
||
|
||
#define TIM_IT_CONF (1<<(TIM_IT_CONF_Pos))
|
||
//#define TIM_PWM_CONF (1<<(TIM_PWM_Pos))
|
||
|
||
|
||
#define TIM_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
|
||
(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
|
||
(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
|
||
(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
|
||
(0))
|
||
////////////////////////////---DEFINES---////////////////////////////]
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||
typedef enum
|
||
{
|
||
TIM_DEFAULT = 0,
|
||
TIM_IT_MODE = TIM_IT_CONF,
|
||
// TIM_PWM_MODE = TIM_PWM_ENABLE,
|
||
// TIM_PWM_IT_MODE = TIM_PWM_ENABLE | TIM_IT_CONF,
|
||
}TIM_ITModeTypeDef;
|
||
|
||
|
||
typedef enum
|
||
{
|
||
TIM_Base_Disable = 0,
|
||
TIM_TickBase_1US = 1,
|
||
TIM_TickBase_10US = 10,
|
||
TIM_TickBase_100US = 100,
|
||
TIM_TickBase_1MS = 1000,
|
||
TIM_TickBase_10MS = 10000,
|
||
TIM_TickBase_100MS = 100000,
|
||
}TIM_MHzTickBaseTypeDef;
|
||
|
||
typedef struct // struct with settings for custom function
|
||
{
|
||
TIM_HandleTypeDef htim;
|
||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||
TIM_MasterConfigTypeDef sMasterConfig;
|
||
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
|
||
TIM_ITModeTypeDef sTimMode;
|
||
|
||
TIM_MHzTickBaseTypeDef sTickBaseMHz;
|
||
float sTimAHBFreqMHz;
|
||
float sTimFreqHz;
|
||
|
||
}TIM_SettingsTypeDef;
|
||
|
||
|
||
typedef struct // struct with settings for custom function
|
||
{
|
||
TIM_HandleTypeDef *htim;
|
||
TIM_Encoder_InitTypeDef sConfig;
|
||
|
||
GPIO_TypeDef *GPIOx;
|
||
uint32_t GPIO_PIN_TI1;
|
||
uint32_t GPIO_PIN_TI2;
|
||
uint32_t GPIO_PIN_SW;
|
||
}TIM_EncoderTypeDef;
|
||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||
/**
|
||
* @brief Initialize TIM with TIM_SettingsTypeDef structure.
|
||
* @param stim - указатель на структуру с настройками таймера.
|
||
* @return HAL status.
|
||
* @note Данная структура содержит хендл таймера и структуры для его настройки.
|
||
*/
|
||
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
|
||
/**
|
||
* @brief Initialize PWM Channel and GPIO for output.
|
||
* @param htim - указатель на хендл таймера.
|
||
* @param sConfigOC - указатель на настрйоки канала таймера.
|
||
* @param TIM_CHANNEL - канал таймера для настройки.
|
||
* @param GPIOx - порт для вывода ШИМ.
|
||
* @param GPIO_PIN - пин для вывода ШИМ.
|
||
* @return HAL status.
|
||
*/
|
||
HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN);
|
||
/**
|
||
* @brief Initialize TIM Encoder functional.
|
||
* @param htim - указатель на хендл таймера.
|
||
* @param sConfigOC - указатель на настрйоки канала таймера.
|
||
* @param GPIOx - порт для приема енкодера.
|
||
* @param GPIO_PIN1 - первый пин для енкодера.
|
||
* @param GPIO_PIN2 - второй пин для енкодера.
|
||
* @param GPIO_PIN_SW - пин для кнопки енкодера.
|
||
* @return HAL status.
|
||
*/
|
||
HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim);
|
||
|
||
/**
|
||
* @brief Initialize TIMs clock and interrupt.
|
||
* @param htim - указатель на хендл таймера.
|
||
* @note Чтобы не генерировать функцию с иницилизацией неиспользуемых таймеров,
|
||
дефайнами в tim_general.h определяются используемые таймеры.
|
||
*/
|
||
void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode);
|
||
/**
|
||
* @brief DeInitialize TIMs clock and interrupt.
|
||
* @param htim - указатель на хендл таймера.
|
||
* @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых таймеров,
|
||
дефайнами в tim_general.h определяются используемые таймеры.
|
||
*/
|
||
void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim);
|
||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||
|
||
|
||
#endif // __TIM_GENERAL_H_
|