你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 中断抢占问题

[复制链接]
ikxlf 提问时间:2019-4-25 09:27 /
个位大佬你们是如何测试STM32中断抢占的,我的测试步骤如下:第一步、我配置了两个定时器,定时器2优先级为3,定时器3优先级为4,
第二步、我各自测试都可以发生中断
第三步、在定时器3中加上while 死循环,因为定时器三优先级低理论上讲定时器3中断在死循环中时候,定时器2肯定可以产生中断,但是定时器2的中断就再也不发生了,程序就死在了定时器3中断中


我想知道为何优先级高的定时器2居然一次都抢不到中断了呢? 费解中,拜求大佬帮忙解答。
收藏 评论11 发布时间:2019-4-25 09:27

举报

11个回答
sky_han 回答时间:2019-4-25 11:45:22
我认为你的思路没有问题,在中断里,如果遇到高优先级的中断应该将此中断压栈去执行新的高优先级中断。
你应该检查下:你的优先级分组是否正确?还有你的中断优先级配置是否正确?如果都是对的,不应该不能抢占。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

wenyangzeng 回答时间:2019-4-25 11:24:56
虽然定时器2中断优先,但既然定时器3已经进入中断,定时器2的当然要等定时器3退出才能进入。而定时器3是个死循环退不出,定时器2自然进不去了。不知楼主为何要来一个while()死循环?

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

ikxlf 回答时间:2019-4-25 11:43:23
wenyangzeng 发表于 2019-4-25 11:24
虽然定时器2中断优先,但既然定时器3已经进入中断,定时器2的当然要等定时器3退出才能进入。而定时器3是个 ...

我就是为了验证优先级高的定时器中断发生了可以打断优先级低的定时器正在进行的中断,所以我在优先级低的这个中断中加入死循环,这样呢如果另外一个优先级高的中断发生了就会跳出while循环去执行高优先级中断服务程序,但是呢结果却和我预料的不一样,我不知道是我哪里理解错了还是咋了
ikxlf 回答时间:2019-4-25 11:51:07
sky_han 发表于 2019-4-25 11:45
我认为你的思路没有问题,在中断里,如果遇到高优先级的中断应该将此中断压栈去执行新的高优先级中断。
你 ...

我设置的没问题
ikxlf 回答时间:2019-4-25 12:36:42
wenyangzeng 发表于 2019-4-25 11:24
虽然定时器2中断优先,但既然定时器3已经进入中断,定时器2的当然要等定时器3退出才能进入。而定时器3是个 ...

因为优先级高的可以打断优先级低的中断,所以即使while循环,高优先级的应该也可以执行,但是实际没有执行到,所以我才有疑问的
废鱼 回答时间:2019-4-25 16:47:03
楼主,两个优先级设置,除了你设置的这个3 4以外,还有一个NVIC_IRQChannelPreemptionPriority的设置,你把NVIC_IRQChannelPreemptionPriority设置两个不同的,tim3的设置为2,tim2的设置为0。再测试一下,是否可以打断。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

聪聪 回答时间:2019-4-25 17:15:18
楼主你的优先级分组怎么设置的,其次你说的优先级是抢占优先级吗?

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

衔胆栖冰 回答时间:2019-4-25 18:39:19
读取一下两个中断的优先级,确认一下是否优先级配置成功。问题最好描述清楚操作环境,什么芯片,什么库,然后上代码,方便别人帮你定位。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

ikxlf 回答时间:2019-4-29 18:10:58
衔胆栖冰 发表于 2019-4-25 18:39
读取一下两个中断的优先级,确认一下是否优先级配置成功。问题最好描述清楚操作环境,什么芯片,什么库,然 ...

谢谢您的意见,我试试。
ikxlf 回答时间:2019-4-29 18:11:25
衔胆栖冰 发表于 2019-4-25 18:39
读取一下两个中断的优先级,确认一下是否优先级配置成功。问题最好描述清楚操作环境,什么芯片,什么库,然 ...

谢谢您的意见,我试试。
ikxlf 回答时间:2019-4-29 18:13:41
聪神聪 发表于 2019-4-25 17:15
楼主你的优先级分组怎么设置的,其次你说的优先级是抢占优先级吗?

分组设置的是4,都是抢占的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版