Cortex-M3处理器的外部中断程序自学

发布者:老卫最新更新时间:2018-03-09 来源: eefocus关键字:Cortex-M3  处理器  外部中断 手机看文章 扫描二维码
随时随地手机看文章

    无论是哪款单片机应该都有对应的中断的功能,中断在嵌入式系统的地位毋庸置疑。LPC1768微处理器包括4个外部中断,分别是EINT0、EINT1、EINT2、EINT3对应的引脚分别是P2.10~P2.13,这几个引脚也可以作为通用IO口使用。名个外部中断可以设置成低电平/高电平或上升沿/下降沿有效,它们还有一个功能就是可用于将处理器从睡眠、深度睡眠或掉电模式中唤醒。涉及到外部中断的寄存器主要有以下几个:

    寄存器名称

描述

功能

    默认值

    EXTINT

    外部中断标志寄存器

    设置或查看中断标志

    0x00

    EXTMODE

    外部中断模式寄存器

    设置电平触发或边沿触发

    0x00

    EXTPOLAR

    外部中断极性寄存器

    设置为高/低电平或上升/下降沿触发

    0x00

    PINSEL4

    引脚功能选择寄存器

    选择P2引脚的功能

    0x00

    因为实验选用中断方式而非查询方式来测试中断,因中P2.10口接有一个按键,所以就用这个按键来作个简单的中断实验,由于是选用的是下降沿触发,所以还涉及一个寄存器:IO2IntenF这个寄存器的功能是使能P2口的下降沿中断功能。因为只是实验,所以电路很简单,还是使用的前两次用的电路图,如下所示:

图1 LED指示电路

图1 LED指示电路

    还有一个电路,其实就是在P2.10口上接了一个轻工触按键,以触发外部中断,这里就不上图了。好了,由于实验内容简单,下面给出中断程序,关于主程序有兴趣的话可以参看附件中的,里面有完整的Real MDK4.10建立的工程工件:

  /*********************************************************************************

      文件名称:extint.c

      功    能: LPC1768的外部中断函数

      编译环境: MDKV4.12

      时    钟: 外部12MHz

      日    期: 11/08/18

      作    者: 懒猫爱飞

      备    注:NULL

      ---------------------------------------------------------------------------------

      修改内容:NULL

      修改日期:XXXX年xx月xx日      xx时xx分

      修改人员:xxx xxx xxx

      **********************************************************************************/

      #include "includes.h"

      volatile uint32_t eint0_counter = 8;  // 初始化时第一个灯亮

  /********************************************************************************

      * 函数名称:void EINT0_IRQHandler (void)

      * 函数功能: 外部中断0函数入口

      * 入口参数: 无

      * 出口参数: 无

      * 备    注:无

      *******************************************************************************/

     void EINT0_IRQHandler (void)

      {

      SC -> EXTINT = EINT0;                      /* 清中断*/

 

      switch(eint0_counter%8)

      {

      case 0: LED1Neg();    /* LED1状态取反*/

      break;

      case 1: Led2Neg();        /* LED2状态取反*/

      break;

      case 2: Led3Neg();    /* LED3状态取反*/

      break;

      case 3: Led4Neg();    /* LED4状态取反*/

      break;

      case 4: Led5Neg();    /* LED5状态取反*/

      break;

      case 5: Led6Neg();    /* LED6状态取反*/

      break;

      case 6: Led7Neg();    /* LED7状态取反*/

      break;

      case 7: Led8Neg();    /* LED8状态取反*/

      break;

      default:break;

      }

      eint0_counter++;                      /* 计数值加1 */

      }

      /********************************************************************************

      * 函数名称:uint32_t EINTInit( void )

      * 函数功能: 外部中断0初始化函数

      * 入口参数: 无

      * 出口参数: 返回TURE或FALSE

      * 备    注:如果是返回false则说明中断入口函数没有在中断向量表中建立

      *******************************************************************************/

      uint32_t EINTInit( void )

      {

      PINCON -> PINSEL4 = 0x00100000;          /* 将P2.10脚设置为EINT0即第二功能*/

      GPIOINT -> IO2IntEnF = 0x200;        /* 设置为下降沿触发*/

      SC -> EXTMODE = EINT0_EDGE;      /* 外部中断模式选择为边沿触发*/

      SC -> EXTPOLAR = 0;          /* 外部中断1极性设置,此处选默认的低电平或下降沿*/

      NVIC_EnableIRQ(EINT0_IRQn);      /* 使能外部中断0 */

      return( TRUE );

      }

    这个程序只有两个函数,一个是中断处理函数,没有什么不好理解,在这里不总结,关于中断初始化函数,前面都是设置相关的中断寄存器的,关于寄存器是怎么设置的可以看一下LPC1768的手册,上面都有详细的说明,在这里不再码字总结。关于void NVIC_EnableIRQ(IRQn_Type IRQn)这个函数,它在core_cm3.h中有定义,其实就是设置中断使能寄存器ISER,从名字就可以看出来了,它的功能就是使能中断。这次外部中断没有用查询的方式,查询方式的原理就是设置好中断,使能中断,然后主程序一直查询中断位是否有中断,然后再执行相应的措施。相对来说查询方式比较消耗软件系统资源,但程序也不是太难,关于其它几个外部中断与此类似。


关键字:Cortex-M3  处理器  外部中断 引用地址:Cortex-M3处理器的外部中断程序自学

上一篇:Cortex-M3处理器按键实验程序自学
下一篇:ARM程序优化及其在嵌入式TCP/IP协议实现中的应用介绍

推荐阅读最新更新时间:2024-03-16 15:56

ARM与晨星半导体再度合作授权ARM Cortex-A9处理器
2012年4月24日,中国上海——ARM®今日宣布,领先的显示器与数字家庭解决方案半导体供货商晨星半导体(MStar)在一系列ARM系统IP授权的基础上,又取得了ARM Cortex™-A9 MPCore™ 处理器和ARM926EJ-S™ 处理器授权,用于开发智能电视、机顶盒与智能手机等相关应用。在此之前,晨星半导体采用ARM Mali™-400MP图形处理器(GPU)所开发的智能电视系统级芯片(SoC)解决方案已经开始量产。这次扩大采用ARM IP授权后,晨星半导体将可通过ARM各种功能丰富的技术开发各类解决方案。 此次授权协议也 包括了ARM CoreSight™ 设计包(Design Kit)。通过采用CoreSight
[嵌入式]
英特尔酷睿处理器如何助力可穿戴市场?
  提起英特尔,人们对这家总部位于美国加州的公司的第一印象就是其旗下的酷睿处理器。然而,作为全球最大的个人计算机零件和 CPU 制造商,英特尔并不只满足于互联网、计算机领域的成就。去年3月5日,英特尔收购了智能手表 Basis Health Tracker Watch 的制造商 Basis Science,并于同年 9 月份宣布将以 Basis 展开可穿戴设备业务,同时向外界公布了一款名为 Basis Peak 的智能手表,并在其中融入了之前 Basis B1 腕带产品的多种涉及健康、健身和睡眠监测功能。   在将近 8 个月的时间里,英特尔旗下的首款智能手表 Basis Peak 在智能穿戴设备市场上获得了相当不错的评价,虽
[嵌入式]
英特尔酷睿<font color='red'>处理器</font>如何助力可穿戴市场?
HTC设备现身跑分网站 配联发科处理器和6GB运存
早在去年12月,HTC宣布将改变其2019年的智能手机战略。部分战略是延长HTC U12 +和U12 Life的生命周期,同时表示今年将专注于旗舰和中端智能手机。今天GeekBench上出现了一个新的HTC型号,一台内置联发科Helio P35 SoC和6GB内存的未知HTC设备。   该设备的型号为HTC 2Q741,运行Android 9 Pie。这可能是即将推出的HTC中端智能手机。它也有可能是上个月在Geekbench上发现的同一部配备Snapdragon 710 CPU和6GB内存的智能手机的联发科版本,因为包含高通骁龙设备的型号非常类似:2Q7A100。   联发科处理器变体型号可能针对特定市场,HTC没
[手机便携]
基于ARM v7 Cortex A8的开发平台
一、ARM Cortex处理器概述 随着嵌入式技术应用领域的不断扩展,对嵌入式系统的要求越来越高,而作为嵌入式系统核心的微处理器也面临日益严竣的挑战。ARM公司从成立以来,一直以知识产权(IP,Intelligence Property)提供者的身份出售知识产权,在32位RISC CPU开发领域中不断取得突破,其设计的微处理器结构已经从v3发展到现在的v7。ARMv7架构是在ARMv6架构的基础上诞生的。该架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,减小了系统开销,同时能够提供比已有的基于
[单片机]
基于ARM v7 Cortex A8的开发平台
ARM处理器的Cache之cortex a8
Cache 是位于 CPU与主存储器DRAM(Dynamic RAM,动态存储器)之间的少量超高速静态存储器 SRAM(static RAM),其是为了解决 CPU 与 主存之间速度匹配问题而设置的,不能由用户直接寻址访问。 具有 Cache 的计算机,当 CPU 需要进行存储器存取时,首先检查所需数据是否在 Cache中。如果存在,则可以直接存取其中的数据而不必插入任何等待状态,这是最佳状态,称为高速命中;当 CPU 所需信息不在 Cache 中时,则需切换存取主存储器,由于速度较慢,需要插入等待,这种情况称为 高速未命中;在CPU存取主存储器的时候,按照最优化原则将存储信息同时写入到 Cache 中以保证下次可能的
[单片机]
ARM<font color='red'>处理器</font>的Cache之cortex a8
用ARM和FPGA搭建神经网络处理器通信方案
  引言   人工神经网络在很多领域得到了很好的应用,尤其是具有分布存储、并行处理、自学习、自组织以及非线性映射等特点的网络应用更加广泛。嵌入式便携设备也越来越多地得到应用,多数是基于ARM内核及现场可编程门阵列FPGA的嵌入式应用。某人工神经网络的FPGA处理器能够对数据进行运算处理,为了实现集数据通信、操作控制和数据处理于一体的便携式神经网络处理器,需要设计一种基于嵌入式ARM内核及现场可编程门阵列FPGA的主从结构处理系统满足要求。   1人工神经网络处理器   1.1人工神经网络模型   人工神经网络是基于模仿大脑功能而建立的一种信息处理系统。它实际上是由大量的、很简单的处理单元(或称神经元),通过广泛的互相连接而形成
[单片机]
用ARM和FPGA搭建神经网络<font color='red'>处理器</font>通信方案
铵泰克发布多款龙芯、飞腾、兆芯处理器平台网络安全平台
网络安全平台厂商--铵泰克一直致力于国产化网络安全平台的研发生产,近年来,通过与龙芯、飞腾、兆芯国产芯片厂商合作,已成功发布多款自主可控网络安全平台。如,基于龙芯LS3A3000/3A4000,飞腾FT1500A/2000及兆芯C4600系列的多款、多种尺寸可选的网络安全平台。 铵泰克目前有多款基于龙芯LS3A3000/3A4000的产品,包括网络安全平台系列和网闸系列。其中网络安全平台系列有ANS-LS3A3000C6F4、ANS-LS3A4000C6F4以及ANS-LS3B3000C4-2WAYS。ANS-LS3A3000C6F4采用LS3A3000 4核处理器, ANS-
[物联网]
铵泰克发布多款龙芯、飞腾、兆芯<font color='red'>处理器</font>平台网络安全平台
基于ARM处理器的电台检测控制器硬件设计
  机载电台担负着空空和地空之间通信,为保证电台性能,需要对其进行定检。基于单片机的检测仪存在测量速度慢、可扩展性差的问题;而基于PXI仪器或VXI仪器的检测仪存在着功耗大、体积大、价格高等缺点。为解决上述问题,利用基于ARM处理器来实现电台检测控制器成为重要的发展方向,ARM是一种高性能、低功耗的RISC结构处理器,由于其出色的性能被广泛应用于工业控制、无线通讯、成像和安全、网络应用等方面,采用基于ARM的电台检测控制器具有可移植性强、可扩展性好、抗干扰能力强等优点。    1 硬件设计   良好的硬件设计是是解决基于单片机、PXI、VXI等系统的电台检测仪问题的关键。为实现硬件结构的模块化设计,硬件主要分为两大部分:主控制
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved