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

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-22 03:59
试试看是不是 timer中断 里头处理的时间,大于timer中断时间了
douxiaolingyun
2楼-- · 2019-07-22 08:58
既然只剩下一个中断也不行,那问题肯定不是别的中断影响了。你看看你这个中断标志位有没有清除更新中断标志TIM_IT_Update。还有就是你中断如果频率太高的话就也会出问题。
douxiaolingyun
3楼-- · 2019-07-22 10:58
你Timer1 做了PWM输出了,你怎么还写中断函数啊?可不可以用定时器2 写算法 处理定时器1的脉冲宽度?没接触过你这个,但是我写SPWM的时候都是用定时器2处理定期器1的脉冲宽度。

一周热门 更多>