📄 interrupt_manage.c
字号:
#include "interrupt_manage.h"
uint32 IRQ_eventTable_user[32+1];
uint32 IRQ_intTable_user[16];
void setMux(int32 intNum, int32 eventId)
{
uint32 shift, mask, addr_MUX, v;
if((intNum >= 4) && (intNum <= 9))
{
addr_MUX = 0x019C0004; // MUXL
shift = 5*(intNum-4)+(intNum>6 ? 1: 0);
}
else if((intNum >= 10) && (intNum <= 15))
{
addr_MUX = 0x019C0000; // MUXH
shift = 5*(intNum-10)+(intNum>12 ? 1: 0);
}
mask = 31<<shift;
v = *(volatile uint32*)addr_MUX;
v = v & ~mask;
v = v | ((eventId<<shift)&mask);
*(volatile uint32*)addr_MUX = v;
}
void IRQ_map_user(uint32 eventId, uint32 intNum)
{
IRQ_intTable_user[intNum] = eventId;
IRQ_eventTable_user[eventId] = 1<<intNum;
setMux(intNum, eventId);
}
void IRQ_enable_user(uint32 eventId)
{
IER |= IRQ_eventTable_user[eventId];
}
void IRQ_clear_user(uint32 eventId)
{
ICR = IRQ_eventTable_user[eventId];
}
void IRQ_nmiEnable_user()
{
IER |= 0x00000002;
}
void IRQ_globalEnable_user()
{
CSR |= 0x00000001;
}
uint32 IRQ_globalDisable_user()
{
uint32 gie = CSR;
CSR &= 0xFFFFFFFE;
return gie;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -