基于s5pv210外部中断使用指南

发布者:乡村乐园最新更新时间:2024-12-17 来源: cnblogs关键字:s5pv210  外部中断  使用指南 手机看文章 扫描二维码
随时随地手机看文章

实验板子:tiny210(芯片:s5pv210)

实验目的:通过外部中断操作两个按键实现对LED灯的亮灭控制

步骤:①初始化GPIO端口,使GPIO为外部中断状态;(寄存器:GPxxCON)

             例:

                

   ②配置外部中断触发模式,上升沿触发,下降沿触发,双边触发,高电平触发,低电平触发(寄存器:EXT_INT_x_CON)

            例:

                

         ③取消屏蔽外部中断(寄存器:EXT_INT_x_MASK)

             例:

                

         ④通过向量中断控制器(VIC)使能中断(寄存器:VIC0INTENABLE,VIC1INTENABLE,VIC2INTENABLE,VIC3INTENABLE)(注:几乎每一个中断都有其对应的VIC)

         

         注:VICINTENABLE寄存器分别包括VIC0,IVC1,VIC2,VIC3四个,每一个中断控制器有32位,每一位对应一个中断源(假如你要使能外部中断1,那么首先要先找到外部中断1对应哪一个中断控制器,然后找到这个中断控制器的相应位为设置)

        ⑤设置中断程序入口(寄存器:VICxVECTADDRx)

           例:*(VICxVECTADDRx) = 函数名(函数名就是一个地址)

 ⑥开总中断         

1 __asm__( 

2     /*开中断*/  

3     'mrs r0,cpsrn'

4     'bic r0, r0, #0x80n'

5     'msr cpsr_c, r0n'            

6     : 

7     : 

8   );


⑦编写中断处理程序(清除中断寄存器:EXT_INT_x_PEND)


 1  void 函数名()

 2  {

 3       //1. 保存环境

 4  

 5       //2. 中断处理

 6   

 7       //3. 清除中断

 8       *(EXT_INT_x_PEND) = ~0x0;//写1清除中断标志 

 9       *(VICxADDRESS) = 0;

10       //4. 恢复环境       

11  }

 

中断编写思维导图(仅供参考流程思路):

 

总结:由中断编写思维导图应该有的思路是:1. 对相应GPIO以及中断源的初始化

                                                        2. 当中断发生,中断源对应的PEND寄存器会被置1,所以在中断处理程序里应该清除中断标志(注:写1清除中断)

                                                        3. 当中断发生,如果MASK寄存器没有取消屏蔽,则中断不被允许,所以在编写中断程序时应首先取消相应中断的屏蔽

                                                        4. 别忘了VIC的初始化,包括用VICINTENABLE对相应中断进行使能,用VICVECTADDR寄存器设置中断处理程序入口

 s3c2440示例代码(仅供参考思路步骤,与s5pv210不对应):


 1 void key_init()

 2 {

 3     rGPGCON &= ~(0x3 << 0);    //设置GPGO—EINT[8] 

 4     rGPGCON |= (0x2 << 0);     //设置GPGO—EINT[8] 

 5     rEXTINT1 &= ~(0xf << 0);   //触发方式为低电平有效 

 6     rEINTPEND |= (1 << 8);     //清中断 

 7     rEINTMASK &= ~(1 << 8);    //允许外部中断

 8     pISR_EINT8_23 = (U32)Key_handler;  //中断服务程序

 9     EnableIrq(BIT_EINT8_23);   //允许中断(INTMSK)

10 }

11 

12 static void __irq key_handler()

13 {

14     if (rINTPND == BIT_EINT8_23)     //INTPND同时只能有一位为1

15         ClearPending(BIT_EINT8_23);  //清SRCPND、INTPND          #define BIT_EINT8_23 (0x1 << 5)

16     if (rEINTPEND & (1 << 8))        //清外部中断EINTPEND

17         rEINTPEND |= 1 << 8;

18     ............

19 }

 

其他外部中断编程参考资料:

1.中断源的相关寄存器:

         当需要开启中断时,则需要对中断源进行相应的配置,这里主要记录常用的外部中断的配置。外部中断的配置主要是对引脚的配置,涉及的寄存器主要分为两组。

         一组是EINT0~16,涉及的寄存器主要是EXT_INT_x_CON,EXT_INT_xMASK,EXT_INT_PEND。EXT_INT_x_CON是外部中断的的配置寄存器,主要配置中断的触发方式;EXT_INT_xMASK是外部中断的屏蔽寄存器,配置引脚的中断是否屏蔽;EXT_INT_PEND是外部中断的中断未决寄存器,中断结束时必须清楚相应位,否则会持续引发中断。

         另一组的则是其余的GPIO的中断,他们复用一个中断线路,涉及的寄存器主要是GPxx_INT_CON,GPxx_INT_MASK,GPxx_INT_PEND。各寄存器功能跟第一组的类似。

 

2.中断控制器的相关寄存器:

       VICxINTSELECT——中断类型选择寄存器,通过此寄存器选择是IRQ还是FIQ。

       VICxINTENABLE——中断使能寄存器,通过此寄存器使能相应的中断线路。

       VICxINTENCLEAR——中断使能清除寄存器(即失能),在控制器禁止某路中断在该寄存器设置。

       VICxIRQSTATUS——普通中断请求状态寄存器,记录了经VICxINTENABLE和VICxINTSELECT过滤后的IRQ中断请求状态。

       VICxFIQSTATUS——普通中断请求状态寄存器,记录了经VICxINTENABLE和VICxINTSELECT过滤后的FIQ中断请求状态。

       VICxRAMINTR——原始中断请求寄存器,记录了未经VICxINTENABLE和VICxINTSELECT过滤后的中断请求状态。

       VICxSOFINT——软件中断寄存器,通过该寄存器可使控制器产生相应线路的中断信号,该信号未经过优先级,VICxINTENABLE和VICxINTSELECT等寄存器的过滤。

       VICxSOFINTCLEAR——软中断清除寄存器,在ISR(中断服务程序)结束时要清除该寄存器相应位来清除中断,否则该中断会持续触发。

        VICxVECTADDRx——向量地址寄存器,该寄存器保存的是相应线路的ISR的地址。

        VICxVECTPRIORITYx——保存相应相应线路的优先级,有16个优先级,0的优先级最高,当多个相同优先级的线路同时请求中断时,按硬件优先级排序,同一组中断,中断好越低优先级越高,如VIC0中,EINT0优先级;如正在执行某ISR时,又一同软件优先级的但硬件优先级高的线路请求中断,此时该中断被屏蔽,要当前ISR执行完毕才可受理。

        VICxSWPRIORITYMASK——软件优先级屏蔽,可设置屏蔽相应的优先级,屏蔽后则相应优先级的中断被屏蔽。

        VICxADDRESS——保存当前活跃的中断线路的ISR地址,读取一次该寄存器意味着当前活跃的中断请求已被标志为已服务,此操作只能在进入中断处理时执行;向该寄存器写如任意值表示清楚控制器中该路中断状态,此操作只能在ISR结尾处执行。

        VICxPROTECTION——控制器保护模式配置寄存器,配置为保护模式时,中断控制器的寄存器只能在特权模式下被访问;非保护模式时,用户模式和特权模式都可以访问中断控制器的寄存器。VICxPROTECTION只能在特权模式下访问。

 

3.处理器内核配置主要是配置CPSR寄存器,配置相应中断控制位为允许中断。


关键字:s5pv210  外部中断  使用指南 引用地址:基于s5pv210外部中断使用指南

上一篇:ARM-Linux S5PV210 UART驱动(1)----用户手册中的硬件知识
下一篇:基于linux操作系统下s5pv210板子的按键中断实验

推荐阅读最新更新时间:2026-03-21 16:16

S5PV210 点亮Led
GPC1CON, R/W, Address = 0xE020_0080 GPC1DAT, R/W, Address = 0xE020_0084 举例 #define GPC1CON *((volatile unsigned int*)0xE0200080) #define GPC1DAT *((volatile unsigned int*)0xE0200084) *(unsigned int*)GPC1CON &= ~(0xf 12); *(unsigned int*)GPC1CON |= (0x1 12); *(unsigned int*)GPC1DAT &= ~(0x1 3); *(un
[单片机]
<font color='red'>S5PV210</font> 点亮Led
S5PV210根文件系统的制作(一)
一、基本概念 文件管理:数据管理算法 文件系统:管理文件算法的载体 文件系统的功能:管理分区上的数据(增删查改) 文件系统的分类:fat32/ntfs/ext3/ext4/yaffs/jffs/cramfs/..... 文件系统的表现形态:   window--------- 森林   linux------------ 树 ------- 文件目录标准 文件系统与根文件系统:   根文件系统:  系统启动时加载的助文件系统   其他文件系统:  根系统启动后挂载的其他文件系统 二、需要用到的工具 busybox-1.20.2.tar,yaffs2-source,bash-4.0.t
[单片机]
三星s5pv210之芯灵思Sin210与Ti Beaglebone Black之对比
1.外观对比 Ø 芯灵思Sin210 Ø TI Beaglebone Black 2.尺寸对比 Ø 芯灵思Sin210 采用核心板+底板结构,核心板尺寸5CM*6CM;底板尺寸10.6CM*15CM Ø TI Beaglebone Black 8.636cm * 5.334cm 3.配件对比 Ø 芯灵思Sin210 Ø TI Beaglebone Black 只提供一块板子 + miniUSB线 4.液晶LCD对比 Ø 芯灵思Sin210 标配4.3 电阻触摸屏 Ø TI Beaglebone Black 无 5.主打操作系统 Ø 芯灵思Sin210 WinCE Ø TI Beaglebone Bla
[单片机]
三星<font color='red'>s5pv210</font>之芯灵思Sin210与Ti Beaglebone Black之对比
嵌入式专题: S5PV210 - MPEG4编码
我想说不同的平台,如tiny210和x210。它们的头文件是有稍微区别的。 我这个是x210下的代码。但都须要注意的是NV12T与NV12的问题,默认要求输入的图片是NV12T,经过调整之后,能够同意用NV12。 即便如此。NV12格式的图片也不好拿到啊。 #include stdio.h #include string.h #include stdlib.h #include unistd.h #include ../mfc/SsbSipMfcApi.h #include ../mfc/MfcConvert.h #include ../mm/MMClock.h int test_enc_mpeg4(
[单片机]
【ARM裸机s5pv210 】旧版本交叉编译工具链配置
旧版本交叉编译工具链的安装 1.cd /usr/local/ mkdir arm tar -jxvf arm-2009q3.tar.bz2 cd /usr/local/arm/arm-2009q3/bin bash mk-arm-linux-.sh sudo gedit ~/.bashrc 添加 export PATH=/usr/local/arm/arm-2009q3/bin:$PATH source ~/.bashrc 2.安装32位库 sudo apt-get update apt-get update sudo apt-get install lib32ncurses5-dev 3./usr/local/arm/arm
[单片机]
【ARM裸机s5pv210 】时钟配置
clock.c // 时钟控制器基地址 #define ELFIN_CLOCK_POWER_BASE 0xE0100000 // 时钟相关的寄存器相对时钟控制器基地址的偏移值 #define APLL_LOCK_OFFSET 0x00 #define MPLL_LOCK_OFFSET 0x08 #define APLL_CON0_OFFSET 0x100 #define APLL_CON1_OFFSET 0x104 #define MPLL_CON_OFFSET 0x108 #define CLK_SRC0_OFFSET 0x200 #define CL
[单片机]
【ARM裸机s5pv210 】重定位操作
makefile final.bin: start.o led.o arm-linux-ld -Tlink.lds -o start.elf $^ //link.lds为链接脚本,指定链接地址 arm-linux-objcopy -O binary start.elf final.bin arm-linux-objdump -D start.elf start_elf.dis %.o : %.S arm-linux-gcc -o $@ $ -c -nostdlib %.o : %.c arm-linux-gcc -o $@ $ -c -nostdlib clean: rm *.o *
[单片机]
解决VS2005 远程工具无法通过同步软件连接S5pv210 样机的问题
用过VS2005的人都知道,它提供了两套远程工具软件,一个可从VS2005的菜单 Target”—— Remote Tools”打开,而另一个在“开始”菜单—— Microsoft Visual Studio 2005”—— Visual Studio Remote Tools”下。很早以前,在《 单机搭建WinCE开发环境(续) 》中对两套远程工具做了对比,当时只看到了一点表象,没有看到更深层次的东西,今天在这里做一个补充说明。 这两套远程工具是基于两种不同的链接层实现的,它们分别是Platman和CoreCon。 Target”菜单下的远程工具是基于Platman的。而“开始”菜单VS2005中的远程工具是基于CoreC
[单片机]
解决VS2005 远程工具无法通过同步软件连接<font color='red'>S5pv210</font> 样机的问题
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved