interrupt_manage.c

来自「CCS开发的基于DSP的数据采集和显示程序」· C语言 代码 · 共 61 行

C
61
字号
#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 + =
减小字号Ctrl + -
显示快捷键?