/** ########################################################################## ** Filename : ** Project : ** Module : ** Processor : ** Version : ** Compiler : ** Date/Time : ** Abstract : ** Contents : ** Note : ** ** (c) Copyright dmdz Co.,Ltd ** -------------------------------------------------------------------------- ** R E V I S I O N H I S T O R Y ** -------------------------------------------------------------------------- ** Date Ver Author Description ** -20230602- --V1.0-- --mingyea--- --修改-- ** #########################################################################*/ /*--------------------------------------------------------------------------- - I N C L U D E F I L E S ----------------------------------------------------------------------------*/ #include "tim.h" #include "cpu.h" #include "nvic.h" #include "pwm_manage.h" /*--------------------------------------------------------------------------- - D E F I N E S / M A C R O S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - T Y P E D E F I N I T I O N S ----------------------------------------------------------------------------*/ typedef struct { u8 state; u16 pwm_duty; }tim_s; /*--------------------------------------------------------------------------- - S T A T I C V A R I A B L E S ----------------------------------------------------------------------------*/ static tim_s g_tim; /*--------------------------------------------------------------------------- * G L O B A L V A R I A B L E S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - C O N S T A N T S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - F U N C T I O N P R O T O T Y P E ----------------------------------------------------------------------------*/ #ifdef FL_ATIM_ENABLE /*--------------------------------------------------------------------------- |Prototype : |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ static void atim_init(void) { FL_ATIM_Init(ATIM, (FL_ATIM_InitTypeDef*)&g_atimer0_Config0); FL_ATIM_ClearFlag_Update(ATIM); /* 清除计数器中断标志位 */ //FL_ATIM_EnableIT_Update(ATIM); /* 开启计数器中断 */ pwm_manage_atm_init(); FL_ATIM_Enable(ATIM); /* 使能定时器 */ //FL_ATIM_EnableALLOutput(ATIM);/* 主控输出使能 */ //FL_ATIM_OC_EnableChannel(ATIM,FL_ATIM_CHANNEL_2); //FL_ATIM_OC_DisableChannel(ATIM,FL_ATIM_CHANNEL_2); } #endif #ifdef FL_BSTIM16_ENABLE /*--------------------------------------------------------------------------- |Prototype : |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ static void bstim16_init(void) { FL_BSTIM16_Init(BSTIM16, (FL_BSTIM16_InitTypeDef*)&g_TimerBase_InitStruct); FL_BSTIM16_ClearFlag_Update(BSTIM16); /* 清除计数器中断标志位 */ FL_BSTIM16_EnableIT_Update(BSTIM16); /* 开启计数器中断 */ NVIC_ClearPendingIRQ(BSTIM_IRQn); NVIC_DisableIRQ(BSTIM_IRQn); NVIC_SetPriority(BSTIM_IRQn, NVIC_PRIORITY_TIM); //中断优先级配置 NVIC_EnableIRQ(BSTIM_IRQn); FL_BSTIM16_Enable(BSTIM16); /* 使能定时器 */ } #endif #ifdef FL_GPTIM_ENABLE /*--------------------------------------------------------------------------- |Prototype :初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void gptim_init(void) { FL_GPTIM_Init(GPTIM0, (FL_GPTIM_InitTypeDef*)&g_gptim_init_cfg); pwm_manage_gptm0_init(); FL_GPTIM_Enable(GPTIM0); /* 使能定时器 */ } #endif #ifdef FL_GPTIM1_ENABLE /*--------------------------------------------------------------------------- |Prototype :初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void gptim1_init(void) { FL_GPTIM_Init(GPTIM1, (FL_GPTIM_InitTypeDef*)&g_gptim1_init_cfg); pwm_manage_gptm1_init(); FL_GPTIM_Enable(GPTIM1); /* 使能定时器 */ } #endif #ifdef FL_GPTIM2_ENABLE /*--------------------------------------------------------------------------- |Prototype :初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void gptim2_init(void) { FL_GPTIM_Init(GPTIM2, (FL_GPTIM_InitTypeDef*)&g_gptim2_init_cfg); pwm_manage_gptm2_init(); FL_GPTIM_Enable(GPTIM2); /* 使能定时器 */ } #endif #ifdef FL_LPTIM16_ENABLE /*--------------------------------------------------------------------------- |Prototype : 初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void lptim16_init(void) { FL_LPTIM16_StructInit((FL_LPTIM16_InitTypeDef*)&g_lptim16_cfg_tab); FL_LPTIM16_Init(LPTIM16, (FL_LPTIM16_InitTypeDef*)&g_lptim16_cfg_tab); /*---------------- 中断配置 ----------------*/ /* 清除标志 */ FL_LPTIM16_ClearFlag_Update(LPTIM16); /* 中断使能 */ FL_LPTIM16_EnableIT_Update(LPTIM16); /* 使能并配置NVIC */ NVIC_ClearPendingIRQ(LPTIMx_IRQn); NVIC_DisableIRQ(LPTIMx_IRQn); NVIC_SetPriority(LPTIMx_IRQn, NVIC_PRIORITY_RTC); //中断优先级配置 NVIC_EnableIRQ(LPTIMx_IRQn); /*---------------------------------------------*/ /* 使能LPTIM16 */ FL_LPTIM16_Enable(LPTIM16); } #endif #ifdef FL_LPTIM32_ENABLE /*--------------------------------------------------------------------------- |Prototype : 初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void lptim32_init(void) { /*---------------- 定时器时间基准配置 ----------------*/ FL_LPTIM32_StructInit((FL_LPTIM32_InitTypeDef*)&g_lptim32_cfg_tab); FL_LPTIM32_Init(LPTIM32, (FL_LPTIM32_InitTypeDef*)&g_lptim32_cfg_tab); /*---------------------------------------------*/ /*---------------- 中断配置 ----------------*/ /* 清除标志 */ FL_LPTIM32_ClearFlag_Update(LPTIM32); pwm_manage_lpt32_init(); /*---------------------------------------------*/ /* 使能LPTIM32 */ FL_LPTIM32_Enable(LPTIM32); } #endif /*--------------------------------------------------------------------------- |Prototype : 初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void tim_init(void) { g_tim.state =0u; g_tim.pwm_duty =500u; #ifdef FL_BSTIM16_ENABLE bstim16_init(); #endif #ifdef FL_LPTIM16_ENABLE //lptim16_init(); #endif #ifdef FL_LPTIM32_ENABLE lptim32_init(); #endif #ifdef FL_ATIM_ENABLE atim_init(); #endif #ifdef FL_GPTIM_ENABLE gptim_init(); #endif #ifdef FL_GPTIM1_ENABLE gptim1_init(); #endif #ifdef FL_GPTIM2_ENABLE gptim2_init(); #endif } /*--------------------------------------------------------------------------- |Prototype : 反初始化 |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : ----------------------------------------------------------------------------*/ void tim_de_init(void) { #ifdef FL_ATIM_ENABLE FL_ATIM_DeInit(ATIM); #endif #ifdef FL_BSTIM16_ENABLE FL_BSTIM16_DeInit(BSTIM16); #endif #ifdef FL_GPTIM0_ENABLE FL_GPTIM_DeInit(GPTIM0); #endif #ifdef FL_GPTIM1_ENABLE FL_GPTIM_DeInit(GPTIM1); #endif #ifdef FL_GPTIM2_ENABLE FL_GPTIM_DeInit(GPTIM2); #endif #ifdef FL_LPTIM32_ENABLE FL_LPTIM32_DeInit(LPTIM32); #endif //留着LPTIM16不反初始,是给间歇唤醒用的; } /*--------------------------------------------------------------------------- |Prototype : |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : 任务, 测试用 ----------------------------------------------------------------------------*/ void tim_task(void) { if(g_tim.state==1u) { //#ifdef FL_ATIM_PWM_EN //FL_ATIM_WriteCompareCH2(ATIM,g_tim.pwm_duty); //B6 //#endif #ifdef FL_GPTIM_ENABLE FL_GPTIM_WriteCompareCH2(GPTIM0,g_tim.pwm_duty); //B6 #endif } }