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

📄 main.c

📁 Embest ATEB9200开发板部分测试程序。
💻 C
字号:
//*----------------------------------------------------------------------------
//*         ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : main.c
//* Object              : main application written in C
//* Creation            : JPP 03/Jun/03 
//*
//*----------------------------------------------------------------------------
#include <stdio.h>
#include "AT91RM9200.h"

#define 	AT91DKC_SDRAM_BASE_ADDRESS	(( char *)(0x20100000))
#define 	BLOCK_SIZE	(1024 * 10)

//* External Function Prototype
extern void AT91F_DBGU_Printk(char *);
extern unsigned int AT91F_DBGU_Get( char *val);

extern void Usart_init (void);
extern void AT91F_US_Printk( char *buffer); // \arg pointer to a string ending by \0
extern void AT91F_US_Print_frame(char *buffer, unsigned short counter); // \arg pointer to a string ending by \0
extern void AT91F_US_Print_2_frame(char *buffer, unsigned short counter,char *buffer2,unsigned short counter2); // \arg pointer to a string ending by \0

static const char POLLING_header[]=
{
"\n\r  *** ATMEL POLLING ***\n\r"
};

static const char PDC_header[]=
{
"\n\r  *** ATMEL PDC ***\n\r"
};
static const char PDC1_header[]=
{
"\n\r  *** ATMEL PDC 1 ***\n\r"
};
static const char PDC2_header[]=
{
"\n\r  *** ATMEL PDC 2 ***\n\r"
};
volatile char message[80];

//*----------------------------------------------------------------------------
//* Function Name       : menu
//* Object              : Usart debug menu
//* Input Parameters    : None
//* Output Parameters   : None
//*----------------------------------------------------------------------------
void menu( char value)	
{
  unsigned int i,j;
  char *pt_char;
  switch (value) {
	case '0': //* info
		sprintf((char*) message,"AT91C_US1_CSR  0x%08X \n\r",(unsigned int) *AT91C_US1_CSR);
		 AT91F_DBGU_Printk((char*)message);
		break;
	case '1': //* Print in pooling
    		//* PDC 1 Frame
    		AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU, 
    		"Write in US1\n\r",sizeof("Write in US1\n\r"),0,0);
		AT91F_US_Printk("Test\n\r");

	break;
	case '2': //* Print in PDC
    		//* PDC 1 Frame
    		AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU, 
    		"Send Frame US1\n\r",sizeof("Send Frame US1\n\r"),0,0);
		AT91F_US_Print_frame("Send Frame US1\n\r",sizeof("Send Frame US1\n\r"));
	break;
	case '3': //* Print in PDC
    		//* PDC 1 Frame
    		AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU, 
    		"Send Frame US1\n\r",sizeof("Send Frame US1\n\r"),0,0);
		//* PDC  2 Frame
		AT91F_US_Print_2_frame((char *)PDC1_header,sizeof(PDC1_header),(char *)PDC2_header,sizeof(PDC2_header));
	break;
	case '4': //* Send Block 
 		pt_char =  AT91DKC_SDRAM_BASE_ADDRESS;
    		sprintf((char*) message,"init Block :0X%08X\n\r",pt_char);
    	        AT91F_DBGU_Printk((char*)message);
    		for (i=0; i < BLOCK_SIZE;i++)
    		{
		    *pt_char='0';
		    pt_char++;
    		}
 		pt_char = AT91DKC_SDRAM_BASE_ADDRESS;
    	        AT91F_DBGU_Printk("send \n\r");
    		sprintf((char*) message,"send  from 0X%08X sisez %d Kbytes\n\r",pt_char,BLOCK_SIZE);
    	        AT91F_DBGU_Printk((char*)message);
		AT91F_US_Print_frame(pt_char,BLOCK_SIZE);	

	break;
	case '5': //* Send Block 
 		pt_char = AT91DKC_SDRAM_BASE_ADDRESS;
    		sprintf((char*) message,"init Block :0X%08X\n\r",pt_char);
    	        AT91F_DBGU_Printk((char*)message);
    		for (i=0; i < (124*1024)/16;i++)
    		{
    			for (j=0; j <16;j++)
    			{
    			    *pt_char='0'+j; pt_char++;
    			}
    		}
 		pt_char = AT91DKC_SDRAM_BASE_ADDRESS;
    	        AT91F_DBGU_Printk("send 120K bytes on USART 1 \n\r");
    	        //* for transfert 124 K byte In first transfert (64Kbyte - 1 ) PDC max size end next at: 60 Kbyte +1 
		AT91F_US_Print_2_frame( AT91DKC_SDRAM_BASE_ADDRESS,(64*1024)-1,AT91DKC_SDRAM_BASE_ADDRESS+(64*1024)-1,(60*1024)+1);
	break;
		
	default:
		AT91F_DBGU_Printk("\n\r");
		break;
	}
}

//*----------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Main interrupt function 
//* Input Parameters    : none
//* Output Parameters   : TRUE
//*----------------------------------------------------------------------------
int Main( void )
//* Begin
{
    char value;
    //* Polling
    AT91F_DBGU_Printk((char*)POLLING_header);
    //* PDC 1 Frame
    AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU, (char *)PDC_header,sizeof(PDC_header),0,0);
    //* Wait end of frame
    while (AT91F_PDC_IsTxEmpty (AT91C_BASE_PDC_DBGU)==0){}
   //* PDC  2 Frame
    AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU, (char *)PDC1_header,sizeof(PDC1_header),(char *)PDC2_header,sizeof(PDC2_header));
    //* Wait end of frame
    while (AT91F_PDC_IsTxEmpty (AT91C_BASE_PDC_DBGU)==0){}

    AT91F_DBGU_Printk("0) info\n\r1) Write US1 \n\r2) Send 1 frame\n\r3) 2 littel Frame\n\r4) 10 K Bytes\n\r5) 120s K Bytes\n\r");
    
    //* Init Usart
    Usart_init();
    //* Infinit loop
    while(1)
    {
	if (AT91F_DBGU_Get(&value) == 0 ) menu(value);
    
    }

//* End
}

⌨️ 快捷键说明

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