📄 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 : 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 + -