通用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. 干货|Dubbo社区开发者日经验分享

    Hello,各位小伙伴大家好,我是小栈君,昨天也就是2019年10月26日,有幸在成都参加了由阿里举办的"Dubbo社区开发者日". 本次活动汇聚了各方面的大神欢聚一堂,主要是对现 ...

  2. .Net Core3.0使用gRPC 和IdentityServer4

    gRPC是什么gRPC是可以在任何环境中运行的现代开源高性能RPC框架.它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证.它也适用于分布式计 ...

  3. sqlserver apply

    IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tb go CREATE TABLE tb(name VARCHAR(10),value VARCHAR(200)) ...

  4. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...

  5. java之maven之初识maven

    1.maven是一个项目管理工具. 包括项目创建.资源管理.项目运行.项目发布等功能. 2.为什么使用 maven? a. jar 依赖管理(升级.降级)等 b. 项目之间依赖管理 c. 资源文件管理 ...

  6. Mycat分布式数据库架构解决方案--Mycat实现数据库分表

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 准备工 ...

  7. vue组件5 组件和v-for指令

    使用v-for遍历一个数组的时候,并且给定的数组变化时vue不会重复生成所有的元素,而是智能的找到需要更改的元素,并只改变这些元素 key属性可以告诉vue数组中的每个元素都应该与页面上的哪个元素相关 ...

  8. css之纯css实现流程导航效果

    :::tip 使用纯css线上 流程导航效果.     本文统一采取 flex 布局 ,你也可以采用其他布局实现,核心原理不变 ::: ## 方法一 利用裁剪  该方法IE下不支持 利用裁剪 clip ...

  9. React 的setState 理解

    我们都知道在React中,setState() 方法是用来改变组件状态的,在项目中也一直用,也没有出现什么问题(使用方法太简单了),但今天看了一篇文章,提到了setState 使用时的两个注意点,加深 ...

  10. Android源码分析(三)-----系统框架设计思想

    一 : 术在内而道在外 Android系统的精髓在源码之外,而不在源码之内,代码只是一种实现人类思想的工具,仅此而已...... 近来发现很多关于Android文章都是以源码的方向入手分析Androi ...