📄 mdma_exp.c
字号:
#include <cdefBF561.h>
#include <ccblkfn.h>
#include <sys/exception.h>
#include <string.h>
#include "Exp_Config.h"
#include "sys_func.h"
#define DATA_LEN (2000)
unsigned short Src_Buf[DATA_LEN];
unsigned short Dest_Buf[DATA_LEN];
int nResult=0;
int nCopyOver=0;
void MEM_DMA_Copy(void)
{
int i;
nCopyOver=0;
for(i=0;i<DATA_LEN;i++)
{
Src_Buf[i] = i;
Dest_Buf[i] = 0;
}
*pMDMA1_D0_START_ADDR = Dest_Buf;
*pMDMA1_D0_X_COUNT = (DATA_LEN>>1);
*pMDMA1_D0_X_MODIFY = 2;
*pMDMA1_S0_START_ADDR = Src_Buf;
*pMDMA1_S0_X_COUNT = (DATA_LEN>>1);
*pMDMA1_S0_X_MODIFY = 2;
*pMDMA1_D0_PERIPHERAL_MAP = 0x0040;
*pMDMA1_S0_PERIPHERAL_MAP = 0x0040;
*pMDMA1_S0_CONFIG = 0x0025;
*pMDMA1_D0_CONFIG = 0x00a7;
}
EX_INTERRUPT_HANDLER(MDMA_ISR)
{
*pMDMA1_D0_IRQ_STATUS=0x1;
nCopyOver=1;
nResult=memcmp(Src_Buf,Dest_Buf,DATA_LEN);
}
void Init_MDMA_Interrupt(void)
{
*pSICB_IAR6 = ((*pSICB_IAR6)&0xff0fffff)|(1<<20);
register_handler(ik_ivg8, MDMA_ISR);
*pSICB_IMASK1 |= (1<<21);
}
void MDMA_Exp(void)
{
Init_MDMA_Interrupt();
MEM_DMA_Copy();
while (1)
{
if (nCopyOver==0)
{
SetLED(0x3C);
}else{
if (nResult==0){
SetLED(0xff);
}else{
SetLED(0x0);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -