初级会员

- 积分
- 147
- 金钱
- 147
- 注册时间
- 2016-7-11
- 在线时间
- 47 小时
|
1金钱
在做输入捕获我的串口显示不出来,求助!
void CATCH_Init(u16 arr,u8 pre)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
TIM_TimeBaseInitStructure.TIM_Period=arr;
TIM_TimeBaseInitStructure.TIM_Prescaler=pre;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM5,&TIM_TimeBaseInitStructure);
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICFilter=0x0;
TIM_ICInit(TIM5,&TIM_ICInitStructure);//③
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM5,ENABLE);
}
u8 TIM5CH1_CAPTURE_STA = 0; //输入捕获状态
u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
//编写中断服务程序
void TIME_IRQ()
{
if((TIM5CH1_CAPTURE_STA&0x80)==0)//表示表示捕获未完成
{
if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)//表示发生时钟更新
{
if((TIM5CH1_CAPTURE_STA&0x40)==1)
{
if((TIM5CH1_CAPTURE_STA&0x3F)==1)//检查第六位是否捕获到高电平,高电平的时间太长
{
TIM5CH1_CAPTURE_STA |= 0x80;
TIM5CH1_CAPTURE_VAL=0xFFFF;
}
else TIM5CH1_CAPTURE_STA++;
}
}
if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET)//发生捕获中断
{
if((TIM5CH1_CAPTURE_STA&0x40)==1)//表示捕获到一个下降沿,因为前面表示捕获到了上升沿
{
TIM5CH1_CAPTURE_STA |= 0x80;//表示成功捕获到一次
TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//设置为上升沿
}
else//捕获到一个上升沿
{
TIM5CH1_CAPTURE_STA=0;
TIM5CH1_CAPTURE_STA=0;
TIM_SetCounter(TIM5,0);
TIM5CH1_CAPTURE_STA |= 0x40;//表示捕获到了上升沿
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//设置为下仙??
}
}
TIM_ClearITPendingBit(TIM5,TIM_IT_Update|TIM_IT_CC1);//清除中断标志
}
}
|
|