查看: 8923|回复: 25

[原创] 【10分钟】迅速开发K64【外部中断】

[复制链接]
  • TA的每日心情
    开心
    2016-12-23 10:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    257

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1061
    最后登录
    2018-5-13
    发表于 2015-10-31 19:06:36 | 显示全部楼层 |阅读模式
    本帖最后由 努力的人 于 2015-10-31 19:08 编辑

    首先贴上之前的帖子,这次是在这个基础上写的。https://www.nxpic.org.cn/module/forum/thread-602344-1-1.html
    第二发  外部中断EXTI
    一、实验思路
    外部中断就是根据外部输入信号(可以是上升沿、下降沿或者上升-下降沿),当微处理器引脚采集到这样的信号就触发中断,执行中断中的程序。本实验通过K64的SW2按键的下降沿作为外部中断信号,只要检测到这个信号,就翻转PTB22脚电平,诗RGB灯变红或者熄灭。
    二、硬件电路分析
    用到的外设:
    1. SW2按键
    1.JPG
    2. RGB三色灯
    2.JPG
    三、软件程序
    1.工程建立
    这次和上次相比有了改进,新建了一个Hardware文件夹,建立了MK_GPIO.c和MK_EXTI.c两个文件用来存放咱们编写的程序
    3.JPG
    2.程序分析
    1) MK_GPIO.c
    1. #include "gpio.h"

    2. /* GPIO 工作模式 */
    3. /*
    4. *         @arg kGPIO_Mode_IFT :悬空输入
    5. *         @arg kGPIO_Mode_IPD :下拉输入
    6. *         @arg kGPIO_Mode_IPU :上拉输入
    7. *         @arg kGPIO_Mode_OOD :开漏输出 如果不清楚这2种输出的区别请 百度..
    8. *         @arg kGPIO_Mode_OPP :推挽输出
    9. */
    10. void GPIO_Initial()
    11. {
    12.         GPIO_QuickInit(HW_GPIOB, 22, kGPIO_Mode_OPP);
    13.         GPIO_QuickInit(HW_GPIOB, 21, kGPIO_Mode_OPP);
    14.         GPIO_QuickInit(HW_GPIOE, 26, kGPIO_Mode_OPP);
    15.         
    16.         GPIO_QuickInit(HW_GPIOC, 6, kGPIO_Mode_IPU);//按键PTC6
    17.         
    18.         GPIO_WriteBit(HW_GPIOB, 22, 1);//RED
    19.         GPIO_WriteBit(HW_GPIOB, 21, 1);//BLUE
    20.         GPIO_WriteBit(HW_GPIOE, 26, 1);//GREEN
    21. }
    复制代码
    这里把PTC6设成了上拉输入
    GPIO_QuickInit(HW_GPIOC, 6, kGPIO_Mode_IPU);//按键PTC6
    其他的和之前的一样。
    2)MK_EXTI.c
    1. #include "gpio.h"


    2. /* 回调函数中的 array 的32位每一位代表一个引脚,1为 该脚中断被触发 0代表该脚中断未触发 */
    3. static void GPIO_ISR(uint32_t array)
    4. {
    5.     GPIO_ITDMAConfig(HW_GPIOC, 6, kGPIO_IT_FallingEdge, false);
    6.     //printf("KEY:0x%X\r\n", array);
    7.     if(array & (1 << 6)) /*对应的按键中断 翻转对应的LED电平 */
    8.     {
    9.         GPIO_ToggleBit(HW_GPIOB, 22);
    10.     }
    11.     GPIO_ITDMAConfig(HW_GPIOC, 6, kGPIO_IT_FallingEdge, true);
    12. }

    13. void EXTI_Initial()
    14. {
    15.         /* 设置GPIO外部引脚中断回调函数 */
    16.     GPIO_CallbackInstall(HW_GPIOC, GPIO_ISR);
    17.     /* 打开PTE26引脚的中断 上升沿触发 */
    18.     GPIO_ITDMAConfig(HW_GPIOC, 6, kGPIO_IT_FallingEdge, true);
    19. }
    复制代码
    说明:
    void GPIO_CallbackInstall (uint32_t instance,
    GPIO_CallBackType AppCBFun
    )
    instanceGPIO模块中断入口号
    • HW_GPIOA 芯片的PORTA端口中断入口
    • HW_GPIOB 芯片的PORTB端口中断入口
    • HW_GPIOC 芯片的PORTC端口中断入口
    • HW_GPIOD 芯片的PORTD端口中断入口
    • HW_GPIOE 芯片的PORTE端口中断入口
    AppCBFun回调函数指针入口
    这个回调函数使得中断处理函数必须得写在他的前面。

    3)main.c
    1. #include "gpio.h"
    2. #include "common.h"
    3. #include "MK_GPIO.h"
    4. #include "MK_EXTI.h"
    5. /* CH Kinetis固件库 V2.50 版本 */
    6. /* 修改主频 请修改 CMSIS标准文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */

    7. int main(void)
    8. {
    9.     /* 初始化Delay */
    10.     DelayInit();

    11.     GPIO_Initial();
    12.         EXTI_Initial();
    13.     while(1)
    14.     {
    15. //        /* 翻转引脚电平 原来是低变成高 原来是高变成低 */
    16. //        GPIO_ToggleBit(HW_GPIOE, 6);
    17.         /* 另外一种方法 使用位带操作 */
    18.         //PEout(6) = !PEout(6);
    19.         //DelayMs(500);
    20.                
    21.     }
    22. }
    复制代码
    四、实验结果
    按SW2,每一个下降沿,PB22电平翻转

    评分

    参与人数 1NXP金币 +10 收起 理由
    oo_ee + 10

    查看全部评分

    回复

    使用道具 举报

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

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16784
    最后登录
    1970-1-1
    发表于 2015-10-31 23:00:51 | 显示全部楼层
    多谢分享!!
    回复

    使用道具 举报

    该用户从未签到

    20

    主题

    331

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1207
    最后登录
    2017-2-27
    发表于 2015-11-1 10:15:47 | 显示全部楼层
    谢谢分享      
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2015-11-1 10:54:41 | 显示全部楼层
    谢谢分享      null - 副本 - 副本 - 副本.png null - 副本 - 副本 (2).png null - 副本 - 副本 (3).png null - 副本 - 副本.png null - 副本 (2) - 副本.png null - 副本 (2).png null - 副本 (3).png null - 副本 (4).png null - 副本.png null.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    264

    帖子

    0

    高级会员

    Rank: 4

    积分
    694
    最后登录
    2024-9-22
    发表于 2015-11-1 12:34:54 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-1 12:49:10 | 显示全部楼层
    谢谢分享,很不错
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-4-27 10:34
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    507

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1450
    最后登录
    2020-8-3
    发表于 2015-11-1 15:13:30 | 显示全部楼层
    不错,其实超核的库我也用很久了,M0+也用过,M4F现在也在用!编译出来的烧录文件大小比ksdk编译小多了,用起来也很方便!
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-23 10:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    257

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1061
    最后登录
    2018-5-13
     楼主| 发表于 2015-11-1 16:22:53 | 显示全部楼层

    互相学习,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-23 10:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    257

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1061
    最后登录
    2018-5-13
     楼主| 发表于 2015-11-1 16:25:07 | 显示全部楼层
    流-423774 发表于 2015-11-1 15:13
    不错,其实超核的库我也用很久了,M0+也用过,M4F现在也在用!编译出来的烧录文件大小比ksdk编译小多了,用 ...

    谢谢,还得多多向版主学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-23 10:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    257

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1061
    最后登录
    2018-5-13
     楼主| 发表于 2015-11-1 16:25:28 | 显示全部楼层
    nothingness 发表于 2015-11-1 12:49
    谢谢分享,很不错

    互相学习
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-15 02:13 , Processed in 0.107828 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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