初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2019-9-16
- 在线时间
- 24 小时
|
10金钱
小弟实在搞不懂咋回事了。求助一下通过定时器1配置成下降沿捕获脉冲。用函数发生器设置1HZ的。50%占空比的方波。定时器理论上是1秒进一次中断,但是有些时候会1秒进2次。
调整占空比为30%后,中断依然会出现1秒进2次的情况。第一次进入时间较上一次是700ms,下一次是300ms.
通过上面的现象,我感觉就是中断源不对,有些时候中断源反转了。但是不知道问题出在哪。
GPIO_InitTypeDef GPIO_InitStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//TIM1ê±»ù
NVIC_InitTypeDef NVIC_InitStructure;
/* GPIOB Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* TIM4 channel 2 pin (PB.07) configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM_DeInit(TIM1);
TIM_TimeBaseStructure.TIM_Period =65000-1;//×Ô¶ˉ֨װÖμ
TIM_TimeBaseStructure.TIM_Prescaler =3600-1;//Ô¤·ÖÆμÖμ
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//êäèëê±Öó2»·ÖÆμ
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//ÏòéϼÆêy
TIM_TimeBaseStructure.TIM_RepetitionCounter=1;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//êäèëí¨μà
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; //2¶×½Ï½μÑØ
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //2¶×½ÖD¶Ï
TIM_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; //2¶×½2»·ÖÆμ
TIM_ICInitStructure.TIM_ICFilter = 0x0; //2¶×½êäèë2»ÂË2¨
// TIM_ICInit(TIM1, &TIM_ICInitStructure);
TIM_PWMIConfig( TIM1, &TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM1,TIM_TS_TI1FP1);
// TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset);
TIM_SelectMasterSlaveMode(TIM1,TIM_MasterSlaveMode_Enable);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn; //TIM4ÖD¶Ï
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //ÏèÕ¼óÅÏè¼¶1¼¶
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //′óóÅÏè¼¶2¼¶
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μà±»ê1Äü
NVIC_Init(&NVIC_InitStructure); //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
|
|