S5PV210的中断应用实例

发布时间:2016-1-21 10:54    发布者:designapp
关键词: ARM , S5PV210
  实验程序可以从四个方面设计:一是启动程序的设计,主要是对ARM工作模式的配置和中断服务程序的设计;二是初始化程序,包括S5PV210中断控制器的初始化、GPIO引脚的配置;三是主程序设计;最后编写Makefile,编译生成目标文件。下面就从这四方面编写测试代码以及代码的详解。
  1.启动程序start.S
  前面已介绍过,S5PV210本身的固化代码(iROM)在上电后配置好IRQ中断的栈,以及系统模式所使用的栈,所以在启动代码中可以不用设置这些栈(如果重新配置也可以),所以实验的启动程序比较简单,主要是当中断发生时先保存现场,跳到中断服务程序执行中断处理,处理结束再恢复现场。具体代码示例如下:
  01 .text
  02 .global _start/*声明一个全局的标号*/
  03 .global IRQ_handle
  04_start:
  06mrs r0,cpsr
  07bic r0,r0,#0x00000080/*使能IRQ中断bit[7]=0 */
  08msr cpsr,r0
  09bl main
  10 halt_loop:
  11bhalt_loop/*死循环,不让程序跑飞*/
  12
  13 IRQ_handle:
  14sub lr, lr, #4/*计算返回地址*/
  15stmdb sp!, {r0-r12, lr} /*保存用到的寄存器*/
  16bl irq_handler/*跳到中断服务函数*/
  17ldmia sp!, {r0-r12, pc}^/*中断返回, ^表示将spsr的值复制到cpsr */
  2.初始化阶段
  初始化阶段重点讲下外部中断控制寄存器的配置方法,以及中断向量控制寄存器的设置,关于LED相关的引脚配置不作重复介绍。
  ……
  08 #define GPH0CON*((volatile unsigned int *)0xE0200C00)
  09 #define GPH0DAT*((volatile unsigned int *)0xE0200C04)
  10 #define EXT_INT_0_CON*((volatile unsigned int *)0xE0200E00)
  11 #define EXT_INT_0_MASK*((volatile unsigned int *)0xE0200F00)
  12
  13 #define VIC0IRQSTATUS*((volatile unsigned int *)0xF2000000)
  14 #define VIC0INTSELECT*((volatile unsigned int *)0xF200000C)
  15 #define VIC0INTENABLE*((volatile unsigned int *)0xF2000010)
  16 #define VIC0VECTADDR0*((volatile unsigned int *)0xF2000100)
  17 #define VIC0VECTADDR1*((volatile unsigned int *)0xF2000104)
  18 #define VIC0ADDRESS*((volatile unsigned int *)0xF2000F00)
  19
  20 extern void IRQ_handle(void);
  ……
  38 //配置中断引脚
  39 void init_key(void)
  40 {
  41//配置GPIO引脚为中断功能
  42GPH0CON &= ~(0xFF int.dis
  07
  08 %.o : %.c
  09arm-linux-gcc -c -O2 $< -o $@
  10
  11 %.o : %.S
  12arm-linux-gcc -c -O2 $< -o $@
  13
  14 clean:
  15rm -f *.o *.elf *.bin *.dis
  将以上编写好的源代码上传到宿主机上编译生成可执行的目标文件int.bin,然后烧写到开发板上电测试。
  实验最终结果是:当按下“KEY1”,LED1灯会被点亮或熄灭;当按下“KEY2”,LED2灯会被点亮或熄灭。
                               
                                                               
                               
               
本文地址:https://www.eechina.com/thread-160226-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表