查看: 5225|回复: 10

[分享] KL05 IO中断

[复制链接]

该用户从未签到

5

主题

21

帖子

0

注册会员

Rank: 2

积分
106
最后登录
1970-1-1
发表于 2014-12-4 15:33:28 | 显示全部楼层 |阅读模式
使用KL05板子,用cw for mcu v10.6版本软件,使用PTBIO口做中断,双边沿触发模式,PTB3-PTB5中只有PTB4能进入中断;以下是中断程序
PE_ISR(GPIO2_Interrupt)
{
  /* {Default RTOS Adapter} ISR parameter is passed through the global variable */
  GPIO2_TDeviceDataPtr DeviceDataPrv = INT_PORTA__DEFAULT_RTOS_ISRPARAM;
  GPIO2_TPortValue State;

  State = (GPIO2_TPortValue)(PORT_PDD_GetInterruptFlags(GPIO2_PORTCONTROL_BASE_ADDRESS)
          & ((GPIO2_TPortValue)GPIO2_ALLOCATED_PINS_MASK)); /* Retrieve flags */
  DeviceDataPrv->EventFlags |= State;
  PORT_PDD_ClearInterruptFlags(GPIO2_PORTCONTROL_BASE_ADDRESS, State); /* Clears flags */
  GPIO2_OnPortEvent(DeviceDataPrv->UserData); /* Call OnPortEvent event */
}
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-4 22:32:29 | 显示全部楼层
楼主你好!
那么PTB3,PTB5你在PORT寄存器中有没有使能中断呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

21

帖子

0

注册会员

Rank: 2

积分
106
最后登录
1970-1-1
 楼主| 发表于 2014-12-5 09:17:43 | 显示全部楼层
  下面是配置代码,应该是有使能了
/* PORTB_PCR3: ISF=0,MUX=1 */
  PORTB_PCR3 = (uint32_t)((PORTB_PCR3 & (uint32_t)~(uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_MUX(0x06)
               )) | (uint32_t)(
                PORT_PCR_MUX(0x01)
               ));
  /* PORTB_PCR4: ISF=0,MUX=1 */
  PORTB_PCR4 = (uint32_t)((PORTB_PCR4 & (uint32_t)~(uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_MUX(0x06)
               )) | (uint32_t)(
                PORT_PCR_MUX(0x01)
               ));
  /* PORTB_PCR5: ISF=0,MUX=1 */
  PORTB_PCR5 = (uint32_t)((PORTB_PCR5 & (uint32_t)~(uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_MUX(0x06)
               )) | (uint32_t)(
                PORT_PCR_MUX(0x01)
               ));
/* PORTB_PCR3: ISF=1,IRQC=0x0B */
  PORTB_PCR3 = (uint32_t)((PORTB_PCR3 & (uint32_t)~(uint32_t)(
                PORT_PCR_IRQC(0x04)
               )) | (uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_IRQC(0x0B)
               ));
  /* PORTB_PCR4: ISF=1,IRQC=0x0B */
  PORTB_PCR4 = (uint32_t)((PORTB_PCR4 & (uint32_t)~(uint32_t)(
                PORT_PCR_IRQC(0x04)
               )) | (uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_IRQC(0x0B)
               ));
  /* PORTB_PCR5: ISF=1,IRQC=0x0B */
  PORTB_PCR5 = (uint32_t)((PORTB_PCR5 & (uint32_t)~(uint32_t)(
                PORT_PCR_IRQC(0x04)
               )) | (uint32_t)(
                PORT_PCR_ISF_MASK |
                PORT_PCR_IRQC(0x0B)
               ));
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-5 20:33:18 | 显示全部楼层
楼主,你好。
这样配置,有没有进入debug检查你的PORT[IRQC]以及MUX寄存器呢?
进入debug,运行配置PORT口之后,检查PTB3和PTB5的的MUX为1,IRQC为B。
还有就是测试的时候,可以一个一个引脚开启中断测试,因为PORTB的所有中断引脚都是共有一个中断号的。
所以如果多个中断同时发生,只有一个中断可以响应。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

21

帖子

0

注册会员

Rank: 2

积分
106
最后登录
1970-1-1
 楼主| 发表于 2014-12-9 14:06:02 | 显示全部楼层
PTA13和PTA19初始化中有定义MUX为1,IRQC为B;编译debug运行,发现寄存器配置中并没有配置成功。MKL05Z32VLF4中不是所有IO引脚都可以作为中断IO口么?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-12-9 14:31:08 | 显示全部楼层
    楼主你好
    KL05的PTB5引脚默认就是NMI_b不可屏蔽中断功能,如果引脚充足的情况下不建议使用此引脚上其他功能。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-12-9 14:32:40 | 显示全部楼层
    myjing2005 发表于 2014-12-9 14:06
    PTA13和PTA19初始化中有定义MUX为1,IRQC为B;编译debug运行,发现寄存器配置中并没有配置成功。MKL05Z32VL ...

    请看参考手册KL05P48M48SF1RM的“3.10.1.2 Port Control and Interrupt Summary”章节描述:
    Ports Summary.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    106
    最后登录
    1970-1-1
     楼主| 发表于 2014-12-9 15:09:29 | 显示全部楼层
    谢谢版主,如果要用到的话,需要更改哪些东西啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-12-11 16:52:43 | 显示全部楼层
    myjing2005 发表于 2014-12-9 15:09
    谢谢版主,如果要用到的话,需要更改哪些东西啊

    如果要用PTB5,并且外部输入低电平,那么中断会直接进入到NMI中断,而不是PORTB中断。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    802

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1763
    最后登录
    1970-1-1
    发表于 2014-12-12 18:26:19 | 显示全部楼层
    可能是PTB5引脚的参数设置的不对,没有指引到
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 16:52 , Processed in 0.110351 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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