void TIM3_Int_Init(u16 arr,u16 psc,u16 timerstate)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
//定时器TIM3初始化
TIM_TimeBaseStructure.TIM_Period=arr;
TIM_TimeBaseStructure.TIM_Prescaler=psc;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );
//中断优先级NVIC设置
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM3,timerstate);
}
在定时器初始化函数中利用timerstate变量控制定时器的开启(TIM_Cmd(TIM3,timerstate); ),timerstate=1时开启,=0时关闭,运行程序,无报错,可以使用,但有警告。
右键TIM_Cmd(),go to definition,查看timerstate参数类型:
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
属于枚举类型
仅在初始化函数中的timerstate做强制转换:
TIM_Cmd(TIM3,(FunctionalState)timerstate);
运行,无报错无警告。