初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2013-7-29
- 在线时间
- 7 小时
|

楼主 |
发表于 2013-9-3 09:47:44
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
战舰的板子是借的学长的 、、、原子哥 你看下我这配置 进入中断后一直出不来
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3; //PB10   B11
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);
/* Enable the TIM3 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //周期0~FFFF
TIM_TimeBaseStructure.TIM_Prescaler = 35; //时钟分频 输入捕获周期时间大于外接周期
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//基本初始化
TIM_ICInitStructure.TIM_Channel =TIM_Channel_2;
TIM_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising; //上升沿触发
TIM_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; //每检测到一个上升沿产生一次中断
TIM_ICInitStructure.TIM_ICFilter =0x0;
TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除溢出中断标志
TIM_Cmd(TIM2, ENABLE);
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
/*必须清空标志位*/
if(CaptureNumber ==0)
{
ICReadValue1 = TIM_GetCapture2(TIM2);
CaptureNumber = 1;
}
else if(CaptureNumber ==1)
{
ICReadValue2 = TIM_GetCapture2(TIM2);
/* Capture computation */
if (ICReadValue2 > ICReadValue1)
{
Capture = (ICReadValue2 - ICReadValue1);
}
else
{
Capture = ((0xFFFF - ICReadValue1) + ICReadValue2);
}
/* Frequency computation */
TIM3Freq = (float) (SystemCoreClock/ Capture/36); //输入信号的频率=TIM2的频率/两次捕获的时间
CaptureNumber = 0;
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
} |
|