注册 登录
查看: 923|回复: 10

K60外部中断

[复制链接]
发表于 2014-11-18 21:46:05 | 显示全部楼层 |阅读模式
本帖最后由 板正的 于 2014-11-19 17:21 编辑

想实现的功能是:用短路帽将PTD6和PTD7短接,设置PTD6为输出高电平每50ms翻转一次,设置PTD7为上升沿触发中断,中断服务函数执行的是让PTA14输出高电平。程序下载到单片机后没反应(初步判断是没有进入中断)。请大家帮忙看看问题出在哪,谢谢

  1. void main()
  2. {
  3.     gpio_init(PTA14,GPO,1);                                 //初始化 PTA14 管脚为输出
  4.     gpio_init(PTD6,GPO,1);                                  //初始化 PTD6  管脚为输出

  5.     port_init (PTD7, IRQ_RISING | PF | ALT1 | PULLUP );    //初始化 PTA8 管脚,上升沿触发中断,带无源滤波器,复用功能为GPIO ,上拉电阻
  6.     while(1)
  7.     {
  8.       GPIO_TURN(PTD6);//翻转PTD6引脚的输出状态
  9.       DELAY_MS(50);
  10.     }
  11. }


  12. /*!
  13. *  @brief      PORTD端口中断服务函数
  14. *  @since      v5.0
  15. */
  16. void PORTD_IRQHandler(void)
  17. {
  18.     uint8  n = 7;    //引脚号
  19.     n = 7;
  20.     if(PORTD_ISFR & (1 << n))           //PTD7 触发中断
  21.     {
  22.         PORTD_ISFR  = (1 << n);        //写1清中断标志位

  23.         /*  以下为用户任务  */
  24.         GPIO_TURN(PTA14);//翻转PTA14引脚的输出状态
  25.         /*  以上为用户任务  */
  26.     }
  27. }


修改后可以用的代码
  1. void main()
  2. {
  3.     gpio_init(PTA14,GPO,1);
  4.     gpio_init(PTD6,GPO,1);
  5.     port_init (PTD7, IRQ_RISING | PF | ALT1 | PULLUP );    //初始化 PTD7 管脚,上升沿触发中断,带无源滤波器,复用功能为GPIO ,上拉电阻
  6.     <font color="#0000ff">set_vector_handler(PORTD_VECTORn ,PORTD_IRQHandler);    //设置PORTE的中断复位函数为 PORTE_IRQHandler</font><span style="color: rgb(0, 0, 255);">(这两句是不小心删掉了,所以没有进入中断)</span><font color="#0000ff">
  7.     enable_irq (PORTD_IRQn);                                //使能PORTE中断(这两句是不小心删掉了,所以没有进入中断)</font>

  8.     while(1)
  9.     {
  10.         GPIO_TURN(PTD6);//翻转PTD6引脚的输出状态
  11.         DELAY_MS(50);   
  12.     }
  13. }


  14. /*!
  15. *  @brief      PORTD端口中断服务函数
  16. *  @since      v5.0
  17. */
  18. void PORTD_IRQHandler(void)
  19. {


  20.     uint8  n = 0;    //引脚号
  21.     n = 7;
  22.     if(PORTD_ISFR & (1 << n))           //PTD7 触发中断
  23.     {
  24.         PORTD_ISFR  = (1 << n);        //写1清中断标志位

  25.         /*  以下为用户任务  */

  26.         GPIO_TURN(PTA14);//翻转PTA14引脚的输出状态

  27.         /*  以上为用户任务  */
  28.     }
  29. }


回复

使用道具 举报

发表于 2014-11-18 22:06:00 | 显示全部楼层
没配置中断函数啊 ,也没开中断
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-19 17:05:04 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-18 22:06
没配置中断函数啊 ,也没开中断

在这个PORT_KEY例程中也没有关于开中断的语句啊
回复 支持 反对

使用道具 举报

发表于 2014-11-19 17:06:17 | 显示全部楼层
板正的 发表于 2014-11-19 17:05
在这个PORT_KEY例程中也没有关于开中断的语句啊

有啊,你是哪里看到没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-19 17:17:53 | 显示全部楼层
yqcgnnhxkx 发表于 2014-11-19 17:06
有啊,你是哪里看到没有?

找到了,例程中的
  1.     set_vector_handler(PORTD_VECTORn ,PORTD_IRQHandler);    //设置PORTE的中断复位函数为 PORTE_IRQHandler
  2.     enable_irq (PORTD_IRQn);                                //使能PORTE中断
这两句让我删掉了,加上之后就可以了,谢谢提醒。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-19 17:18:32 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-18 22:06
没配置中断函数啊 ,也没开中断

恩恩  对的,有两句话让我删掉了,现在可以了  谢谢啦
回复 支持 反对

使用道具 举报

发表于 2014-11-19 23:54:53 | 显示全部楼层
板正的 发表于 2014-11-19 17:17
找到了,例程中的这两句让我删掉了,加上之后就可以了,谢谢提醒。

嘿嘿,做事情不够认真哦,山外哥写的例程,居然删掉了这么重要的代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-20 12:17:43 | 显示全部楼层
仰逸致 发表于 2014-11-19 23:54
嘿嘿,做事情不够认真哦,山外哥写的例程,居然删掉了这么重要的代码。

恩恩  粗心了  一定改正
回复 支持 反对

使用道具 举报

发表于 2015-2-2 11:49:25 | 显示全部楼层
本帖最后由 cyyvyvyvy 于 2015-2-2 11:57 编辑
山外メ雲ジ 发表于 2014-11-18 22:06
没配置中断函数啊 ,也没开中断

这一句有没有把ptd7配置为输入? port_init (PTD7, IRQ_RISING | PF | ALT1 | PULLUP );    //初始化 PTD7 管脚,上升沿触发中断,带无源滤波器,复用功能为GPIO ,上拉电阻
回复 支持 反对

使用道具 举报

发表于 2015-2-2 14:12:08 | 显示全部楼层
cyyvyvyvy 发表于 2015-2-2 11:49
这一句有没有把ptd7配置为输入? port_init (PTD7, IRQ_RISING | PF | ALT1 | PULLUP );    //初始化 PTD ...

上电默认是输入。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2015-2-2 21:39:51 | 显示全部楼层

能不能给个你的qq,摄像头采集有点问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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