程序跑飞不知道原因

2019-07-14 23:43发布

        大家好,我用两路 IIC 分别测出角加速度和陀螺仪的数据,每10ms进入一次中断,中断中对数据经行处理,并通过usart发送数据。但是程序总是跑飞,原因可能是什么。下面是我中断的代码。
void tiM2_IRQHandler(void)
{
        if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
        {       
                TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);   
                GetAngle();
        }                        
}

void GetAngle(void)
{

     LX_Val.Angle+=(LX_Val.Acc)*dt;
    Angle_delta=(MZ_Val.Angle-Real_angle)*Tg;
    Real_angle+=(LX_Val.Acc+Angle_delta)*dt;

                
         #if 1
      SendDate('1',LX_Val.Angle,100) ;
      SendDate('2',MZ_Val.Angle,100) ;
      SendDate('3',Real_angle,100) ;
          #endif
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
1563661808
1楼-- · 2019-07-15 15:52
 精彩回答 2  元偷偷看……
卧虎山小小帅
2楼-- · 2019-07-15 17:13
我是菜鸟,觉得上面的解答很好,就想问下怎么通过堆栈观察窗口观察堆栈是否溢出呢?
奶仔哥
3楼-- · 2019-07-15 21:20
Jack315 发表于 2014-4-24 00:19
在中断服务程序入口设断点,然后单步运行。界面里应该有时钟计数器,用这个计数器可以知道运行一段程序所花时间。另外,界面里应该有堆栈观察窗口,可以看堆栈是否溢出。。。
如果中断处理程序所花时间(包括被其他更高优先级的中断所占时间)太长,那么在中断处理程序还没运行结束的时候就有可能再次进入中断。。。中断 ...

这程序值得深入探讨研究一下    这么长   坐等大神来解答
Tom_qf
4楼-- · 2019-07-16 00:12
中断调用函数,这样好吗,等待大神的解答
扫IC网
5楼-- · 2019-07-16 03:31
这里有个STM32免费样品申请的链接,需要填个问卷。希望可以帮到你
https://www.sojump.hk/jq/15943942.aspx

一周热门 更多>