如将P0.8、P0.9设置为TxD1、RxD1功能(P0.8、P0.9均对应2位,故其应为17:16、19:18)
PINSEL0 = ( PINSEL0 & 0xFFF0FFFF ) | ( 0x05 << 16 ); //一次性设置完2个引脚,对应值
这里0对应的16-19 位 //需要参照寄存器功能表
外部中断相关寄存器
1.外部中断控制寄存器(EXTPOLAR)
控制中断的有效信号,
设置为1时,EINTx引脚输入高电平或者上升沿有效
设置为0时,EINTx引脚输入低电平或者下降沿有效
位 | 7-4 | 3 | 2 | 1 | 0 |
功能 | EXPOLAR3 | EXPOLAR2 | EXPOLAR1 | EXPOLAR0 |
2.外部中断方式控制寄存器(EXTMODE)
控制中断的方式(电平触发or边沿触发)
当EXTMODEx设置为0时,输入信号为电平触发
当EXTMODEx设置为1时,输入电平为边沿触发
位 | 7-4 | 3 | 2 | 1 | 0 |
功能 | EXTMODE3 | EXTMODE2 | EXTMODE1 | EXTMODE0 |
3.外部中断唤醒寄存器(EXTWAKE)
当EXTWAKEx设置为1时,对应的外部中断将处理器从掉电模式唤醒
4.外部中断标志寄存器(EXTINT)
若引脚上出现符合要求的信号,EXTINT寄存器中对应的中断标志位被置为,向寄存器的EINT0-EINT3位置1,可清除对应的中断。
位 | 7-4 | 3 | 2 | 1 | 0 |
功能 | EINT3 | EINT2 | EINT1 | EINT0 |
外部中断应用实例:设置EINT0为下降沿触发中断。
1.设置引脚功能,p0.16设置为外部中断功能。
2.设置中断方式寄存器,设置中断极性寄存器。
//将引脚P0.16对应的位数置0,与0x01或运算,得到01,选择外部中断功能
PINSEL1 = (PINSEL1 & 0xFFFFFFFC) | 0x01;
//0x01二进制表示为 00000001,设置为边沿触发
EXTMODE = EXTMODE | 0x01;
//0x0E二进制表示为0000 1110,设置为下降沿触发
EXTPOLAR = EXTPOLAR & 0x0E
中断使能寄存器(VICIntEnable)
位 | 31 | ... | 18 | 17 | ... | 2 | 1 | 0 |
功能 | 保留 | A/D | 外部中断3 | ARM内核 | ----- | WDT(看门狗) |
向某位写入1时,允许对应的中断源产生中断。
中断使能清零寄存器(VICIntEnClr)
位 | 31 | ... | 18 | 17 | ... | 2 | 1 | 0 |
功能 | 保留 | A/D | 外部中断3 | ARM内核 | ----- | WDT(看门狗) |
与中断使能寄存器相反,向某位写入1时,禁止对应的中断源产生中断。
中断选择寄存器(VICIntSelect)
位 | 31 | ... | 18 | 17 | ... | 2 | 1 | 0 |
功能 | 保留 | A/D | 外部中断3 | ARM内核 | ----- | WDT(看门狗) |
对应位写入1时,该位对应的中断源为FIQ中断,否则为IRQ中断。
向量控制寄存器(VICVectCnt10~15)
位 | 7 | 6 | 5 | 4-0 |
功能 | —— | —— | EN | 中断源序号 |
低四位:分配给此优先级向量IRQ中断的中断源序号
第五位:EN = 1,使能当前优先级的向量IRQ中断,否则禁止。
向量控制寄存器它的作用是存储中断处理程序的入口地址,在中断发生时,CPU会通过该寄存器找到对应的中断处理程序并跳转执行。
向量地址寄存器(VICVectAddr0~15)
位 | 31-0 |
功能 | 中断服务程序入口地址 |
该寄存器中存放对应优先级向量IRQ中断服务程序的入口地址。