外部中断实验是使用两个按键来翻转LED状态,但这里两个按键,一是做键盘用,二是产生中断触发信号。

实验共用到P1、P1/P0DIR、P1/P0SEL、P1/P0INP、PICTL、IEN1和P0IFG几个个寄存器。其中前几个的作用前面的文章里应经介绍过了,这里就不再重复说明了。这里主要是讲一下后几个寄存器的作用。其中PICTL为P口中断控制寄存器;P0IFG为P1口中断标志寄存器;IEN1为中断使能寄存器1。

这个实验是到目前为止我改动最大的一个实验了,我想主要还是这个基础实验以前不是跑在2430上的原因吧,在无限龙的这个开发板上的按键管脚并不是P1_2和P1_3,所以要把管脚好好的改动一下才可以。这个试验需要用到P1来控制LED而用P0来控制按键。下面来看一下改过的I/O及LED初始化的设置:

void Init_IO_AND_LED(void)
    {
      //LED管脚设置

P1DIR = 0X03; //0为输入(默认),1为输出
      RLED = 1;
      led2 = 1;

//按键管脚设置
      P0SEL &= ~0X30; //选择P0_4和P0_5作为外部中断
      P0DIR &= ~0X30; //输入方向
      P0INP |= 0x30;  //下拉

//按键中断设置
      PICTL |= 0X10;   //P0(4-7)位中断打开
      EA = 1;          //打开全局中断
      IEN1 |= 0X20;   // 打开P0中断

P0IFG |= 0x00;   //设置P0中断标志位,发生中断时相应位置1
    }

具体的管脚设置说明请找到相应的说明书查找,在这我只想说明的就是2430外部中断的设置问题,如果要使用2430的中断功能的话,那么应当执行下面的步骤:

Step1:设置IEN0中的EAL位(即EA)为1;

Step2:设置寄存器IEN0、IEN1和IEN2中相应的各中断使能位为1;

Step3:如果有,则设置特殊功能寄存器中对应的各中断使能位为1;

Step4:在中断对应的向量地址上,运行该中断的服务程序(ISR)。

在这个实验里我们的设置中断部分就是按照这样的顺序设置的,大家可以留意一下上面的橙色部分的程序段。下面我们来看一下ISR的部分:

#pragma vector = P0INT_VECTOR
    __interrupt void P0_ISR(void)
   {
        if(P0IFG>0)         //按键中断
        {
           P0IFG = 0;
           RLED = !RLED;
        }
        P0IFG = 0;          //清中断标志
    }

注意红色的部分是改动的,因为用的按键是P0_4和P0_5,所以中断向量是用的P0口的中断向量。整个试验的基本原理在这个中断向量的ISR中就可以清晰可见了。首先的按键触动中断,然后相应的中断标志位置1

导致P0IFG的值发生变化(不再是00了),这样一旦发现有中断产生就改变小灯的状态。具体的试验结果就是一按按键,小灯的状态变化(不过说真的,这个中断的反应有点灵敏,按得时间长就认为是第二次中断了感觉,嘿嘿

转载于:https://www.cnblogs.com/LakeFollow/archive/2012/07/31/2616574.html

CC2430基础——外部中断分析相关推荐

  1. STM32基础-外部中断与优先级

    一,中断引脚 STM32F407有23个外部中断检测器,芯片多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事 ...

  2. 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现

    目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...

  3. CC2530基础实验:(2)外部中断控制LED亮灭

    目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.中断相关的基础概念 2.CC2530 的中断系统 3.CC2530 的中断处理函数编写方法 4.CC2530 的外部中断 三.源码分析 前 ...

  4. 带你了解什么是中断以及外部中断案例分析

    了解什么是中断 好,今天我来给大家讲一下我们什么是中断以及如何去运用外部中断源. 首先,我们学习单片机的时候,一定听说过学会中断才是单片机的入门.因为中断系统大大提高了单片机对随机事件的实时处理能力, ...

  5. ESP32 外部中断原理分析 GPIO外部中断实战

    ESP32 外部中断原理分析 & GPIO外部中断实战 阅读建议:   有一定Cortex-m架构.Xtensa® 32-bit LX6 架构知识基础. 软件环境 VSCODE-ESP32-I ...

  6. STM32+Cube MX使用MPU6050 DMP时,在外部中断中调用read_dmp函数发生系统卡死问题的根本原因分析

    系统环境 硬件: MCU:STM32F405RGT6 IMU:MPU6050 软件: 开发环境:KEIL MDK-ARM uVision5 MPU6050使用DMP 复现步骤 程序中MPU6050 D ...

  7. Zigbee之旅(九):几个重要的CC2430基础实验——系统睡眠及中断唤醒

    Zigbee之旅(九):几个重要的CC2430基础实验--系统睡眠及中断唤醒 一.承上启下 这一篇,我们来讨论一下CC2430的睡眠功能及唤醒方法.在实际运用中的CC2430节点一般是靠电池来供电,因 ...

  8. STM32 基础系列教程 3 – 外部中断

    前言 学习stm32 GPIO 的外部中断使用,用中断模式实现简单的按键输入功能,用按实现基础实验二中的LED亮灭切换功能! 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的 ...

  9. LPC2124单片机的基础操作——GPIO、外部中断、定时器和串口

    LPC2124单片机的基础操作--GPIO.外部中断.定时器和串口 LPC2124的简介 LPC2124之GPIO GPIO简介 编程习惯 代码编写 LPC2124之EINT(外部中断) EINT简介 ...

  10. STM32基础之中断--外部中断

    EXTI简介 EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 19个中断/事件线.每个中断/事件线都对应有一个边沿检测器,可以 ...

最新文章

  1. 拦截器 java_在Java后端如何添加拦截器
  2. IE浏览器打不开解决的方法
  3. ES6新增数据类型符号(1):普通符号
  4. leetcode 18. 四数之和(双指针)
  5. 百度、WordPress纷纷宣布停用React
  6. Yearn已完成对于6666枚YFI的增发
  7. php加入队列失败,Laravel队列使用中踩的坑,不报错但是队列一直再重试
  8. 进程池和线程池,协程,IO多路复用
  9. U盘美化(更换U盘logo和页面背景软件)
  10. ECSHOP用户评论
  11. SPSS因子分析案例
  12. 换机潮爆发,5G手机+5G超级SIM卡成趋势
  13. 简单的选课系统(6)——选课界面和管理员界面
  14. open drain push pull 上拉电阻理解
  15. https网站安全证书提示已过期怎么办?
  16. Taro引入阿里图标
  17. es统计高亮命中次数
  18. shell脚本之双重循环
  19. NEM Venture 戰略投資 Cyclebit,開啟 Cyclebit Token 接受在線和店內加密貨幣的公司
  20. 新版标准日本语中级_第十六课

热门文章

  1. 图像处理基础:特征金字塔
  2. IOS pushVIewController失败
  3. WEB服务器安全设置,有效防护网站攻击70%
  4. 正三角形二面体群表示为二阶矩阵形式
  5. python+selenium,打开浏览器时报selenium.common.exceptions.WebDriverException: Message: 'chromedriver' execut
  6. 非谓语动词: 不定式, 动名词, 现在分词, 过去分词
  7. python研究背景与意义_课题研究的背景和意义
  8. 程序员秃顶算工伤吗?
  9. 【基于机器学习/深度学习的睡眠信号分类】主题必读论文推荐
  10. 高效的睡眠——睡眠革命