1. S3C2440中断初始化:
#define BIT_ALLMSK (0xffffffff)
void Isr_Init(void)
{
pISR_UNDEF=(unsigned)HaltUndef;
pISR_SWI =(unsigned)HaltSwi;
pISR_PABORT=(unsigned)HaltPabort;
pISR_DABORT=(unsigned)HaltDabort;
rINTMOD=0x0; // All=IRQ mode Address:0x4A000004 =1 FIQ mode; =0 IRQ mode
rINTMSK=BIT_ALLMSK; // All interrupt is masked. Address:0x4A000008 0 = Interrupt service is available.
//1 = Interrupt service is masked.
}
void HaltUndef(void)
{
Uart_Printf("Undefined instruction exception!!!\n");
while(1);
}
void HaltSwi(void)
{
Uart_Printf("SWI exception!!!\n");
while(1);
}
void HaltPabort(void)
{
Uart_Printf("Pabort exception!!!\n");
while(1);
}
void HaltDabort(void)
{
Uart_Printf("Dabort exception!!!\n");
while(1);
}
2. 7个中断地址:
#define _ISR_STARTADDRESS 0x33ffff00
#define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))
#define pISR_UNDEF (*(unsigned *)(_ISR_STARTADDRESS+0x4))
#define pISR_SWI (*(unsigned *)(_ISR_STARTADDRESS+0x8))
#define pISR_PABORT (*(unsigned *)(_ISR_STARTADDRESS+0xc))
#define pISR_DABORT (*(unsigned *)(_ISR_STARTADDRESS+0x10))
#define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14))
#define pISR_IRQ (*(unsigned *)(_ISR_STARTADDRESS+0x18))
#define pISR_FIQ (*(unsigned *)(_ISR_STARTADDRESS+0x1c))
(unsigned*)目的把(_ISR_STARTADDRESS+0x0)指针强转(unsigned*)类型,最前的一个*,取 该 (unsigned*)类型指针对应的unsigned值;
得恶补C语言的知识了
关键字:S3C2440 中断 异常定义 基本知识
引用地址:
S3C2440中断与异常定义与基本知识
推荐阅读最新更新时间:2024-03-16 15:23
stm32 外部中断嵌套[操作寄存器+库函数]
stm32共有19个外部中断: 线0~15:对应外部I/O口的输入中断 线16:连接到PVD输出。PVD(Programmable Votage Detector),即可编程电压监测器。作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。 线17:连接到RTC实时时钟产生闹钟事件。 线18:连接到USB唤醒事件 在 stm32 NVIC中断 和 stm32 USART串口通信 中已经介绍过stm32的中断和串口输出使用方法,本文运用外部中断嵌套,通过串口发送相应信息,验证外部中断嵌套。 按下PA0(按
[单片机]
STM8 IO外部中断设置问题
STM8 IO外部中断设置问题(使用库函数) STM8,掉坑: 程序里面,首先开启了总中断,enableInterrupts(); // 打开总中断 在之后的程序里面,设置打开IO口外部中断,并设置触发电平,代码如下:(坑在这里,注意!!!) GPIO_Init(PORT_BLE_STA, PIN_BLE_STA, GPIO_Mode_In_PU_IT);//上拉,开中断 EXTI_SetPinSensitivity(EXTI_PIN_BLE_STA, EXTI_Trigger_Falling);//下降沿中断 之后杯具发生了,一旦IO口产生一个下降沿,程序马上死掉,看门狗复位。 定位发现,是因为不停
[单片机]
ARM Linux外部中断处理过程
ARM Linux外部中断处理过程 最近在学习arm linux的整套外部中断的处理过程,在网上汇总了一些资料,整个过程差不多都了解到了。如果没有这些资料我真是没信心从汇编开始读代码,感谢 奔腾年代的jimmy.lee和 linux论坛的bx_bird。 在下面的的注释中有一些我读代码时遇到的问题,要是大家知道是怎么回事,希望多多回复。 ============================================= 一.ARM linux的中断向量表初始化分析 ARM linux内核启动时,通过start_kernel()- trap_init()的调用关系,初始化内核的中断异常向量表. /* arch/ar
[单片机]
移植u-boot-2010.09到S3C2440(四)——通过BSS段和_start判断uboot大小
BSS(百度百科) 是“Block Started by Symbol”的缩写,意为“以符号开始的块”。 BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。 uboot代码块占用存储空间大小 查看u-boot.lds,其将BSS放在所有代码段的最后,又从上述得知BSS不占用存储空间,这样,将
[单片机]
STM32F7实现ADC等周期采集(定时器触发+DMA传输)采集完成后的中断设置
虽然可以使用DMA对数据进行传输, 但是采集传输完成,其他外设或者主线程是需要知道是否采集完成,才能使用这个数据的。 如果我们设置好了传输完成中断,就可以实现了。 在STM32F7中文参考手册中,有关于EOC的介绍: EOC有以下取值: /** * @} */ /** @defgroup ADC_EOCSelection ADC EOC Selection * @{ */ #define ADC_EOC_SEQ_CONV ((uint32_t)0x00000000U) #define ADC_EOC_SINGLE_CONV ((uint32_t)0x00000001U) #de
[单片机]
S3C2440裸机------NandFlash编程_时序及初始化
1.NandFlash初始化 Nandflash初始化主要包括时序图的设置和Nandflash控制器的使能,我们首先看一下S3C2440芯片手册里面的时序图。 上图中的HCLK我们已经设置成了100M。那么时钟周期是1/100M=10ns 然后下图是NandFlash芯片手册里面的时序图。 我们将S2C2440里面NandFlash控制器的时序图和NandFlash时序图结合起来看。 左图中的TACLS表示当我们的CLE/ALE发出之后,再过多长时间再发出WE信号,就是右图中的tcls-twp,而我们从右下图可以看到,tcls的最小值是12,twp的最小值也是12,就表明tcls-twp可以为零,也就表明CLE
[单片机]
自制51单片机常用头文件(中断)
#ifndef __CONFIG_H__ #define __CONFIG_H__ /********************************/ /* 以下为系统配置 */ /********************************/ #include regx51.h #include string.h #include intrins.h /***************************************************** 函 数 名:void Clearmen(void) 功 能:系统初始化 说 明:对系统引脚变量及中断进行初始化 入口参数:无 返 回
[单片机]
STM32 (Cortex-M3) 中NVIC(嵌套向量中断控制)的理解
一、STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应—非抢断式响应(
[单片机]