中断处理
如果想使用中断:
1 初始化
A设置源头
查看原理图
XEINT0/kpROW0/GPN0
查看芯片手册
使能
B 设置中断控制器
This chapter describes the functions and usage ofVectored Interrupt Controller in S3C6410X RISC
microprocessor.
12.1 OVERVIEW
The interrupt controller in the S3C6410X is composed of2 VIC’s (Vectored Interrupt Controller, ARM PrimeCell
PL192) and 2 TZIC’s (TrustZone Interrupt Controller, SP890).
Two TZIC’s and VIC’s are daisy-chained to support up to 64 interrupt sources.
12.2 FEATURES
The Vectored Interrupt Controller features in S3C6410 incudes the following:
• Support for 32 vectored IRQ interrupts per VIC
• Fixed hardware interrupt priority levels
• Programmable interrupt priority levels
• Hardware interrupt priority level masking
• Programmable interrupt priority level masking
• IRQ and FIQ generation
• Software interrupt generation
• Raw interrupt status
• Interrupt request status
• Privileged mode support for restricted access
C 打开cpsr 中的I状态位(清零)
如果发生中断:
1 cpu进入irp模式
2 cpsr保存到spsr_irq
3 使用r13_irq,r14_irq
4 把下一条指令地址存放到r14中去
5 跳到0x18执行
保存中断
处理中断
恢复中断
中断向量寄存器
关键字:中断处理 初始化 S3C6410
引用地址:
中断处理学习笔记
推荐阅读最新更新时间:2024-11-12 20:52
linux中LCD设备驱动(4)——基于s3c6410平台
我们这一篇来说与具体的TFT显示器有关的部分,当遇到具体的显示器是我们应该设置什么参数,怎样设置这些参数。 1、在s3cfb_WXCAT43.c (linux2.6.28driversvideosamsung)文件中是有关具体显示器的设置。我们一段一段来看。 #include linux/wait.h #include linux/fb.h #include linux/delay.h #include linux/platform_device.h #include plat/regs-gpio.h #include plat/regs-lcd.h #include s3cfb.h #define S3C
[单片机]
STM32中 初始化ADXL345芯片
初始化ADXL345芯片 void ADXL345init() { Single_WriteI2C(0x31,0x0B);//低电平输出,13位全分辨率,输出数据右对齐,16g量程 Single_WriteI2C(0X2C,0x0A);//数据输出速率为100HZ,10ms读一次数据 Single_WriteI2C(0X2D,0x28);//链接使能,测量模式 Single_WriteI2C(0X2E,0x80);//INT_ENABLE,使能动态监测终端 Single_WriteI2C(0X1E,0x00);//OFSX Single_WriteI2C(0X1F,0x00);
[单片机]
Part10-C语言环境初始化-一跃进入C大门lesson3
1、跳转到c代码 因为内存中的代码来自于垫脚石SRAM,他们是相同的。 采用绝对跳转方式来完成。 因为我们是从汇编代码跳转到c语言的程序,所以我们要提前准备一个main.c文件。 修改makefile 2、验证看跳转成功没有 使用c语言来点亮led 汇编中的led点亮 在c语言当中地址一定要有类型的故
[单片机]
lpc1768之开发板初始化工作
要写一个点亮led的程序,首先要做的开发板的初始化工作。要初始化哪些部分呢? 一.开发板初始化操作 1.首先要配置的是:引脚模式选择寄存器。 #define PINMODE0(*(volatile unsigned long *)0x4002C040) PINMODE0寄存器控制 port0口p0.0---p0.15的上拉电阻/下拉电阻配置 PINMODE1寄存器控制 port0口p0.16---p0.26的上拉电阻/下拉电阻配置 PINMODE2寄存器控制 port1口p1.0---p1.15的上拉电阻/下拉电阻配置 PINMODE3寄存器控制 port1口p1.16---p1.31的上拉电阻/
[单片机]
STM32F4 UART DMA初始化
F4的片子内部DMA初始化和F103的有很大区别,在这里引入了数据流(Stream),2个DMA共16的数据流(每个控制器8个),每个数据流则可已处理多达8个通道的数据,每个通道都有一个仲裁器处理DMA请求的优先级。下面贴出DMA请求映射事例 在DMA2中可以看出UART1的发送是数据流7的第4通道,接收是数据流5的第4通道。所以在配置DMA时要注意选择对应的数据流然后配置对应的通道,最后初始化对应数据流和对应的通道。 下面贴出代码 //****************************配置UART1 DMA发送 DMA_DeInit(DMA2_Stream7); while (DMA_GetCmd
[单片机]
函数指针数组在ARM异常中断处理中的应用
介绍一种简洁、高效、灵活的ARM异常中断处理方法。 在ARM中,由于所有的中断都使用同一个异常中断入口地址,即0x00000018。因此需要在异常中断处理程序中根据相应的中断号调用对应的中断服务函数。 一般有两种处理方式: 1. 在汇编中保存现场,然后调用C语言编写的中断处理程序,任务处理完成之后,再返回到汇编中恢复现场,并返回到断点。其中C语言编写的中断处理程序,通过switch语句对INTOFFSET进行判断,然后散转执行对应的服务函数。 IMPORT IRQ_EXCEPTION 0x00000018 LDR PC,=IRQ_E
[单片机]
s3c2440#SDRAM#初始化
一、引脚说明 JZ2440的SDRAM接线图 可以看到两块SDRAM并行接入到开发板,一共有27条地址线,32条数据线(各16条) (1)CLK:SDRAM工作的时钟,并且所有的输入信号都是在CLK的上升沿进行检测的,也就是说我们给SDRAM给的任何命令,一定要在CLK的上升沿保持稳定,以免SDRAM获取我们给出的命令时出现错误。 (2)CKE:时钟使能信号,高电平(激活)、低电平(无效),是用来控制SDRAM内部时钟是否工作的一个信号(在SDRAM内部也是有时钟的哦) (3)其中地址线分出两条来选择bank,因为SDRAM中有四个bank。 (4)RAS、CAS、WE:这三根线就是用来给SDRAM发命令的
[单片机]
蜂鸣器驱动
蜂鸣器是S3C6410开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫。 (1)前提是eclipse中安装了CDT插件。 (2)在eclipse中单击File-New-Other,选择C Project项,单击next进行相应的设置,例如工程名为word_count,然后Finish建立一个空的C工程。 (3)单击word_count工程右击菜单中的New-Soruce Folder,打开New Soruce Folder对话框,在Folder name文本框中输入src,然后Finish建立保存linux驱动源代码文件的目录。 (4)单击src目录,右键单击Import打开对话框,选择File Syst
[单片机]