查看: 4191|回复: 5

[CodeWarrior] 【FRDM-KL02Z开发笔记】GPIO中断(CW10.6+FRDM-KL02Z+MiniDock)

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16770
    最后登录
    1970-1-1
    发表于 2015-11-25 21:49:26 | 显示全部楼层 |阅读模式
    本帖最后由 lkl0305 于 2015-11-25 22:06 编辑

    在练习了GPIO的基本输入输出功能后,接下来学习一下GPIO的中断功能,这个中断功能使用也是相当广泛的。

    GPIO可选择上升沿、下降沿、上升沿或下降沿、高电平、低电平等情况,使用也非常灵活!

    那还是结合实例吧,学起来比较有成就感嘛。

    实现功能还是按键控制灯,每次按下MiniDock上的K3键,蓝色的LED1状态取反一次,使用中断方式。

    开发环境还是:CW10.6+FRDM-KL02Z+MiniDock

    如何使用CW开发参考:CW10.6开发FRDM-KL02Z   

    类似的按键控制LED非中断参考:按键控制LED(CW10.6+FRDM-KL02Z+MiniDock)

    1、编程前还是先看电路这个电路非常简单,就不过多说明了,LED使用PTB6,key使用PTA12引脚。
    12.png 13.png
    11.png

    2、建立工程文件,这个参考之前的帖子就好了。

    3、在PE中添加LED引脚使用的GPIO模块,如下图:
    1.png

    4、在PE中添加GPIO的中断组件,以便共按键使用,如下图:
    2.png

    5、PE中配置LED组件:
    3.png

    6、PE中配置GPIO的外部中断,在这里选择下降沿触发,也就是每次按下按键触发中断。
    4.png

    7、由PE生成代码:
    5.png

    8、在生成的代码中,找到下图的文件,在对应的外部中断中添加LED状态变化的程序,其实非常简单,只需要1个函数就好了!
    6.png

    9、编译,调试程序,这个也省略了,大家可以参看之前的帖子。

    10、演示,这个效果和之前的一样,偷懒不拍照了,拿了前面的图片充一下
    14.png

    11、下面来仔细分析一下CW中,PE生成的外部中断文件结构,这个还是比较有意义的!
    (1)在下图位置,对应的中断向量表可以找到PTA的中断向量。
    7.png

    (2)使用追踪,可以看到相应的外部中断服务程序,请标志位,调用中断发生事件
    8.png

    (3)再次追踪,可以看到,外部中断里调用了Key_EInt_OnInterrupt函数。
    9.png

    (4)而Key_EInt_OnInterrupt函数正式我们刚才控制LED取反的函数位置。
    10.png
    (5)通过上面分析PE生成的CW代码,可以看出自动生成的代码还是比较清晰明了的!

    上面便是GPIO的外部中断的开发笔记,希望大家交流。







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

    评分

    参与人数 1NXP金币 +20 收起 理由
    小七 + 20 赞一个!

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-11-26 08:48:18 | 显示全部楼层
    棒棒的            
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2015-11-26 09:33:40 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16770
    最后登录
    1970-1-1
     楼主| 发表于 2015-11-26 21:56:54 | 显示全部楼层

    多谢支持
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40

    主题

    500

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1089
    最后登录
    2025-1-13
    发表于 2016-3-9 11:06:42 | 显示全部楼层
    不知道楼主,用寄存器操作中断函数没有?在芯片手册上我没有找到中断设置寄存器?
    log.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    70

    帖子

    0

    注册会员

    Rank: 2

    积分
    141
    最后登录
    2016-3-17
    发表于 2016-3-10 18:40:21 | 显示全部楼层
    学习了,辛苦作者了,写的这么详细,谢谢分享!
    logo.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-9 20:23 , Processed in 0.109610 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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