void TIM3_Config(u16 PeriodVal3)
{
TIM_TimeBaseInitTypeDef TIM_TimeInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* 计数器的配置 */
TIM_TimeInitStructure.TIM_Period=PeriodVal3; //周期的选择
TIM_TimeInitStructure.TIM_Prescaler=79; //分频的值,
TIM_TimeInitStructure.TIM_ClockDivision=0; //我也不是很懂啥意思
TIM_TimeInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数
TIM_TimeInitStructure.TIM_RepetitionCounter=200;//重复计数器的值
TIM_TimeBaseInit(TIM3,&TIM_TimeInitStructure);
/* 通道的输出模式 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //模式的pwm1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出的使能
TIM_OCInitStructure.TIM_Pulse = PeriodVal3>>1; //占空比一直都是50%
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //通道的极性高
TIM_OC1Init(TIM3,&TIM_OCInitStructure); //初始化
/* 以下的功能自定义 */
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//通道寄存器预加载自动
TIM_ARRPreloadConfig(TIM3, ENABLE);//计数寄存器预加载自动
TIM_Cmd(TIM3, ENABLE);//定时器的使能
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//更新中断使能
}
void TIM3_IRQHandler(void)//中断函数
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{ TIM_Cmd(TIM3,DISABLE);
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
为什么RCR的值对其没有任何影响呢。每次都是计算器溢出产生的更新中断,而不是RCR溢出产生的中断,要怎么配置,才能更新中断时RCR产生的,求教 |