在线时间5 小时
UID3055849
注册时间2014-8-28
NXP金币0
该用户从未签到
新手上路

- 积分
- 41
- 最后登录
- 2014-11-10
|
本帖最后由 knife 于 2014-11-10 19:14 编辑
现有三个中断源PIT0,PIT1和PROTA,通过下面的代码使能了各中断源的请求
/**********************************************************************
* 函数名: EnableIRQ
* 功能: 使能IRQ中断
* 返回值: 无
* 参数: wIRQ: IRQ号
* 说明: 无
**********************************************************************/
void EnableIRQ(uint16 wIRQ)
{
if (wIRQ > MAXIRQ)
return; //保证IRQ号为有效的IRQ号
NVIC_ICPR_REG(NVIC_BASE_PTR,(wIRQ >> 5)) |= (1 << (wIRQ & 0x1F));
NVIC_ISER_REG(NVIC_BASE_PTR,(wIRQ >> 5)) |= (1 << (wIRQ & 0x1F));
}
通过验证,三个中断源工作正常.
然后根据需要,添加禁止其中的一个中断源的代码如下:
/**********************************************************************
* 函数名: DisableIRQ
* 功能: 禁止IRQ中断
* 返回值: 无
* 参数: wIRQ: IRQ号
* 说明: 无
**********************************************************************/
void DisableIRQ(uint16 wIRQ)
{
if (wIRQ > MAXIRQ)
return; //保证IRQ号为有效的IRQ号
NVIC_ICER_REG(NVIC_BASE_PTR,(wIRQ >> 5)) |= (1 << (wIRQ & 0x1F));
}
再次验证时发现,所有的中断均不能被响应了.
请教这个原因是什么?
|
|