📄 uartdmatask.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 + -