📄 init_interrupts.c
字号:
#include "main.h"
/********************************************************************************/
/***** Init_Interrupts() *****/
/********************************************************************************/
//Use_PF11--HS,Use_PF12--VS
extern bool composeFlag;
extern bool Flag_mdma;
void Init_Interrupts(void)
{
// configure interrupt
register_handler(ik_ivg8, DMA_Interrupt); // assign ISR DMA to interrupt vector
*pSICB_IAR1 = Peripheral_IVG(53,8); // assign interrupt channel 12 (DMA1_channel1) to IVG8
*pILAT |= EVT_IVG8; // clear pending IVG8(PPI) interrupts
asm("ssync;");
*pSICB_IMASK1 |= SIC_MASK(21); //#define SIC_MASK(x) (1 << (x)) /* Mask Peripheral #x interrupt */
asm("ssync;"); //SIC_MASK(16)=IVG11-PFB(15-0)
}
/////////////////////////////////////
EX_INTERRUPT_HANDLER(DMA_Interrupt)
{
Init_MemDMA0();
Flag_mdma=1;
}
//-----------------------------------------------------------------
EX_EXCEPTION_HANDLER(ex_handler_coreB) {
while(1);
}
//------------------------------Interrupt Service-----------------------------------------------
//已传输数据至p1[]或p2[]空间
/*EX_INTERRUPT_HANDLER(DMA_Interrupt)
{
int i,j,k;
int t;
unsigned char temp_r=0;
unsigned char temp=0;
dma_flag=0;
if(dma_count%2 == 0)
{
//此时为P1,即第一个缓冲区满,处理P1中数据,存到detective[]中
for(i=0;i<45;i++)
{
temp_r=0;
for(j=0;j<8;j++)
{
temp = p1[i*8+j]; //????????????先用数组,后面用不用改指针???????????
asm("nop;");
tem p_r+=(temp<<(7-j));
asm("nop;");
}
movement_detective[dma_count*45+i] = temp_r;
}
}
else
{
for(i=0;i<45;i++)
{
temp_r=0;
for(j=0;j<8;j++)
{
temp = p2[i*8+j]; //????????????先用数组,后面用不用改指针???????????
asm("nop;");
tem p_r+=(temp<<(7-j));
asm("nop;");
}
movement_detective[dma_count*45+i] = temp_r;
}
}
dma_flag=1;
dma_count+=1;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -