- 210里面有很多种中断有内部中断有外部中断。
- 什么是内部中断和外部中断?
- SoC支持的中断类型中有一类叫外部中断。内部中断就是指的中断源来自SoC内部(一般是内部外设),譬如串口、定时器等部件产生的中断;外部中断是SoC外部的设备,通过外部中断对应的GPIO引脚产生的中断。(区别就是中断源一个在内部,一个在外部)。
关键性的寄存器:EXT_CON, EXT_PEND, EXT_MASK.
EXT_CON:配制外部中断的触发方式。(例如高低电平触发,上下沿触发等方式。)
EXT_PEND寄存器是中断挂起寄存器。当发生了中断后,硬件会自动将这个寄存器中该中断对应的位置1.我们处理完这个中断后就会置0
EXT_MASK寄存器就是各个外部中断的使能、禁止开关
电平触发特点:只要电平满足条件就会不停触发中断。(对于按键来说一般就是按着的那个过程。)
边沿触发特点:边沿触发不关心你原本的电平是搞还是低,只关心变化是从高到低还是从低到高的这个过程。(对于按键来说就是按下去的那一瞬间)
#define EXT_INT_0_CON 0XE0200E00
#define EXT_INT_2_CON 0XE0200E08
#define EXT_INT_0_PEND 0XE0200F40
#define EXT_INT_2_PEND 0XE0200F48
#define EXT_INT_0_MASK 0XE0200F00
#define EXT_INT_2_MASK 0XE0200F08
#define rEXT_INT_0_CON (*(volatile unsigned int *)EXT_INT_0_CON)
#define rEXT_INT_2_CON (*(volatile unsigned int *)EXT_INT_2_CON)
#define rEXT_INT_0_PEND (*(volatile unsigned int *)EXT_INT_0_PEND)
#define rEXT_INT_2_PEND (*(volatile unsigned int *)EXT_INT_2_PEND)
#d