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

📄 app.c

📁 在ATEML公司EB40/40a/42/63/55开发板上运行的uCOS-II v2.0。
💻 C
字号:
#include    "periph/stdc/std_c.h"
#include    "periph/usart/lib_usart.h" 
#include    "periph/usart/usart.h"
#include    "drivers/com/com.h"
#include    "APP.h"

//* Include files for EB55
#ifdef AT91M55800
#include    "eb55.h"
//#include    "parts/m55800/reg_m55800.h"
#include    "parts/m55800/lib_m55800.h"

#define MCKI 32000000	            //Main colock 32MHz
#endif

#define DRIVER_MODE 0               // Driver mode
#define PERIPH_MODE 1               // Periphiral mode
#define BAUD_RATE 115200			//115200
#define BAUDRATE_cd       (MCKI/(BAUD_RATE*16) // CD = ?

//*----------------------------------------------------------------------------
//* Function Name       : LED_flesh
//* Object              : 
//* Input Parameters    : none
//* Output Parameters   : none
//*----------------------------------------------------------------------------
void LED_flesh(void)
{
	u_int time,i;					    //time -> 延迟时间
	at91_pio_write(&PIOB_DESC,			//定义外围PIO的描述符
			LED_MASK,		        	//根据EB55的硬件定义的LED屏蔽
			LED_OFF);			        //LED 关闭
	//将PIOB口的8个LED引脚设置成输出
	at91_pio_open(&PIOB_DESC,
			LED_MASK,
			PIO_OUTPUT); 			    //输出状态
	time=20;
		for(i=LED1;i<=LED8;i<<=1) {		//顺序从LED1~LED8
		//将第i个LED置亮
		at91_pio_write(&PIOB_DESC,
				i,
				LED_ON);
		Delay(time);
		//将第i个LED置灭
		at91_pio_write(&PIOB_DESC,
				i,
				LED_OFF);
		}
		for(i=LED8;i>=LED1;i>>=1) { 	//顺序从LED8~LED1
		at91_pio_write(&PIOB_DESC,
				i,
				LED_ON);
		Delay(time);
		at91_pio_write(&PIOB_DESC,
				i,
				LED_OFF);
			}
}

//*----------------------------------------------------------------------------
//* Function Name       : Read_UART
//* Object              : USART input
//* Input Parameters    : ch   -> channels ...
//* Output Parameters   : none
//*----------------------------------------------------------------------------
int Read_UART(unsigned short int ch) // ch -> channels ...
{
	u_int Keyin;
	
	at91_getch(&COM,&Keyin);
 
    return Keyin;
}

//*----------------------------------------------------------------------------
//* Function Name       : Init_USART
//* Object              : USART init 
//* Input Parameters    : ch   -> channels ...
//*                       mode -> 0:driver 1:peripheral 
//* Output Parameters   : none
//*----------------------------------------------------------------------------
void Init_USART(unsigned short int ch,char mode) /* ch -> channels ...
                                                   mode -> 0:driver 1:peripheral */
{
	u_short cd_baud;
	
    ComDesc COM; 					    //定义串口通信的外围
    if(ch == 0)	                        //初始化USART0
	  COM.usart=&USART0_DESC;		    //指定USART0
    if(ch == 1)	                        //初始化USART0
	  COM.usart=&USART1_DESC;			//指定USART1
	//根据主时钟和波特率得到分频数
	  cd_baud=at91_baud_com(MCKI,		//主时钟
			   BAUD_RATE);		        //波特率
    
    if (mode == DRIVER_MODE)
    {
	    at91_open_com(&COM,
	        	COM_8_BIT|			    //8位数据位
	        	COM_PAR_NONE|			//无奇偶校验
	        	COM_NBSTOP_1|			//1位停止位
	        	COM_FLOW_CONTROL_NONE,	//无流控制
	        	cd_baud);		    	//分频数
		at91_print(&COM,"\n\r >>> UART0 initialization ... \n\r");
	}
	else if (mode == PERIPH_MODE)
    {
		//打开外围USART0
		at91_usart_open(&USART0_DESC,	//指向外围USART0的描述符
				US_ASYNC_MODE,		    //标准异步通信
				cd_baud,		        //波特率常数
				0);       		        //没有timeguard
		at91_usart_send_frame(&USART0_DESC,"\n\r >>> UART0 initialization ... \n\r",30);
    }
}
//*----------------------------------------------------------------------------
//* Function Name       : Delay
//* Object              : delay by software 
//* Input Parameters    : none
//* Output Parameters   : none
//*----------------------------------------------------------------------------
void Delay(u_int time) {
	u_int i;
	for(i=0;i<time*1000;i++);
}


//*----------------------------------------------------------------------------
//* Function Name       : ARMTargetInit
//* Object              : Initialize an ARM Target board 
//* Input Parameters    : none
//* Output Parameters   : none
//*----------------------------------------------------------------------------
void ARMTargetInit(void)
{
    
	#ifdef AT91_DEBUG_NONE
    char str[] = "\n\n uCOS-II for AT91 TEST(Flash) : \n\r";
    #else
    char str[] = "\n\n uCOS-II for AT91 TEST(RAM) : \n\r";
	#endif
    
    //来回依次逐个亮灭
    LED_flesh();
    Init_USART(0,1);				//初始化USART
    at91_usart_send_frame(&USART0_DESC,(char *)str,30);
    //Read_UART(0);
    Delay(5);
}

#if 0
void _Link(void)
{
    char CR[1] = {0x0D};
    char LF[1] = {0x0A};
    int i=0;

  while(1)
   {  
       at91_terminal_write(&terminal_1,&MSG[i][0]);
       at91_terminal_write(&terminal_1,&MSG[i][1]);
       
	   if((int)(MSG[i][0])==0)
	   break;
       i++;
    }
}
#endif

⌨️ 快捷键说明

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