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

📄 main.c

📁 在ads1.2下调试AT91RM9200的PWM功能测试程序源码
💻 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            : ODi   06/26/2002
//*
//*----------------------------------------------------------------------------

#include "AT91RM9200.h"
#include "lib_AT91RM9200.h"
#include "timer.h"
#include "usart.h"
#include "eb55.h"
// AT91F_DBGU_Printk is defined in init.c
extern void AT91F_DBGU_Printk(char *);
#define	MAX_COMMAND_NUMBER	31
#define	MAX_COMMAND_LENGTH	30
extern char	DBGU_RX_OVER_FLAG,RS232_RX_OVER_FLAG;
extern char flagUsTxEmpty;			//串口发送空闲
extern char flagUsTxEmpty_DBGU;
extern void Timer2_WaveformInit ( void );

//extern PS_USART_BUFFER;

extern S_USART_BUFFER USART2_BUFFER;
extern S_USART_BUFFER DEBUG_BUFFER;

//*----------------------------------------------------------------------------
//* \fn    AT91F_RS232_putc
//* \brief This function is used to send a character to the RS232 channel
//*----------------------------------------------------------------------------
void AT91F_RS232_putc(char buffer) // \arg pointer to a character
{
	while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_US2));
	AT91F_US_PutChar(AT91C_BASE_US2,buffer);
	
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_RS232_getc
//* \brief This function is used to receive a character to the RS232 channel
//*----------------------------------------------------------------------------
char AT91F_RS232_getc(void)
{
	while (!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_US2));
	return AT91F_US_GetChar(AT91C_BASE_US2);
}

char AT91F_DEBUG_getc(void)
{
	while (!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU));
	return AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
}

void	DelayMS(unsigned int tim)
{
	unsigned int i,j;
	for(i=0;i<tim;i++)
	{
		for(j=0;j<200;j++);
	}
}

void	CopyCommand(char *buf,int i)
{

}

char RS232CommandParse(char *str,char *buff)
{

	int k;
	for(k=0;k<MAX_COMMAND_LENGTH;k++)
	{
		if(str[k]!=0x0)
		{
			buff[k]=str[k];
		}
		else
		{
			buff[k]=0x0;
			break;
		}
	}

	return 0;
}
void	DisplayMenu(void)
{
	AT91F_DBGU_Printk("\r\nBluetooth Test Menu\n\r");
	AT91F_DBGU_Printk("1:AT  ; 2:AT+BAUD=  ;3:AT+BAUD?\n\r");
	AT91F_DBGU_Printk("4:AT+AUTH= ;5:AT+AUTH? ;6:AT+PASSWORD= ;7:AT+PASSWORD?\n\r");
	AT91F_DBGU_Printk("8:AT+NAME= ;9:AT+NAME? ;10:AT+CLASS ;11:AT+CALSS?\n\r");
	AT91F_DBGU_Printk("12:AT+ROLE= ;13:AT+ROLE? ;14:AT+CLEARADDR ;15:AT+SNIFF=\n\r");
	AT91F_DBGU_Printk("16:AT+SNIFF? ;17:AT+RESET ;18:AT+SCANTIME= ;19:AT+SCANTIME?\n\r");
	AT91F_DBGU_Printk("20:AT+BIND= ;21:AT+BIND? ;22:AT+VERSION? ;23:AT+LED=\n\r");
	AT91F_DBGU_Printk("24:AT+RADDR= ;25:AT+RADDR? ;26:AT+LADDR? :27:AT+RESTART\n\r");
	AT91F_DBGU_Printk("28:AT+UARTMODE= ;29:AT+UARTMODE? ;30:AT+INQ ;31:AT+CANCEL\n\r");
	AT91F_DBGU_Printk("32:Setup Command ;33:Setup Data \n\r\n\r");
	
}

void AT91F_DBGU_Printk1(
	char *buffer) // \arg pointer to a string ending by \0
{
	int i;
	while(flagUsTxEmpty_DBGU!=TRUE);
	for(i=0;i<TX_MAX;i++)
	{
		if(*buffer!=0x0) DEBUG_BUFFER.TxBuffer[i]=*buffer++;
		else break;
	}
	DEBUG_BUFFER.TxBuffer[i]=0x0a;
	DEBUG_BUFFER.TxBuffer[i+1]=0x00;
	DEBUG_BUFFER.TxCurIndex=strlen(DEBUG_BUFFER.TxBuffer);
	DEBUG_BUFFER.RxCount=0;
	DEBUG_BUFFER.TxCount=0;
	flagUsTxEmpty_DBGU=FALSE;
	AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
}

int main()
{	
		char	OK_Flag;
		int i,j;
		char	str[MAX_COMMAND_LENGTH],buff[MAX_COMMAND_LENGTH],buff2[MAX_COMMAND_LENGTH];
		char c,TestStr1[]="AAAAAAAAAAAAAAAAAAAA",TestStr2[]="33333333333333333333";
		char IrdaMessage[] = "\
	\n\n\r-I- ======================================\n\r\
	-I- ======================================\n\r";
		char DbguMessage[] = "\
	\n\n\r-I- ======================================\n\r\
	-I- ======================================\n\r";

	
//	Timer0_Init();
	Timer1_Init();
	Timer2_WaveformInit();

	DEBUGport_Init();
	DEBUG_BUFFER.RxCount=0;
	DEBUG_BUFFER.TxCount=0;

	// Send a welcome message
	AT91F_PDC_SendFrame(
		(AT91PS_PDC) &(AT91C_BASE_DBGU->DBGU_RPR),
		DbguMessage, strlen(DbguMessage), 
		(char *) 0, 0);
	// Send a welcome message
/*	AT91F_PDC_SendFrame(
		(AT91PS_PDC) &(AT91C_BASE_US0->US_RPR),
		IrdaMessage, strlen(IrdaMessage), 
		(char *) 0, 0);
*/
	AT91F_PDC_SendFrame(
		(AT91PS_PDC) &(AT91C_BASE_DBGU->DBGU_RPR),
		IrdaMessage, strlen(IrdaMessage), 
		(char *) 0, 0);
	// wait for the end of transmition
	while ( !(AT91C_BASE_US2->US_CSR & AT91C_US_TXEMPTY) );

	AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_US2);
	AT91F_US_DisableTx((AT91PS_USART)AT91C_BASE_US2);

	i=0;
	DisplayMenu();					
	for(j=0;j<20;j++)str[j]=0x0;
	j=0;
	//允许中断
	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_SYS); 
	flagUsTxEmpty=TRUE;
	flagUsTxEmpty_DBGU=TRUE;
	   while(1)
	   {
	   
		   if(DBGU_RX_OVER_FLAG==1)
		   {
		   		DBGU_RX_OVER_FLAG=0;
				for(i=0;i<RX_MAX;i++)
				{
					if(DEBUG_BUFFER.RxBuffer[i]!=0x0) str[i]=DEBUG_BUFFER.RxBuffer[i];
					else break;
				}
				DEBUG_BUFFER.RxCount=0;
    			DEBUG_BUFFER.TxCount=0;
				while(flagUsTxEmpty_DBGU!=TRUE);
				for(i=0;i<TX_MAX;i++)
				{
					if(str[i]!=0x0) DEBUG_BUFFER.TxBuffer[i]=str[i];
					else break;
				}
				DEBUG_BUFFER.TxBuffer[i]=0x0a;
				DEBUG_BUFFER.TxBuffer[i+1]=0x00;
				DEBUG_BUFFER.TxCurIndex=strlen(DEBUG_BUFFER.TxBuffer);
				flagUsTxEmpty_DBGU=FALSE;
				AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);

			   DelayMS(5);
			   if(!RS232CommandParse(str,buff))
			   {
				   while(flagUsTxEmpty_DBGU!=TRUE);
				   for(i=0;i<TX_MAX;i++)
				   {
					   if(buff[i]!=0x0) DEBUG_BUFFER.TxBuffer[i]=buff[i];
					   else break;
				   }
				   DEBUG_BUFFER.TxBuffer[i]=0x0a;
				   DEBUG_BUFFER.TxBuffer[i+1]=0x00;
				   DEBUG_BUFFER.TxCurIndex=strlen(DEBUG_BUFFER.TxBuffer);
				   DEBUG_BUFFER.RxCount=0;
				   DEBUG_BUFFER.TxCount=0;
				   flagUsTxEmpty_DBGU=FALSE;
				   AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
			   }
			   for(j=0;j<20;j++)str[j]=0x0;
			   j=0;
//			   DisplayMenu1();		   
//				AT91F_US_EnableRx((AT91PS_USART) AT91C_BASE_DBGU);
		   }
		   else
  	   	   if(RS232_RX_OVER_FLAG==1)
	   	   {
	   	   		RS232_RX_OVER_FLAG=0;
				 for(i=0;i<RX_MAX;i++)
				 {
					 if(USART2_BUFFER.RxBuffer[i]!=0x0) str[i]=USART2_BUFFER.RxBuffer[i];
					 else break;
				 }
				 USART2_BUFFER.RxCount=0;
				 USART2_BUFFER.TxCount=0;
				 DEBUG_BUFFER.RxCount=0;
				 DEBUG_BUFFER.TxCount=0;
				 while(flagUsTxEmpty_DBGU!=TRUE);
				 for(i=0;i<TX_MAX;i++)
				 {
					 if(str[i]!=0x0) DEBUG_BUFFER.TxBuffer[i]=str[i];
					 else break;
				 }
				 DEBUG_BUFFER.TxBuffer[i]=0x0a;
				 DEBUG_BUFFER.TxBuffer[i+1]=0x00;
				 DEBUG_BUFFER.TxCurIndex=strlen(DEBUG_BUFFER.TxBuffer);
				 flagUsTxEmpty_DBGU=FALSE;
				 AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
				
				DelayMS(5);
				for(j=0;j<20;j++)str[j]=0x0;
				j=0;
	   	   }

	   }
	
}

⌨️ 快捷键说明

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