mini2440 中断实验
2012-08-09 10:44
239 查看
中断实验终于做成了,最严重的错误在于如何判断某一位是1:应该用&而不是用 && 。害我调了好久。哎。。
可以参考的代码:int.tar.gz
//interrupt.c
#include "s3c2440.h"
void EINT_Handle()
{//interrupt handler.
unsigned long offset = INTOFFSET;
unsigned long eintPnd;
if(5 == offset){//EINT8~23
//it must use EINTPND to notify which interrupt it is.Because GPG mode is int not input
GPBDAT |= (0x3<<6); //led2 3 off
eintPnd = EINTPEND;
if(eintPnd & (1<<8)){//key1 press (在有外部中断发生的时候,也就是eintPnd不是0,如果用&&的话此条件永远为真)
GPBDAT &= ~(1<<6);
}
if(eintPnd & (1<<11)){//key2 press
GPBDAT &= ~(1<<7);
}
}
//clear the interrupt.
if(5 == offset)
EINTPEND =(1<<8) | (1<<11) ;
SRCPND = 1<<offset;
INTPND = 1<<offset;
}
可以参考的代码:int.tar.gz
//interrupt.c
#include "s3c2440.h"
void EINT_Handle()
{//interrupt handler.
unsigned long offset = INTOFFSET;
unsigned long eintPnd;
if(5 == offset){//EINT8~23
//it must use EINTPND to notify which interrupt it is.Because GPG mode is int not input
GPBDAT |= (0x3<<6); //led2 3 off
eintPnd = EINTPEND;
if(eintPnd & (1<<8)){//key1 press (在有外部中断发生的时候,也就是eintPnd不是0,如果用&&的话此条件永远为真)
GPBDAT &= ~(1<<6);
}
if(eintPnd & (1<<11)){//key2 press
GPBDAT &= ~(1<<7);
}
}
//clear the interrupt.
if(5 == offset)
EINTPEND =(1<<8) | (1<<11) ;
SRCPND = 1<<offset;
INTPND = 1<<offset;
}
相关文章推荐
- 一起学mini2440裸机开发(十二)--mini2440的串口中断实验
- 一起学mini2440裸机开发(十)--mini2440外部中断实验
- mini2440串口轮询实验(先简单复习一下串口轮询模式,明天把中断模式和dma模式弄清楚)
- 一起学mini2440裸机开发(十一)--mini2440定时器0中断实验
- mini2440外部irq中断实验
- 一起学mini2440裸机开发(十二)--mini2440的串口中断实验
- mini2440 定时器中断实验
- Mini2440 裸机实验之LED程序、按键、中断
- 一起学mini2440裸机开发(十)--mini2440外部中断实验
- mini2440中断实验
- mini2440 uart串口实验(fifo模式+中断)
- 一起学mini2440裸机开发(十)--mini2440外部中断实验
- mini2440 按键中断LED 实验
- 一起学mini2440裸机开发(十一)--mini2440定时器0中断实验
- mini2440 RTC实时时钟中断和报警功能实验
- mini2440裸机试炼之—RTC闹钟中断,节拍中断
- STM32单片机学习(5) 定时器中断实验
- 外部中断与定时器中断实验(修改)
- 8086汇编学习小记-王爽汇编语言第十五章外中断及实验15
- 王爽汇编 实验13编写int 7cH中断例程(1)