⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interrupt_manage.c

📁 CCS下编写的EDMA数据传输程序
💻 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 + -