请教:如何判断当前函数是否运行在中断中

2019-12-27 18:53发布

stm32使用keil rtx,由于很多函数不能运行在中断里面,但是由于有很多嵌套调用。搞不清楚一个函数到底是不是到底是运行在中断里面。所以想请教一下是不是有没有方法判断当前运行代码是否在中断里面。
像这样使用

if(in_interrupt())
{
        some isr function // which can run in interrupt
}else
{
        some os api // which can not  run in inerrrupt
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
aozima
1楼-- · 2019-12-27 21:00
读芯片的IPSR寄存器来确定CPU的状态。

一般中断里面最好不要调用会有共享冲突的函数。
并尽可能快的退出中断。
catzsh
2楼-- · 2019-12-27 23:27
在线调试,打断点
dwj0
3楼-- · 2019-12-28 01:14
 精彩回答 2  元偷偷看……
yangsen
4楼-- · 2019-12-28 03:55
如果只是想知道是不是在中断里调用可以用一个全局变量,每次进中断加一,退出中断减一。函数检查这个变量是否为零就可以判断是否在中断中执行
ronic
5楼-- · 2019-12-28 05:52
yangsen 发表于 2017-6-17 05:15
如果只是想知道是不是在中断里调用可以用一个全局变量,每次进中断加一,退出中断减一。函数检查这个变量是 ...

我需要是否知道在任意一个中断里,不是单单一个中断。所以这不是很可行啊。
security
6楼-- · 2019-12-28 08:44
ronic 发表于 2017-6-17 05:22
我需要是否知道在任意一个中断里,不是单单一个中断。所以这不是很可行啊。 ...

你可以去看下 RT-Thread 的 rt_interrupt_enter() 和 rt_interrupt_leave() 接口。
或者 ucos-iii 的 OSIntEnter() 和 OSIntExit() 接口。

一周热门 更多>