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

📄 uartdmatask.c

📁 ucosii 系统在s3c210系板上的成功移植 并有建立系统任务的应用示例
💻 C
字号:
#include "includes.h"
#define  SEND_DATA   (*(volatile unsigned char *) 0x30200000)
#define  SEND_ADDR   ((volatile unsigned char *) 0x30200000)

#define  FLASH_DATA   (*(volatile unsigned char *) 0x00fffffe)
#define  FLASH_ADDR   ((volatile unsigned char *) 0x00fffffe)
int g_data[10];
void DMA0Init(void)
{
	volatile unsigned char* p = SEND_ADDR;
	volatile unsigned char* pp = FLASH_ADDR;
	int i;
	SEND_DATA = 0x41;
	for (i = 0; i < 10/*128*/; i++){
	    *pp++ = 0x30 + i;
	    
	}
	pp = FLASH_ADDR;
	for (i = 0; i < 10/*128*/; i++){
		g_data[i]=*pp++;
	}
	/*p=SEND_ADDR; 
	pp = FLASH_ADDR;
	for (i = 0; i < 128; i++){
	    *p++ = *pp++;
	}*/
    /*Uart设置成DMA形式*/
    rUCON0 = rUCON0 & 0xff3 | 0x8;
    
    /****** DMA0 Initialize *****/

    rDISRC0 = (U32)(SEND_ADDR);
    rDISRCC0 = (0<<1)|(0<<0); //Src=AHB,Increment
    
    rDIDST0 = (U32)UTXH0;  // Tx FIFO address
    rDIDSTC0 = (1<<1)|(1<<0); //Dst=APB,Fixed;
    
    rDCON0 = (0<<31)|(0<<30)|(0<<29)|(0<<28)|(0 << 27) | (1 << 24) | (1 << 23) | (1 << 22) | (0 << 20) | (50);
        //handshake,Sync=APB,IntEn,   unit,   single,     dst=UART0,  HwReqMode,  NoAutoReload,Halfword,
    
    rDMASKTRIG0 = (1<<1); 	//DMA0En
}
void uartdma_Task()
{
	Uart_Init(0,115200);
    Uart_Select(0); 
    //Uart_SendString("123456");
    DmaINT_Init();
    DMA0Init();
    while(1)
	{
		while((rDSTAT0 & 0xfffff) == 0){
		rDMASKTRIG0 = (1<<1); 	//DMA0En
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -