OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3739|回复: 0

求助!F407开启输入捕获会进入硬件错误

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-1-30
在线时间
2 小时
发表于 2018-2-2 14:42:29 | 显示全部楼层 |阅读模式
我利用TIM4的4个通道做4路输入捕获,程序运行一段时间会进入 硬件错误,找不到原因,求助各位大佬





u8  TIM4CH1_CAPTURE_STA=0;        //输入捕获状态       
u8  TIM4CH2_CAPTURE_STA=0;        //输入捕获状态               
u8  TIM4CH3_CAPTURE_STA=0;        //输入捕获状态               
u8  TIM4CH4_CAPTURE_STA=0;        //输入捕获状态                                                             
//定时器4中断服务程序         
void TIM4_IRQHandler(void)
{
        if((TIM4CH1_CAPTURE_STA&0X80)==0)//还未成功捕获       
        {
                if (TIM_GetITStatus(TIM4, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
                {       
                        if(TIM4CH1_CAPTURE_STA&0X40)                //捕获到一个下降沿                
                        {                                 
                                TIM4CH1_CAPTURE_STA|=0X80;                //标记成功捕获到一次上升沿
                                pwm_value[2]=TIM_GetCapture1(TIM4);
                                   TIM_OC1PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
                                TIM4CH1_CAPTURE_STA=0;
                        }else                                                                  //还未开始,第一次捕获上升沿
                        {
                                TIM4CH1_CAPTURE_STA=0;                        //清空
                                 TIM_SetCounter(TIM4,0);
                                TIM4CH1_CAPTURE_STA|=0X40;                //标记捕获到了上升沿
                                   TIM_OC1PolarityConfig(TIM4,TIM_ICPolarity_Falling);                //CC1P=1 设置为下降沿捕获
                        }                    
                }                                                                                   
                 TIM_ClearITPendingBit(TIM4, TIM_IT_CC1); //清除中断标志位
        }
/////////////////
        if((TIM4CH2_CAPTURE_STA&0X80)==0)//还未成功捕获       
        {
                if (TIM_GetITStatus(TIM4, TIM_IT_CC2) != RESET)//捕获1发生捕获事件
                {       
                        if(TIM4CH2_CAPTURE_STA&0X40)                //捕获到一个下降沿                
                        {                                 
                                TIM4CH2_CAPTURE_STA|=0X80;                //标记成功捕获到一次上升沿
                                pwm_value[3]=TIM_GetCapture2(TIM4);
                                   TIM_OC2PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
                                TIM4CH2_CAPTURE_STA=0;
                        }else                                                                  //还未开始,第一次捕获上升沿
                        {
                                TIM4CH2_CAPTURE_STA=0;                        //清空
                                 TIM_SetCounter(TIM4,0);
                                TIM4CH2_CAPTURE_STA|=0X40;                //标记捕获到了上升沿
                                   TIM_OC2PolarityConfig(TIM4,TIM_ICPolarity_Falling);                //CC1P=1 设置为下降沿捕获
                        }                    
                }                                                                                   
                 TIM_ClearITPendingBit(TIM4, TIM_IT_CC2); //清除中断标志位
    }
/////////////////
        if((TIM4CH3_CAPTURE_STA&0X80)==0)//还未成功捕获       
        {
                if (TIM_GetITStatus(TIM4, TIM_IT_CC3) != RESET)//捕获1发生捕获事件
                {       
                        if(TIM4CH3_CAPTURE_STA&0X40)                //捕获到一个下降沿                
                        {                                 
                                TIM4CH3_CAPTURE_STA|=0X80;                //标记成功捕获到一次上升沿
                                pwm_value[4]=TIM_GetCapture3(TIM4);
                                   TIM_OC3PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
                                TIM4CH3_CAPTURE_STA=0;
                        }else                                                                  //还未开始,第一次捕获上升沿
                        {
                                TIM4CH3_CAPTURE_STA=0;                        //清空
                                 TIM_SetCounter(TIM4,0);
                                TIM4CH3_CAPTURE_STA|=0X40;                //标记捕获到了上升沿
                                   TIM_OC3PolarityConfig(TIM4,TIM_ICPolarity_Falling);                //CC1P=1 设置为下降沿捕获
                        }                    
                }                                                                                   
                 TIM_ClearITPendingBit(TIM4, TIM_IT_CC3); //清除中断标志位
        }

/////////////////
        if((TIM4CH4_CAPTURE_STA&0X80)==0)//还未成功捕获       
        {
                if (TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET)//捕获1发生捕获事件
                {       
                        if(TIM4CH4_CAPTURE_STA&0X40)                //捕获到一个下降沿                
                        {                                 
                                TIM4CH4_CAPTURE_STA|=0X80;                //标记成功捕获到一次上升沿
                                pwm_value[5]=TIM_GetCapture4(TIM4);
                                   TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
                                TIM4CH4_CAPTURE_STA=0;
                        }else                                                                  //还未开始,第一次捕获上升沿
                        {
                                TIM4CH4_CAPTURE_STA=0;                        //清空
                                 TIM_SetCounter(TIM4,0);
                                TIM4CH4_CAPTURE_STA|=0X40;                //标记捕获到了上升沿
                          TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Falling);                //CC1P=1 设置为下降沿捕获
                        }                    
                }                                                                                   
                 TIM_ClearITPendingBit(TIM4, TIM_IT_CC4); //清除中断标志位
        }
}

QQ截图20180202144044.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 03:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表