通用I/O的中断

cc2530的CPU有18个中断源,每个中断都可以分别使能和控制。

18个中断源的优先级

18个中断源分为6个组,每一组有3个中断源,中断优先级可以通过配置相应寄存器来实现

中断源的分组

编号 中断

  • IPG0 REFRR RF DMA
  • IPG1 ADC T1 P2INT
  • IPG2 URX0 T2 UTX0
  • IPG3 URX1 T3 UTX1
  • IPG4 ENC T4 P1INT
  • IPG5 ST P0INT WDT

中断优先级是由寄存器IP0和IP1来实现的,IP1_X IP0_x表示的数字约大,优先级越高

  • IP1_X IP0_X 优先级
  • 0 0 0(优先级别最低)
  • 0 1 1
  • 1 0 2
  • 1 1 3(优先级别最高)

IP1_X与IP0_X中的X代表了中断优先级组的组名,即IPG0~IPG5,设置优先级时3的优先级最高,0的优先级最低

例:

//设置IPG3的优先级别最高
IP1_IPG3=1;
IP0_IPG3=1;
//设置IPG0的优先级别最低
IP1_IPG1=0;
IP1_IPG0=0

如果在同一个组中的优先级同时发生,会有一个先后,决定这个先后顺序的就是中断轮流探测顺序。(书中有一个表,先不放了,在书上的P.59)

I/O中断

通用I/O设置为输入后,可以用于产生中断,并且通用I/O中断还可以设置其触发方式,在设置中断时需要将发生中断引脚的使能位置置为1,端口使能位设置寄存器:

  • P0端口中断使能位——IEN1.P0IE
  • P1端口中断使能位——IEN2.P1IE
  • p2端口中断使能位——IEN2.P2IE
这里一定要注意,IENx寄存器中断使能是对整个端口进行使能,不是对某一个引脚。

中断使能寄存器IEN1控制P0端口,定时器1~4和DMA中断的使能和禁止,如果需要某一位中断使能,只需将IEN1中对应的位设置为1即可。

  • 中断使能寄存器IEN1
  • 位 名称 复位 描述
  • 7:6 --- 00 保留
  • 5 P0IE 0 端口0中断使能
  • 4 T4IE 0 定时器4中断使能
  • 3 T3IE 0 定时器3中断使能
  • 2 T2IE 0 定时器2中断使能
  • 1 T1IE 0 定时器1中断使能
  • 0 DMAIE 0 DMA中断使能

IEN1中断设置

//设置P0端口中断使能
IEN1 |= 0x20;
  • 中断使能寄存器IEN2
  • 位 名称 复位 描述
  • 7:6 --- 00 保留
  • 5 WDTIE 0 看门狗定时器中断使能
  • 4 P1IE 0 端口1中断使能
  • 3 UTX1IE 0 USART1 TX中断使能
  • 2 UTX0IE 0 USART2 TX中断使能
  • 1 P2IE 0 端口2中断使能
  • 0 RFIE 0 RF一般中断使能

IEN2中断设置

//设置P1和P2端口中断使能
IEN2|=0x12;

IEN1使能寄存器可以控制P0端口中断使能,IEN2中断寄存器可以控制P1端口和P2端口中断使能。

控制某一引脚的中断使能PxIEN(x=0,1,2)
//设置P0_5中断使能
P0IEN |= 0x20; //设置P0端口中断使能
IEN1 |= 0x20;
控制中断是由上升沿触发还是由下降沿触发PICTL
  • 中断触发方式寄存器PICTL
  • 位 名称 复位 描述
  • 7 PADSC 00 控制I/O引脚在输出模式下的驱动能力
  • 6:4 --- 000 保留
  • 3 P2ICON 0 端口2的P2.4P2.0输入模式下的中断配置,该为位所有端口2的输入P2.4P2.0选择中断请求条件 0为上升沿
  • 2 P1ICONH 0 端口1的P1.7P1.4输入模式下的中断配置,该位为所有端口1的输入P1.7P1.4选择中断请求条件 0为上升沿
  • 1 P0ECONL 0 端口1的P1.4P1.0输入模式下的中断配置,该位为所有端口1的输入P1.4P0.0选择中断请求条件 0为上升沿
  • 0 P0ICON 0 端口0的P0.7P0.0输入模式下的中断配置,该位为所有端口0的输入P0.7P0.0选择中断请求条件 0为上升沿
//设置P0_5下降沿触发中断
PICTL |= 0x01;

总中断EA

//打开总中断
EA=1;

中断标志寄存器 PxIFG(x=0,1,2)

I/O中断发生后,中断标志寄存器相应位会自动置为1

//判断端口P0是否发生中断
if(P0IFG>0)
{ }
//判断P0_5是否发生中断
if(P0IFG&0x20)
{
; }

设置中断要从小的向大的方向设置,先从引脚,再到端口,再到总中断

CC2530中断处理函数的编写方法

#pragma vector=<中断向量>
__interrupt void <函数名称>(void) //这里的开头是两个下划线
{ //函数体 }

cc2530的I/O中断的更多相关文章

  1. 【CC2530入门教程-03】CC2530的中断系统及外部中断应用

    第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及 ...

  2. CC2530外部中断

    一.中断基础概念  内核与外设之间的主要交互方式有两种:轮询和中断.中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转 ...

  3. 【CC2530入门教程-04】CC2530的定时/计数器原理与应用

    第4课  CC2530的定时/计数器原理与应用 广东职业技术学院  欧浩源 一.定时/技术器的基本原理 定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提 ...

  4. CC2530定时器1的模模式中断

    CC2530定时器1的模模式中断void timer1SInit(void){ T1CCTL0 = 0; T1CTL &= ~0x0F; //clear register T1CTL |= 0 ...

  5. CC2530定时器3的输入捕获中断

    CC2530定时器3的输入捕获中断 使用的是tim3的通道1的输入捕获P1_7口.//GPIO配置成复用功能,同时设置P1_7为输入.void irCaptureGpioInit(void){ P1S ...

  6. cc2530的第三次实验,按键中断控制流水灯

    cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...

  7. CC2530 外部中断 提醒

    #include "ioCC2530.h" #define uchar unsigned char #define led1    P1_0 #define led2    P1_ ...

  8. [ZigBee] 9、ZigBee之AD剖析——AD采集CC2530温度串口显示

    1.ADC 简介 ADC 支持多达14 位的模拟数字转换,具有多达12 位有效数字位.它包括一个模拟多路转换器,具有多达8 个各自可配置的通道:以及一个参考电压发生器.转换结果通过DMA 写入存储器. ...

  9. [ZigBee] 4、ZigBee基础实验——中断

    前言 上一篇介绍了CC2530的IO的基础知识,并用LED的控制来展示如何配置并控制GPIO的输出,用KEY状态的读取实验来展示如何读取GPIO的状态.从上一节的KEY状态读取的代码看出是采用轮训方式 ...

随机推荐

  1. FPGA+ADV7511实现HDMI显示

    一.前言 目前FPGA成为了视频图像实时处理的主要平台.显示作为图像应用设备的必要功能,对整体系统处理效果非常关键.HDMI是现阶段主流的显示接口,本文基于ADV7511芯片的HDMI显示系统,讲述H ...

  2. 使用预编译库PREBUILT LIBRARY官方说明

    使用预编译库 NDK 支持使用预编译库(同时支持静态库和共享库).此功能有以下两个主要用例: 向第三方 NDK 开发者分发您自己的库(而不分发您的源代码). 使用您自己的库的预编译版本来提升编译速度. ...

  3. 物联网通讯协议:MQTT,CoAP,NB-IOT,RFID,BLUETOOTH,NFC

    一.按网络四层协议分类: NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持) 而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器 ...

  4. windows10结束进程

    .net winfrom 程序关于结束进程触发事件 在任务管理器中有进程.详细信息栏 在进程栏对应用程序结束任务,会触发应用程序窗体的FormClosed事件 在详细信息栏对应用程序结束任务,不会触发 ...

  5. 端口排查步骤-7680端口分析-Dosvc服务

    出现大量7680端口的内网连接,百度未找到端口信息,需证明为系统服务,否则为蠕虫 1. 确认端口对应进程PID netstat -ano 7680端口对应pid:6128 2. 查找pid对应进程 t ...

  6. C#生成唯一不重复订单号帮助类

    1.使用场景 通常,在做一些表单的功能时,需要生成唯一不重复的订单单号,本文提供的帮助类可以适合大多数场景的单号生成使用,拿来即用,方便快捷无重复.而且,在高并发的情况下也是可以使用的. 之前看到有人 ...

  7. C# 进程 与 线程

    C#多线程和线程池1.0.线程的和进程的关系以及优缺点windows系统是一个多线程的操作系统.一个程序至少有一个进程,一个进程至少有一个线程.进程是线程的容器,一个C#客户端程序开始于一个单独的线程 ...

  8. Java自学-接口与继承 Object类

    Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package ...

  9. Node.js 连接 MySQL数据库

    安装指令:npm install mysql var mysql = require("mysql");console.log(mysql); // 创建链接对象 var conn ...

  10. Cheat Engine 基本用法

    打开游戏 当前血量2620 打开Cheat Engine 扫描2620 掉点血 再次扫描2600 此时,会根据第一次扫描结果,再次扫描 扫描成功 将数据放到修改区,点击箭头 修改数据 双击Value进 ...