按键中断

原理

/* 按键          对应的IO寄存器     对应的中断引脚*/

/* K1             GPG0                 EINT8      */

/* K2             GPG3                 EINT11     */

/* K3             GPG5                 EINT13     */

/* K4             GPG6                 EINT14     */

/* K5             GPG7                 EINT15     */

/* K6             GPG11                EINT19     */

void key_init()

{
    rGPGCON &= ~(0x3 << 0);    //设置GPGO—EINT[8]            //中断来源
    rGPGCON |= (0x2 << 0);     //设置GPGO—EINT[8]
    rEXTINT1 &= ~(0xf << 0);   //触发方式为低电平有效           
    rEINTPEND |= (1 << 8);     //清中断
    rEINTMASK &= ~(1 << 8);    //允许外部中断                 //手动解除屏蔽
    pISR_EINT8_23 = (U32)Key_handler;  //中断服务程序         //低电平触发、中断信号来了            //此时已自动挂起PEND
    EnableIrq(BIT_EINT8_23);   //允许中断(INTMSK)            //手动解除屏蔽
}

static void __irq key_handler()
{
    if (rINTPND == BIT_EINT8_23)     //INTPND同时只能有一位为1     //判断在众多等待的中断里,是不是自己被执行了
        ClearPending(BIT_EINT8_23);  //清SRCPND、INTPND          #define BIT_EINT8_23 (0x1 << 5)
    if (rEINTPEND & (1 << 8))        //清外部中断EINTPEND
       { rEINTPEND |= 1 << 8;         //以上为清除所有PEND, 手动解除挂起状态,否则CPU一直认为此中断还在挂起,没被执行

led_run();

}

............
}

时间: 2024-12-08 06:09:27

按键中断的相关文章

nios II--实验4——按键中断硬件部分

按键中断 硬件开发 新建原理图 1.打开Quartus II 11.0,新建一个工程,File -> New Project Wizard-,忽略Introduction,之间单击?Next>?进入下一步.分别设置工程工作目录.工程名称.这里需要注意的是工程工作目录中请使用英文,不要含有空格等,否则在后面使用Nios II IDE的时候会出现问题.设置好后如图1所示.然后进行下一步.这里工程命名为lab3_bnt 2.添加已经存在的文件,这里没有需要添加的文件,直接单击?Next>?进入

2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED &amp;&amp; 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

STM32学习之路-按键中断测试(外部中断)

终于有时间再来学习STM32了~ 这几天都在忙着该死的考试.直接进入正题 开发板:奋斗V5 这个按键中断测试的要求是:按键2(K2)按下,LED2(V7)亮, 再一次按下就灭,循环.. 好,先看看按键和LED的原理图 好吧~ 虽然图截得不是很好看,但是能看到K2接的是PC2, LED2接的是PD6 ok,剩下的就是配置工作了.. 先来理一理思路: (1)初始化系统时钟 (2)初始化外部时钟(你所用到的东西) (3)配置LED (4)配置中断优先级 (5)配置外部中断线 (6)中断处理函数 恩,差

6.6410和210的按键中断编程

6.6410和210的按键中断编程 首先是打开6410底板原理图: 可以看到OK6410有六个按键: 可以看到OK6410的六个按键对应的引脚是KEYINT1.KEYINT2.KEYINT3.KEYINT4.KEYINT5和KEYINT6.接着在核心板的原理图里搜索这个词: 可以看到按键中断与GPN系列寄存器的引脚是互用的,接着就是在芯片手册里查看有关GPN系列寄存器的信息,重点是关注GPN控制寄存器:GPNCON: 这里我们使用到的按键对应的中断,需要配置成中断的方式,对应的GPN位设置为10

ARM实验5 —— 按键中断实验

key_int按键中断实验 实验内容: 通过开发板上的按键中断控制led灯并打印信息. 通过简单事例说明猎户座4412处理器的GIC中断处理的应用,设置key2按键连接的引脚为中断模式,当识别按键被按下时进入相应的中断处理函数 实验目的: 熟悉开发环境的使用 掌握猎户座4412处理器的中断过程及编程. 实验平台: fs4412开发板,eclipse,secureCRT. 实验步骤: 1.查看key2在开发板的位置: 2.查看UART_RING在核心板的位置: 3.查看GPX1在芯片手册的位置:

ZYNQ随笔——PL端按键中断之裸机设计

1. ZYNQ中断简述ZYNQ中断类型:普通中断请求(IRQ, Interrupt Request)和快速中断请求(FIQ, Fast Interrupt Request).ZYNQ中断源:软件中断(SGI, Software Generated Interrupt).CPU私有设备中断(PPI, Private Peripheral Interrupt)和共享设备中断(SPI, Shared Peripheral Interrupt).而PL端的按键中断属于共享设备中断.2. 硬件平台搭建在B

nios II--实验4——按键中断软件部分

软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进行Workspace Launcher(工作空间)路径的设置,需要注意的是路径中不要含有空格等,然后单击OK即可. ? 新建工程.单击File -> New ->?Nios II Application and BSP from Template,弹出Nios II Application and

2440按键中断编程

1.其底板按键原理图 将EINT1到核心板原理图去搜 可以看出它对应GPF1这个引脚, 到s3c2440的I/O引脚去找GPF这一组. a.配置这些按键引脚,即初始化这些中断源 b.初始化中断控制器 我们的按键没有子中断,故不需要设置SUBMASK寄存器,只需要去设置MASK寄存器,对于MODE和Priority保持默认值即可. 保证EINT0.1.2.4保持可以被中断,不能被屏蔽. 在这里对于第四位对应EINT4-7,设置第四位就是设置4-7位,那么要分开对他们怎么设置呢,这时候还有一个寄存器

77.PS接收来自PL的按键中断

本篇文章主要介绍外设(PL)产生的中断请求,在PS端进行处理. 在PL端通过按键产生中断,PS接受到之后点亮相应的LED. 本文所使用的开发板是zedboardPC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4 搭建硬件工程 建好工程后,添加ZYNQ IP 双击 ZYNQ,打开Re-customize IP对话框,使能IRQ_P2P 使能UART1 点击Run Connection Automation,按照如图所示配置,点击OK 添加一个GPIO IP,按照如图