打印
[Kinetis]

KSDK中的中断管理

[复制链接]
1775|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在KSDK1.2的库文件中有这样一个函数:
void * INT_SYS_InstallHandler(IRQn_Type irqNumber, void (*handler)(void))
{
#if (defined(__CC_ARM))
    extern uint32_t Image$$VECTOR_RAM$$Base[];
    #define __VECTOR_RAM Image$$VECTOR_RAM$$Base
#else
    extern uint32_t __VECTOR_RAM[];
#endif
    /* Check IRQ number */
    assert(FSL_FEATURE_INTERRUPT_IRQ_MIN <= irqNumber);
    assert(irqNumber <= FSL_FEATURE_INTERRUPT_IRQ_MAX);
    /* Check whether there is vector table in RAM */
    assert(__VECTOR_RAM != 0U);
   
    /* Save the former handler pointer */
    void * retVal = (void *)__VECTOR_RAM[irqNumber + 16];
    /* Set handler into vector table */
    __VECTOR_RAM[irqNumber + 16] = (uint32_t)handler;
    return retVal;
}

看函数名字及介绍应该是中断注册,但看其实现貌似需要中断向量表在RAM中,
那么,该函数具体怎么使用呢?

相关帖子

沙发
ar_m_cu|  楼主 | 2015-7-7 11:16 | 只看该作者
另外,如果在FLASH中的中断管理中,能否实现类似的功能呢?感觉通过注册中断的方式很方便呢

使用特权

评论回复
板凳
quray1985| | 2015-7-7 14:48 | 只看该作者
这个确实不太懂啊,没遇到过这样的情况

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2015-7-8 17:15 | 只看该作者

这个是对该函数的解释。


使用特权

评论回复
5
ar_m_cu|  楼主 | 2015-7-8 17:18 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-7-8 17:15
这个是对该函数的解释。

这段我看了,也理解了会用了,但是不知道用在什么样的场合

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:初出茅庐,天下无敌,再学三年,寸步难行

61

主题

1200

帖子

7

粉丝