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

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条回答
728196
1楼-- · 2019-12-28 13:30
反汇编 最直接
gao_hailong
2楼-- · 2019-12-28 19:20
 精彩回答 2  元偷偷看……
yangsen
3楼-- · 2019-12-28 23:45
ronic 发表于 2017-6-17 05:22
我需要是否知道在任意一个中断里,不是单单一个中断。所以这不是很可行啊。 ...

楼主好好读读那些经典rtos的代码就明白我说的是什么意思了,7楼已经说了
ronic
4楼-- · 2019-12-28 23:52
感谢诸位答复,经过自己研究并搜索网络,我暂时实现了下面的方法。测试还是可以使用的。

        inline  int  in_isr()
//        int  in_isr(void)
        {
                volatile int tmp=0;
               
                __asm
                {
                        MRS tmp,IPSR           ///读取CPSR的值
                       
                }
                return tmp&0x1f;                 
       
        }

一周热门 更多>