| void TIM16_PWM_Init(uint16_t period, uint16_t pulse)
 {
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 TIM_OCInitTypeDef  TIM_OCInitStructure;
 TIM_DeInit(TIM16);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16,ENABLE);
 TIM_ARRPreloadConfig(TIM16, ENABLE);        // ARR影子开启
 TIM_OC1PreloadConfig(TIM16, TIM_OCPreload_Enable);  //OC1影子开启
 TIM_TimeBaseStructure.TIM_Prescaler = 48-1;                //1us per count @48M clock
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        //向上计数
 TIM_TimeBaseStructure.TIM_Period = period;                        //首个PWM预装ARR
 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
 TIM_TimeBaseInit(TIM16, &TIM_TimeBaseStructure);
 
 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                //比较匹配时输出高
 TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
 TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;        //空闲时刻输出高
 TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set;
 TIM_OCInitStructure.TIM_Pulse =  pulse;   //这里初始化装入CC值,实际这个脉冲未发现输出
 TIM_OC1Init(TIM16, &TIM_OCInitStructure);
 TIM_Cmd(TIM16, ENABLE);
 TIM_CtrlPWMOutputs(TIM16, ENABLE);
 /* 注意,发现启动TIM后会立即进入中断,在中断中载入需要输出的PWM */
 TIM_ClearITPendingBit (TIM16, TIM_IT_Update);
 TIM_ClearITPendingBit (TIM16, TIM_IT_CC1);        //必须要清除中断标志位
 TIM_ITConfig(TIM16,TIM_IT_Update|TIM_IT_CC1, ENABLE);
 }
 初始化传入参数:
 TIM16_PWM_Init(100,10);   //无论传入什么参数,这个脉冲都未发现
 |