查看: 1663|回复: 3

[求助] KL25外部中断问题

[复制链接]

该用户从未签到

1

主题

1

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2015-7-15
发表于 2015-7-15 17:16:47 | 显示全部楼层 |阅读模式
将PTD2配置为下降沿触发中断,PTD2与红外接收管,希望实现用普通IO口的外部中断来模拟脉冲计数功能,记录接受红外脉冲个数。问题:编写好底层后发现不能进入中断服务函数,希望大家帮忙寻找问题,代码如下:
PTD配置并使能
           SIM->SCGC5    |=(uint32_t)(0x1UL<<12);
           PORTD->PCR[2]    =(uint32_t)PORT_PCR_MUX(1)|PORT_PCR_IRQC(0x0A)|PORT_PCR_PE_MASK|PORT_PCR_PS_MASK;
          NVIC->ICPR[((uint32_t)(PORTD_IRQ_NUM) >> 5)] = (1 << ((uint32_t)(PORTD_IRQ_NUM) & 0x1F));    //clear the NVIC flag
          PORTD->ISFR =(uint32_t)(0x1UL<<4);    //clear the irq_flag
          NVIC->ISER[((uint32_t)(PORTD_IRQ_NUM) >> 5)] = (1 << ((uint32_t)(PORTD_IRQ_NUM) & 0x1F));/* enable interrupt */
注册中断
extern void PORTD_IRQ(void);
void PORTD_IRQHandler(void)
{
    PORTD->ISFR =(uint32_t)(0x1UL<<4);
}
中断服务函数
void PORTD_IRQ(void)
{
    i++;   
}

我知道答案 目前已有3人回答

评分

参与人数 1NXP金币 +5 收起 理由
小七 + 5 打赏!

查看全部评分

回复

使用道具 举报

该用户从未签到

42

主题

340

帖子

0

高级会员

Rank: 4

积分
722
最后登录
2016-1-9
发表于 2015-7-15 19:55:58 | 显示全部楼层
你用的是PTD2  PORTD->ISFR =(uint32_t)(0x1UL<<4);  不应该是<<2吗?
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-7-16 10:13:15 | 显示全部楼层
本帖最后由 FSL_TICS_ZP 于 2015-7-16 10:14 编辑

楼上说的是对的,但是在第一次的还是可以进入中断的,从代码上看PORT寄存器的设置应该是没有什么问题的,唯一需要确定的是中断向量配置是否正确,你可以通过debug手段观察一下,当给PTD2引脚下降沿时,ISF符号位是否有变化
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
    发表于 2015-7-31 14:19:27 | 显示全部楼层
    中断入口地址设置了没有啊!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 04:32 , Processed in 0.093806 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表