十.ARM裸机学习之中断系统1(S5PV210的中断系统详解)

本文介绍了S5PV210的中断系统,包括轮询方式处理按键、中断系统的基本概念如异常向量表、中断处理流程。详细讲解了中断的各个阶段,如保存现场、识别中断源、调用中断服务处理程序,并讨论了中断处理程序与中断服务ISR的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.轮询方式处理按键
参考 E:\Linux\8.key_open
//按键的初始化
void key_init(void)
{
	// GPH0CON的bit8~15全部设置为0,即为输入模式
	rGPH0CON &=~(0xff<<8);
	// GPH2CON的bit0~15全部设置为0,即为输入模式
	rGPH2CON &= ~(0xFFFF<<0);
	
}
void key_polling(void)//轮询方式
{
	
	// 依次,挨个去读出每个GPIO的值,判断其值为1还是0.如果为1则按键按下,为0则弹起
	
	// 轮询的意思就是反复循环判断有无按键,隔很短时间
	// 对应开发板上标着LEFT的那个按键
	while(1)
	{
		if (rGPH0DAT & (1<<2))
		{
			// 为1,说明没有按键
			led_off();
			printf("key left.\n");
		}
		else
		{
			// 添加消抖
			// 第一步,延时
			delay20ms();
			// 第二步,再次检验按键状态
			if (!(rGPH0DAT & (1<<2)))
		{
			// 为0,说明有按键
			led1();
			printf("key down.\n");
		}
			
		}
	
	// 对应开发板上标着DOWN的那个按键
	if(rGPH0DAT &(1<<3)) // 为1,说明没有按键
	{
		led_off();
		printf("key down.\n");
	}
	else // 为0,说明有按键
	{
		// 添加消抖
			// 第一步,延时
			delay20ms();
			// 第二步,再次检验按键状态
			if (!(rGPH0DAT & (1<<3)))
		{
			// 为0,说明有按键
			led1();
			printf("key down.\n");
		}
	}
	
	// 对应开发板上标着UP的那个按键
	if (rGPH2DAT & (1<<0))
	{
			// 为1,说明没有按键
		led_off();
		printf("key down.\n");
	}
	else
	{
			// 添加消抖
			// 第一步,延时
			delay20ms();
			// 第二步,再次检验按键状态
			if (!(rGPH2DAT & (1<<0)))
		{
			// 为0,说明有按键
			led3();
			printf("key down.\n");
		}
	}
		
	}
    
	
}
二.中断系统 2017/11/21 23:30
1.异常向量表分析:

(1)、复位(RESET)
    a、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。
    b、通过设置PC跳转到复位中断向量处执行称为软复位。
    (2)、未定义的指令
    当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
     (3)、软件中断
    这是一个由用户定义的中断指令(SWI)。 该异常由执行 SWI 指令产生, 可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制实现系统功能调用。
     (4)、指令与取终止(Prefech Abort)
    如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
     (5)、数据访问终止(DATAABORT)
    如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值