程序为什么只能跑一个中断等级较高的

2019-07-21 07:56发布

1、具体问题:自己用的F103做FOC,现在调试到速度环,功能正常,但是程序在未开始FOC运算的时候,代码正常。一旦开始foc运算后,程序只能跑timer中断里关于FOC的部分。
                       有关滴答中断和while里面的其他代码均没发运行。
2、具体配置如下:timer1做PWM输出,中断频率10KHZ,主要做FOC运算。
                              滴答200ms一次中断,做按键扫描。
                              while里面就反转一个灯,到时可能会加状态机。
3、网上有说法,是因为中断冗长造成的,我测试过了,并不是这个原因。下图说事儿:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
傲龙啸天
1楼-- · 2019-07-21 10:49
 精彩回答 2  元偷偷看……
douxiaolingyun
2楼-- · 2019-07-21 14:50
中断里加滴答时钟了???
傲龙啸天
3楼-- · 2019-07-21 16:25
1、运行FOC算法中断代码执行时间占用25%的时间,不存在一次中断还没有运行完,又有中断挂起的这种情况。(92%的图片是中断为跑foc时,代码占用2%的时间。(看低电平时间))
2、还有种说法是。中断中使用了浮点运算。这个不可能,代码中的浮点运算我都转换成定点运算的。其次也不存在堆栈溢出的情况。
     还望各路大神,不吝赐教
傲龙啸天
4楼-- · 2019-07-21 21:17
douxiaolingyun 发表于 2018-11-14 08:29
中断里加滴答时钟了???

没有  这都是独立的
douxiaolingyun
5楼-- · 2019-07-21 21:39
你如果怕中断问题的话,你把别的中断关闭了,就剩一个timer 1,这样调试。如果还有问题那就是你timer 1出问题了。然后可以timer 1程序全剪切到主函数,timer 1设置标志位,主函数判断标志位,运行timer 1里的程序。
傲龙啸天
6楼-- · 2019-07-21 23:10
 精彩回答 2  元偷偷看……

一周热门 更多>