OpenEdv-开源电子网

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

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

[复制链接]

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-6-12
在线时间
10 小时
发表于 2018-11-14 08:26:49 | 显示全部楼层 |阅读模式
1金钱
1、具体问题:自己用的F103做FOC,现在调试到速度环,功能正常,但是程序在未开始FOC运算的时候,代码正常。一旦开始foc运算后,程序只能跑timer中断里关于FOC的部分。
                       有关滴答中断和while里面的其他代码均没发运行。
2、具体配置如下:timer1做PWM输出,中断频率10KHZ,主要做FOC运算。
                              滴答200ms一次中断,做按键扫描。
                              while里面就反转一个灯,到时可能会加状态机。
3、网上有说法,是因为中断冗长造成的,我测试过了,并不是这个原因。下图说事儿:
IMG_20181113_211845.jpg
IMG_20181113_211854.jpg

最佳答案

查看完整内容[请看2#楼]

问题解决,有个中断由于修改程序后,中断标志位没有清。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-6-12
在线时间
10 小时
 楼主| 发表于 2018-11-14 08:26:50 | 显示全部楼层
问题解决,有个中断由于修改程序后,中断标志位没有清。
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-14 08:29:45 | 显示全部楼层
中断里加滴答时钟了???
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-6-12
在线时间
10 小时
 楼主| 发表于 2018-11-14 08:30:50 | 显示全部楼层
1、运行FOC算法中断代码执行时间占用25%的时间,不存在一次中断还没有运行完,又有中断挂起的这种情况。(92%的图片是中断为跑foc时,代码占用2%的时间。(看低电平时间))
2、还有种说法是。中断中使用了浮点运算。这个不可能,代码中的浮点运算我都转换成定点运算的。其次也不存在堆栈溢出的情况。
     还望各路大神,不吝赐教
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-6-12
在线时间
10 小时
 楼主| 发表于 2018-11-14 08:38:37 | 显示全部楼层
douxiaolingyun 发表于 2018-11-14 08:29
中断里加滴答时钟了???

没有  这都是独立的
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-14 08:48:39 | 显示全部楼层
你如果怕中断问题的话,你把别的中断关闭了,就剩一个timer 1,这样调试。如果还有问题那就是你timer 1出问题了。然后可以timer 1程序全剪切到主函数,timer 1设置标志位,主函数判断标志位,运行timer 1里的程序。
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-6-12
在线时间
10 小时
 楼主| 发表于 2018-11-14 11:12:01 | 显示全部楼层
douxiaolingyun 发表于 2018-11-14 08:48
你如果怕中断问题的话,你把别的中断关闭了,就剩一个timer 1,这样调试。如果还有问题那就是你timer 1出问 ...

只剩一个中断也试过   不行    如果timer1使用标志位的方法没发保证程序的实时性
回复

使用道具 举报

2

主题

68

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4156
金钱
4156
注册时间
2016-7-22
在线时间
583 小时
发表于 2018-11-14 11:46:41 | 显示全部楼层
试试看是不是 timer中断 里头处理的时间,大于timer中断时间了
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-14 14:08:32 | 显示全部楼层
既然只剩下一个中断也不行,那问题肯定不是别的中断影响了。你看看你这个中断标志位有没有清除更新中断标志TIM_IT_Update。还有就是你中断如果频率太高的话就也会出问题。
回复

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-11-14 14:23:33 | 显示全部楼层
你Timer1 做了PWM输出了,你怎么还写中断函数啊?可不可以用定时器2 写算法 处理定时器1的脉冲宽度?没接触过你这个,但是我写SPWM的时候都是用定时器2处理定期器1的脉冲宽度。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 00:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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