硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3023|回复: 2
收起左侧

[有问必答] 程序为什么只能跑一个中断等级较高的

[复制链接]

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2018-11-14 08:43:01 | 显示全部楼层 |阅读模式
本帖最后由 yoyo 于 2018-11-14 08:44 编辑

1、具体问题:自己用的F103做FOC,现在调试到速度环,功能正常,但是程序在未开始FOC运算的时候,代码正常。一旦开始foc运算后,程序只能跑timer中断里关于FOC的部分。
                       有关滴答中断和while里面的其他代码均没发运行。
2、具体配置如下:timer1做PWM输出,中断频率10KHZ,主要做FOC运算。
                              滴答200ms一次中断,做按键扫描。
                              while里面就反转一个灯,到时可能会加状态机。
3、网上有说法,是因为中断冗长造成的,我测试过了,并不是这个原因。下图说事儿:

3.1、运行FOC算法中断代码执行时间占用25%的时间,不存在一次中断还没有运行完,又有中断挂起的这种情况。(92%的图片是中断为跑foc时,代码占用2%的时间。(看低电平时间))
3.2、还有种说法是。中断中使用了浮点运算。这个不可能,代码中的浮点运算我都转换成定点运算的。其次也不存在堆栈溢出的情况。
     还望各路大神,不吝赐教
IMG_20181113_211845.jpg
IMG_20181113_211854.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2018-11-15 03:38:53 | 显示全部楼层
你的10KHz中断程序执行一次多少时间,你实际测试的数值。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2018-11-15 14:18:57 | 显示全部楼层
eric2013 发表于 2018-11-15 03:38
你的10KHz中断程序执行一次多少时间,你实际测试的数值。

解决了   由于添加功能一个中断添加了一个分支  忘记清中断了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 19:29 , Processed in 0.224373 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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