捕获中断服务程序

 1 u8  TIM5CH1_CAPTURE_STA=0;    //输入捕获状态                            
 2 u16    TIM5CH1_CAPTURE_VAL;    //输入捕获值
 3  
 4 //定时器5中断服务程序     
 5 void TIM5_IRQHandler(void)
 6 { 
 7 
 8      if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获    
 9     {      
10         if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
11          
12         {        
13             if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
14             {
15                 if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
16                 {
17                     TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
18                     TIM5CH1_CAPTURE_VAL=0XFFFF;
19                 }else TIM5CH1_CAPTURE_STA++;
20             }     
21         }
22     if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
23         {    
24             if(TIM5CH1_CAPTURE_STA&0X40)        //捕获到一个下降沿         
25             {                  
26                 TIM5CH1_CAPTURE_STA|=0X80;        //标记成功捕获到一次高电平脉宽
27                 TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
28                    TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
29             }else                                  //还未开始,第一次捕获上升沿
30             {
31                 TIM5CH1_CAPTURE_STA=0;            //清空
32                 TIM5CH1_CAPTURE_VAL=0;
33                  TIM_SetCounter(TIM5,0);
34                 TIM5CH1_CAPTURE_STA|=0X40;        //标记捕获到了上升沿
35                    TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);        //CC1P=1 设置为下降沿捕获
36             }            
37         }                                                
38      }
39  
40     TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位
41  
42 }
 因此上面代码写的0x80就指的是捕获完成标志,0x40指的是捕获到高电平标志,0x00~0x3f则是表示捕获高电平或定时器溢出的次数。

 

转载于:https://www.cnblogs.com/zengsf/p/7263859.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值