求助大神, 只要基础定时器, 到了时间产生中断,但是需要32位的。 是不是可以用TIM2触发TIM3,级联定时? TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //clock TIM_TimeBaseStructure.TIM_Period = 4999; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler = 799; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位 TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); //选择输出模式 主模式选择 这是级联的关键 TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //启动定时器的主从模式 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //clock TIM_TimeBaseStructure.TIM_Period = 4999; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler = 79; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位 // TIM_SlaveMode_Trigger // TIM_SlaveMode_External1 // TIM_SlaveMode_Gated TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_External1);// 从模式外部触发模式 //外部时钟模式 外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器 TIM_SelectInputTrigger (TIM3, TIM_TS_ITR1);// 触发选择,ITR1 即 TIM2 // TIM_ITRxExternalClockConfig(TIM3, TIM_TS_ITR1); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2, ENABLE); TIM_Cmd(TIM3, ENABLE); 无法进入中断, 求解决。 |
额,有需要,不然也不会要32位的。
是想要两个计时器, 高16位作为一个值,低16位作为一个值。 不是简单的得到加到32位数。
那就再变通一下,设置2个16位变量就得了。
从模式不应该配置为外部触发 TIM2不是外部触发
应该是触发模式
如果要硬件32位定时器吗?可以换个型号
换不了型号了,指定了
TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_Trigger);
使用了这个也没有用