[求助] 请问stm32f407的TIM1和其他标准定时器有什么区别

helenhll   2014-11-12 15:31 楼主
我用定时器做输入捕获,同样的程序,TIM3可以,TIM1就没有。 用的PB0管脚,正好是TIM3的chanel 3,和TIM1的channel2. 配置都一样,中断函数TIM1用的TIM1_CC_IRQHandler, 但是就是不进中断,改成TIM3的话就可以。。。 但此时TIM1还是在运行的,我看到CNT计数器一直在变化 这两配置还有什么区别吗 本帖最后由 helenhll 于 2014-11-12 16:36 编辑

回复评论 (12)

你把你的配置发一下让大家看一下,它们不在一个时钟总线上 TIME1 在APB2上  TIME3在APB1上
处处留心皆学问!
点赞  2014-11-12 16:06
改成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 编辑
点赞  2014-11-12 16:11
TIM3的配置程序修改了
RCC->APB1ENR |= RCC_APB1Periph_TIM3;
stm32fIntEnable(TIM3_IRQn, INT_PRIO_1MS);

其余就是TIM8->TIM3,
channel从2->3
点赞  2014-11-12 16:13
我怀疑是APB2有什么问题
可是我用了一个USART1,也是APB2上的,可以读写
点赞  2014-11-12 16:15
引用: daicheng 发表于 2014-11-12 16:06
你把你的配置发一下让大家看一下,它们不在一个时钟总线上 TIME1 在APB2上  TIME3在APB1上

我上了配置了,帮我看看啊,大侠
点赞  2014-11-12 16:36
如果引脚的时钟配置好,复用功能定义,定时器配置,
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //互补输出允许
处处留心皆学问!
点赞  2014-11-12 16:41
引用: daicheng 发表于 2014-11-12 16:41
如果引脚的时钟配置好,复用功能定义,定时器配置,
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputN ...

我这个是捕获,为什么要配输出呢?
点赞  2014-11-12 16:45
不好意思 刚才看错了 看一下手册反向引脚是否能够进行捕获功能 本帖最后由 daicheng 于 2014-11-12 16:52 编辑
处处留心皆学问!
点赞  2014-11-12 16:48
引用: daicheng 发表于 2014-11-12 16:48
不好意思 刚才看错了
看一下手册反向引脚是否能够进行捕获功能

您好。

请问是啥意思啊?

是说这个引脚吗?PB0这个引脚可以捕获的,我用TIM3定时器,还是这个引脚,可以捕获。

还是说TIM1和TIM8的channel2不能用于捕获?
点赞  2014-11-12 16:54
没人回答吗
点赞  2014-11-13 09:56
引用: helenhll 发表于 2014-11-13 09:56
没人回答吗

确认了一下PB0为PWM反向输出引脚(TIM2_CH2N/TIM8_CH2N ),如果捕获的话需要使用使用TIM2_CH2/TIM8_CH2
处处留心皆学问!
点赞  2014-11-18 17:10
学习下!
点赞  2017-8-15 16:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复