[Kinetis] KSDK中的中断管理

[复制链接]
2003|4
 楼主| ar_m_cu 发表于 2015-7-7 11:15 | 显示全部楼层 |阅读模式
在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 | 显示全部楼层
24.jpg
这个是对该函数的解释。


 楼主| ar_m_cu 发表于 2015-7-8 17:18 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-8 17:15
这个是对该函数的解释。

这段我看了,也理解了会用了,但是不知道用在什么样的场合
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

61

主题

1200

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部