我用定时器做输入捕获,同样的程序,TIM3可以,TIM1就没有。
用的PB0管脚,正好是TIM3的chanel 3,和TIM1的channel2.
配置都一样,中断函数TIM1用的TIM1_CC_IRQHandler,
但是就是不进中断,改成TIM3的话就可以。。。
但此时TIM1还是在运行的,我看到CNT计数器一直在变化
这两配置还有什么区别吗
本帖最后由 helenhll 于 2014-11-12 16:36 编辑
你把你的配置发一下让大家看一下,它们不在一个时钟总线上 TIME1 在APB2上 TIME3在APB1上
改成TIM8也不行,情况和TIM1一样,TIM8的配置程序
RCC->APB2ENR |= RCC_APB2Periph_TIM8;
sysPinAFConfig(GPIOB, GPIO_PinSource0, GPIO_AF_TIM8);
sysPinAFConfig(GPIOB, GPIO_PinSource1, GPIO_AF_TIM8);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
sysPinInit(GPIOB, &GPIO_InitStructure);
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //死区控制用。
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器方向
TIM_TimeBaseInitStructure.TIM_Prescaler = 41; //Timer clock = sysclock /(TIM_Prescaler+1) = 2M
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInitStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseInit(TIM8,&TIM_TimeBaseInitStructure);
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
TIM_ICInitStructure.TIM_ICFilter = 0;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInit(TIM8,&TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM8, TIM_TS_TI1FP1);
TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Reset );//触发方式
TIM_SelectMasterSlaveMode(TIM8, TIM_MasterSlaveMode_Enable); //
TIM_ClearITPendingBit(TIM8, TIM_IT_CC2);
TIM_ITConfig(TIM8, TIM_IT_CC2, ENABLE);
stm32fIntEnable(TIM8_CC_IRQn, INT_PRIO_1MS);
TIM8->CR1 |= TIM_CR1_CEN;
本帖最后由 helenhll 于 2014-11-12 16:22 编辑
TIM3的配置程序修改了
RCC->APB1ENR |= RCC_APB1Periph_TIM3;
stm32fIntEnable(TIM3_IRQn, INT_PRIO_1MS);
其余就是TIM8->TIM3,
channel从2->3
我怀疑是APB2有什么问题
可是我用了一个USART1,也是APB2上的,可以读写
如果引脚的时钟配置好,复用功能定义,定时器配置,
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //互补输出允许
不好意思 刚才看错了
看一下手册反向引脚是否能够进行捕获功能 本帖最后由 daicheng 于 2014-11-12 16:52 编辑
您好。
请问是啥意思啊?
是说这个引脚吗?PB0这个引脚可以捕获的,我用TIM3定时器,还是这个引脚,可以捕获。
还是说TIM1和TIM8的channel2不能用于捕获?
确认了一下PB0为PWM反向输出引脚(TIM2_CH2N/TIM8_CH2N ),如果捕获的话需要使用使用TIM2_CH2/TIM8_CH2