DMA即direct memory access的缩写,即“直接内存存取”。它有什么用呢?它可以不通过cpu来将一个储存空间的数据转移到另一个储存空间,从而大大的降低了系统的负担,让cpu可以执行其他的操作。这对于嵌入式系统来说是很重要的。
这个实验就是要将一个存在sorcestring[]中的字符串“this is a test string used to demonstrate DMA transfer”通过DMA传到deststring[]中去。
主函数如下:
void main(void){
DMA_DESC dmaChannel;//配置结构体
char sourceString[] = "This is a test string used to demonstrate DMA transfer.";//源字符
char destString[ sizeof(sourceString) ];//目的字符串的大小与源字符串相同
INT8 i;
INT8 errors = 0;
initDma();//初始化DMA
//Clearing the destination
memset(destString, 0, sizeof(destString) );//目的字符串清零
// Setting up the DMA channel.
SET_WORD(dmaChannel.SRCADDRH, dmaChannel.SRCADDRL, &sourceString); // 读取源字符串的地址
SET_WORD(dmaChannel.DESTADDRH, dmaChannel.DESTADDRL, &destString); //目的字符串的地址
SET