📄 main.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
* 1.0 13/Aug/03 JPP : Add the PDC block management
******************************************************************************/
// Include Standard LIB files
#include "Board.h"
#include "main.h"
#include "AT91SAM7S64a.H" /* AT91SAMT7S64 definitions */
#include "lib_AT91SAM7S64a.h"
#define BUFF_BASE_ADDR (( char *)(0x1C00))
#define AT91DKC_BASE_ADDRESS (( char *)(0x00100000))
#define BLOCK_SIZE (1024 * 10)
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_US0_CSR %X\n\r",(unsigned int) *AT91C_US0_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 US0\n\r",sizeof("Write in US0\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 US0\n\r",sizeof("Send Frame US0\n\r"),0,0);
AT91F_US_Print_frame("Send Frame US0\n\r",sizeof("Send Frame US0\n\r"));
break;
case '3': //* Print in PDC
//* PDC 1 Frame
AT91F_US_SendFrame((AT91PS_USART) AT91C_BASE_DBGU,"Send Frame US0\n\r",sizeof("Send Frame US0\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_BASE_ADDRESS;
sprintf((char*) message,"init Block :%X\n\r",pt_char);
AT91F_DBGU_Printk((char*)message);
for (i=0; i < BLOCK_SIZE;i++)
{
*pt_char='0';
pt_char++;
}
pt_char = AT91DKC_BASE_ADDRESS;
AT91F_DBGU_Printk("send \n\r");
sprintf((char*) message,"send from %X 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_BASE_ADDRESS;
sprintf((char*) message,"init Block :%X\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_BASE_ADDRESS;
AT91F_DBGU_Printk("send 30K bytes on USART \n\r");
//* for transfert 10 K byte In first transfert (10Kbyte - 1 ) PDC max size end next at: 20 Kbyte +1
AT91F_US_Print_2_frame( AT91DKC_BASE_ADDRESS,(10*1024)-1,AT91DKC_BASE_ADDRESS+(10*1024)-1,(20*1024)+1);
break;
case '6': //* Set time out
AT91F_DBGU_Printk("Set Time out\n\r");
// *Enable usart SSTO
AT91F_US_STT0();
break;
default:
AT91F_DBGU_Printk("\n\r");
break;
}
}//* End
/******************************************************************************
* Function Name : main
* Object : Main function
* Input Parameters : none
* Output Parameters : TRUE
*******************************************************************************/
int main( void )
//* Begin
{
char value;
//* Init DBGU
AT91F_DBGU_Init();
//* 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 US\n\r2)Send 1 frame\n\r3)2 smal Frame\n\r4)10 KBytes\n\r5)30 KBytes\n\r6)Time out\r\n");
//* Init Usart
Usart_init();
//* Infinit loop
while(1)
{
if (AT91F_DBGU_Get(&value) == 0 ) menu(value);
}// End while
}//* End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -