at91rm9200的io口电平中断简单理解

发布者:MusicLover123最新更新时间:2016-07-12 来源: eefocus关键字:at91rm9200  io口  电平中断 手机看文章 扫描二维码
随时随地手机看文章
对于PQFP封装的9200的PIOA、PIOB和PIOC三组32*3=64个io口,他们的io中断有这样的特性PIO的中断AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL和AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE都是电平中断,对于PIO来说没有区别,在PIO中断处理函数里边通过检测发生io中断的相应io引脚输入值为0还是为1,来判断是高电平中断还是低电平中断,PIO的PIO_IER使能的相应io口线上输入变化中断--注意是变化中断,所以对于io电平中断也必须存在电平变化之后才能被9200捕获到,也才能引发中断,执行中断处理函数,io口线上无电平变化也就无电平中断会被触法,这和51单片机的io电平中断机制不同,51单片机当启用外部电平中断之后,51处理器每个clk都会检测io的电平,如果符合中断电平,那么立即触发电平中断,所以对于51单片机,只要io口上的电平为中断电平值,那么就会不断的触法51的中断处理程序,直到io口电平变为非中断电平值51处理器才会停止触法中断,9200即便配置io为电平中断,但是也需要io线上只有发上了电平变化,9200才会触法电平变化中断,至于这个变化中断最终是变为了低电平还是变为了高电平,那么需要在处理程序中读取io值才可以进一步判断,不过如果存在其他irq中断屏蔽I时间比较长,同时io电平中断变化持续时间又比较短,那么很可能出现,到执行io电平中断处理程序时,读取到的io口数据已经不是引发中断的电平值了,所以io电平中断不是很好用,可以使用AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED双边沿中断或者AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE上升沿中断来完成,对于io口最好使用AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE上升沿中断机制,这不会出现误数据,最坏仅仅是可能会丢掉后面的1~2个上升沿[gliethttp_20080104]

以PIOB的PB0为例:
#define LEVEL_IRQ_PIN    (0x01<< 0)
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,((unsignedint)1< AT91F_PIO_CfgInput( AT91C_BASE_PIOB, LEVEL_IRQ_PIN);//将PB0配置为input输入
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,
                     AT91C_ID_PIOB, 
                     1,
                     AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE,
                     //AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED,//双边沿
                     //AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL,
                     //AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE,//
                     (void(*)(void))piob_interrupt_proc);
{volatile dummy;dummy= AT91C_BASE_PIOB->PIO_ISR;}
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOB,LEVEL_IRQ_PIN);//使能PB0变化中断
{volatile dummy;dummy= AT91C_BASE_PIOB->PIO_ISR;}
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_PIOB);//使能PIOB控制器中断
以上就完成了PB0的上升沿中断启动,来看看中断处理函数[ads1.2]
void __irq piob_interrupt_proc(void)
{
    {volatile dummy;dummy= AT91C_BASE_PIOB->PIO_ISR;}
    AT91C_BASE_AIC->AIC_EOICR= 0;
    if(AT91F_PIO_GetInput(AT91C_BASE_PIOB)& LEVEL_IRQ_PIN)
    {
        //...1电平
    }else
        {
            //...0电平
        }
}
关键字:at91rm9200  io口  电平中断 引用地址:at91rm9200的io口电平中断简单理解

上一篇:S3C2440地址空间的分配及启动过程
下一篇:ARM状态寄存器 CPSR SPSR

推荐阅读最新更新时间:2024-03-16 14:59

如何利用stm32的中断和计数器即上升沿下降沿捕获电平时长
/*! @file ******************************************************************************** PRE 模块名 : 红外解码文件 文件名 : IR_REMOTE.c 相关文件 : IR_REMOTE.h 文件实现功能 : 定时器红外解码 作者 : 李 版本 : -------------------------------------------------------------------------------- 硬件平台 : STM32F107 软件开发平台 : iar --------
[单片机]
如何利用stm32的<font color='red'>中断</font>和计数器即上升沿下降沿捕获<font color='red'>电平</font>时长
SSD1906显示控制器与AT91RM9200的接口技术
摘要:通过对SSD1906显示控制器的介绍,分析其在基于AT91RM9200微控制器的嵌入式系统中的应用;给出详细的硬件连接图及主要的寄存器配置。 关键词:SSD1906 AT91RM9200 显示控制 引言 SSD1906是Solomon公司推出的一款中小规模的显示控制芯片。这款显示控制芯片集成了显存及时序电路,因而为手持设备和消费电子领域提供了一个低成本、低功耗的单芯片解决方案。AT91RM9200是Atmel公司推出的一款基于ARM9的嵌入式处理器,时钟频率为180MHz。AT91RM9200处理器内部没有集成LCD控制器,因而需要通过专用的显示控制器,实现LCD显示。本文介绍SSD1906显示控制器在基于AT91R
[应用]
STM32GPIO口的工作原理
stm32f4有7组IO口,每组有16个IO口,GPIO的的引脚与外部设备连接,可以实现与外部的通信,控制外部硬件,采集外部硬件数据的功能,与之对应的常见应用分别为串口,电机 ,ADC采集。 GPIO口的基本结构 每个GPIO口的内部都有这样一个电路图 GPIO有四种输入模式(浮空输入,上拉输入,下拉输入,模拟输入),四种输出模式(开漏输出,开漏复用输出,推挽输出,推挽复用输出)。 此外,GPIO在输出模式下支持三种翻转速度2MHz,10MHz,50MHz,在不要求转换速度很快的情况下,一般采用低速,目的是节省功耗。但是在通信协议中一般采用50MHz, GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN
[单片机]
STM32GP<font color='red'>IO口</font>的工作原理
at91rm9200io口电平中断简单理解
对于PQFP封装的9200的PIOA、PIOB和PIOC三组32*3=64个io口,他们的io中断有这样的特性PIO的中断AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL和AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE都是电平中断,对于PIO来说没有区别,在PIO中断处理函数里边通过检测发生io中断的相应io引脚输入值为0还是为1,来判断是高电平中断还是低电平中断,PIO的PIO_IER使能的相应io口线上输入变化中断--注意是变化中断,所以对于io电平中断也必须存在电平变化之后才能被9200捕获到,也才能引发中断,执行中断处理函数,io口线上无电平变化也就无电平中断会被触法,这和51单片
[单片机]
MCU实战经验:多种的按键处理
按键通常有:IO口按键(BUTTON),AD按键(通过AD采样电压),IR(遥控器) 按按键功能分:有短按键,长按键,连续按键。打个比方,遥控电视机,按一下音量键,音量增加1,这个就是短按键。按住音量键不放,音量连续加,这个就是连续按键。按住一个按键5s,系统会复位,这个是长按键。 1、IO口按键,就是我们比较常见的一个IO接一个按键,或者是一个矩阵键盘。很多新人的处理方法可能是采样延时的方法,当年我也是这样的,如下 if(GETIO==low) { delay_10ms() if(GETIO==low) { //得到按键值 } } 这种方法虽然简单,但是有很大弊端。首先 D
[单片机]
stm32f103学习笔记(三)按键输入(IO口输入)
学stm32第三天了,才学到按键输入,这进度也是醉了。。。谁叫俺c语言基础不行,还没有学过模数电呢。。 开发板上有4个按键:key0,key1,key2和wk_up,分别接在PE4,PE3,PE2和PA0上: KEY0、 KEY1 和 KEY2 是低电平有效,而 WK_UP 是高电平有效,接下来就是新建key.c和key.h导入工程了: #include key.h #include sys.h #include delay.h //按键初始化函数 void KEY_Init(void) //IO 初始化 { GPIO_InitTypeDef GPIO_InitStructure; 1
[单片机]
stm32f103学习笔记(三)按键输入(<font color='red'>IO口</font>输入)
基于ARM的远程视频监控系统的设计
0 引言 在国内外市场上,视频监控主要有模拟视频监控和数字视频监控。前者技术发展已经非常成熟,在实际工程应用中得到广泛应用,但只适合于小范围的区域监控,而且系统的扩展能力差,已经不能适应社会发展的需要。后者又可分为基于PC 机的视频监控系统和基于嵌入式的视频监控系统。嵌入式视频监控系统与PC 视频监控系统相比,具有体积小、功耗低、性能稳定的特点,很适合于在银行、学校等公共场所的安全监控。采用USB 摄像头作为视频采集设备的嵌入式视频监控系统,更由于其价格低廉、通用性好且接口标准而备受青睐。 本系统基于 ARM9 处理器和嵌入式Linux 操作系统,利用USB 接口摄像头实现数字图像采集任务,同时直接将数据以视频服务器方式发送到
[单片机]
基于ARM的远程视频监控系统的设计
51单片机IO口直接驱动LED数码管方法
1.实验任务   如图13所示,利用AT89S51 单片机 的P0端口的P0.0-P0.7连接到一个共阴 数码管 的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。 2. 电路 原理图             图4.7.1 3.系统板上硬件连线   把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。 4. 程序设计内容 (1). LED 数码显示原理   七段LED显示器内部由七个条形 发光
[单片机]
51单片机<font color='red'>IO口</font>直接驱动LED数码管方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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