сделаны базовые хедеры: - mylibs_config - mylibs_defs - mylibs_include - trace - trackers - bit_access также сделан модуль general_gpio.c/.h Но надо проверить переструктуризированные модули Остальные модули __general_XXX в целом готовы и как-то работают (на МЗКТЭ) но не структуризированы
131 lines
4.9 KiB
C
131 lines
4.9 KiB
C
/**
|
||
**************************************************************************
|
||
* @file general_tim.h
|
||
* @brief Заголовочный файл для базовой работы с таймерами.
|
||
*************************************************************************/
|
||
#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 "mylibs_defs.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 sTickBaseUS;
|
||
uint8_t sTickBasePrescaler;
|
||
float sTimAHBFreqMHz;
|
||
float sTimFreqHz;
|
||
|
||
}TIM_SettingsTypeDef;
|
||
|
||
|
||
typedef struct // struct with variables for encoder
|
||
{
|
||
int16_t Encoder_Diff;
|
||
|
||
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---///////////////////////////
|
||
/* Initialize TIM with TIM_SettingsTypeDef structure */
|
||
HAL_StatusTypeDef TIM_Base_Init(TIM_SettingsTypeDef* stim);
|
||
/* Initialize PWM Channel and GPIO for output */
|
||
HAL_StatusTypeDef TIM_Output_PWM_Init(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfigOC, uint32_t TIM_CHANNEL, GPIO_TypeDef *GPIOx, uint32_t PWM_PIN);
|
||
/* Initialize TIM Encoder functional */
|
||
HAL_StatusTypeDef TIM_Encoder_Init(TIM_EncoderTypeDef *henc1, TIM_HandleTypeDef *htim);
|
||
/* Initialize OC Comparator */
|
||
HAL_StatusTypeDef TIM_OC_Comparator_Init(TIM_HandleTypeDef *htim, uint32_t TIM_CHANNEL);
|
||
/* Start delay via TIM */
|
||
HAL_StatusTypeDef TIM_Delay_Start(TIM_HandleTypeDef *htim);
|
||
/* Delay via TIM */
|
||
HAL_StatusTypeDef TIM_Delay(TIM_HandleTypeDef *htim, uint16_t delay);
|
||
/* Wait Delay via TIM without blocking app */
|
||
HAL_StatusTypeDef TIM_Delay_NonBlocking(TIM_HandleTypeDef *htim, uint16_t delay);
|
||
/* Initialize TIMs clock and interrupt */
|
||
void TIM_Base_MspInit(TIM_HandleTypeDef* htim, TIM_ITModeTypeDef it_mode);
|
||
/* DeInitialize TIMs clock and interrupt */
|
||
void TIM_Base_MspDeInit(TIM_HandleTypeDef* htim);
|
||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||
|
||
|
||
#endif // __TIM_GENERAL_H_
|