打印
[STM32F1]

Stm32f103c8t6波形拷贝,TIM2CH2和TIM2CH3分别捕捉高电平和低电平

[复制链接]
2671|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 panyibin133 于 2014-11-22 22:32 编辑

下面是我根据原子的例子修改的中断代码,但是数据捕获为何数据是相同的?
void TIM2_IRQHandler(void)
{

        if((TIM2CH2_CAPTURE_STA&0X80)==0)//还未成功捕获        
        {         
                if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
                 
                {         
                        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
                        if(TIM2CH2_CAPTURE_STA&0X40)
                        {
                                if((TIM2CH2_CAPTURE_STA&0X3F)==0X3F)
                                {
                                        TIM2CH2_CAPTURE_STA|=0X80;
                                        TIM2CH2_CAPTURE_VAL=0XFFFF;
                                }else TIM2CH2_CAPTURE_STA++;
                        }
                        if(TIM2CH3_CAPTURE_STA&0X40)
                        {
                                if((TIM2CH3_CAPTURE_STA&0X3F)==0X3F)
                                {
                                        TIM2CH3_CAPTURE_STA|=0X80;
                                        TIM2CH3_CAPTURE_VAL=0XFFFF;
                                }else TIM2CH3_CAPTURE_STA++;
                        }         
                }
                if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
                {        
                        TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
                        if(TIM2CH2_CAPTURE_STA&0X40)                        
                        {                                 
                                TIM2CH2_CAPTURE_STA|=0X80;        
                                TIM2CH2_CAPTURE_VAL=TIM_GetCapture2(TIM2);
                                TIM_OC2PolarityConfig(TIM2,TIM_ICPolarity_Rising);               
                        }                                                
                        else
                        {
                                TIM2CH2_CAPTURE_STA=0;                        //清空
                                TIM2CH2_CAPTURE_VAL=0;
                                 TIM_SetCounter(TIM2,0);
                                TIM2CH2_CAPTURE_STA|=0X40;               
                                TIM_OC2PolarityConfig(TIM2,TIM_ICPolarity_Falling);
                        }
               
                }
                if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)
                {        
                        TIM_ClearITPendingBit(TIM2,TIM_IT_CC3);
                        if(TIM2CH3_CAPTURE_STA&0X40)                        
                        {                                 
                                TIM2CH3_CAPTURE_STA|=0X80;               
                                TIM2CH3_CAPTURE_VAL=TIM_GetCapture3(TIM2);
                                TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);        
                        }                                                                 
                        else
                        {        
                                TIM2CH3_CAPTURE_STA=0;                        //清空
                                TIM2CH3_CAPTURE_VAL=0;
                                 TIM_SetCounter(TIM2,0);
                                TIM2CH3_CAPTURE_STA|=0X40;               
                                TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
                        }
               
                }        
        }
}
+4465
-4465
-1638
+1638
-1635
。。。。中间还有数据正表示高电平负表示低电平,但是貌似不对啊都一样,空调遥控器的红外数据低电平的完全不对。。。
-513
+513
+512
-512
我需要捕获拷贝的波形




沙发
airwill| | 2014-11-23 08:18 | 只看该作者
貌似不对?
你应该对着示波器, 逐个波形校对验证. 再捕捉错误点分析原因.
又是一大段没有注释的代码.
你认为网友没有板子, 没有遥控器信号, 全靠猜, 能够比你在捕捉波形并对着检查更容易找到问题?

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
panyibin133 + 2 赞一个!
板凳
panyibin133|  楼主 | 2014-12-16 09:42 | 只看该作者
已经解决 Rising Faling弄反了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

1

粉丝