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

📄 main.c.svn-base

📁 ucosII在ARM7上的移植源代码
💻 SVN-BASE
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"

#define  UART_BPS	115200			// 定义通讯波特率

uint8 const  SEND_STRING[] = "Hello World!123321ZZZ\r\n";

// P0.7为蜂鸣器的控制I/O
#define   BEEP          (1<<7) 
#define   KEY           (1<<20)     

// LED控制宏函数定义。LED1--LED4的控制I/O为P2.28--P2.31
#define   LED_ADJ	        28
#define   LED_IOCON	        (0xFF<<LED_ADJ)
#define   LED_OFF() 	    IO2SET=LED_IOCON
#define   LED_DISP(dat) 	LED_OFF(); IO2CLR=((dat)<<LED_ADJ)


#define	TaskStkLengh	64			//定义用户任务堆栈长度
 
OS_STK	TaskStk0[TaskStkLengh];		//Define the Task0 stack 定义用户任务0的堆栈
OS_STK	TaskStk1[TaskStkLengh];		//Define the Task1 stack 定义用户任务1的堆栈
OS_STK	TaskStk2[TaskStkLengh];		//Define the Task2 stack 定义用户任务2的堆栈
OS_STK	TaskStk3[TaskStkLengh];		//Define the Task3 stack 定义用户任务3的堆栈
OS_STK	TaskStk4[TaskStkLengh];		//Define the Task4 stack 定义用户任务4的堆栈

void 	Task0(void *pdata);			//Task0 任务0
void 	Task1(void *pdata);			//Task1 任务1
void 	Task2(void *pdata);			//Task2 任务2
void 	Task3(void *pdata);			//Task3 任务3
void 	Task4(void *pdata);			//Task4 任务4

/*********************************************************************************************************
**                            主函数
********************************************************************************************************/
int main (void)
{
	OSInit ();																										
	OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);	//led
	OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);	//beep
	//OSTaskCreate (Task2,(void *)0, &TaskStk2[TaskStkLengh - 1], 4);	//lcd-tft	
	OSTaskCreate (Task3,(void *)0, &TaskStk3[TaskStkLengh - 1], 5);	//key-beep
	OSTaskCreate (Task4,(void *)0, &TaskStk4[TaskStkLengh - 1], 6);	//sport
	OSStart ();
	return 0;															
}


/*********************************************************************************************************
**                            Task0 任务0
********************************************************************************************************/
void Task0(void *pdata)
{   const uint8  DISP_TAB[24] = { 0x0F,0x00,0x0F,0x00,0x0F,0x00,0x0F,0x00,
                                 0x01,0x02,0x04,0x08,0x04,0x02,0x01,0x00, 
                                 0x05,0x0A,0x05,0x0A,0x05,0x0A,0x05,0x00 }; 
    uint8  i;   
	pdata = pdata;
	TargetInit ();
		
	PINSEL0 = 0x00000000;		// 设置P0口管脚连接GPIO  
	IO0DIR = BEEP;	            // 设置蜂鸣器控制口为输出
    IO0SET = BEEP;
	IO2DIR = LED_IOCON;         // 设置LED1--LED4的控制口为输出
    LED_OFF();
    
	while (1)
	{   for(i=0; i<24; i++)
        {   LED_DISP(DISP_TAB[i]);          // 输出LED显示数据
            OSTimeDly(OS_TICKS_PER_SEC/2);	// 延时0.5S
        } 		
	}
}
/*********************************************************************************************************
**                            Task1 任务1
********************************************************************************************************/
void Task1(void *pdata)
{
	
	PINSEL0 = 0x00000000;		// 设置P0口管脚连接GPIO  
	IO0DIR = BEEP;	            // 设置蜂鸣器控制口为输出
    IO0SET = BEEP;
	IO2DIR = LED_IOCON;         // 设置LED1--LED4的控制口为输出
	pdata = pdata;	
	TargetInit ();	
    LED_OFF();
	
	while (1)
	{	
	    OSTimeDly(OS_TICKS_PER_SEC*3);     // 延时10S	    
	    IO0CLR = BEEP;  // 控制蜂鸣器响
        OSTimeDly(OS_TICKS_PER_SEC/2);			    
        IO0SET = BEEP;
	}
}  
/*******************************************************
* 名称: Task2
* 功能: 显示图形演示。
* 入口参数: 无
* 出口参数: 无
*******************************************************/
void  Task2(void *pdata)
{  uint32  x, y;

   PINSEL0 = 0x00000000;
   PINSEL1 = 0x00000000; 
   
   pdata = pdata;
   TargetInit ();  
     
      
 while(1)
 { 
   GUI_Initialize(); 
   TftSetWindow(0,0, 239, 319); 
   TftSetWrite(0,0);   
   
  for(y=0; y<320; y++)
   {  for(x=0; x<240; x++)
      {  
      TftSendDat(0xFFFF); 
      }
   }
   
   for(y=10;y<310;y++)
   {
     GUI_HLine(9,y,220,0x0230);  
     y=y+5;
   }
    
  for(x=10;x<210;x++)
  {
   GUI_RLine(x,8,300,0x3057);
   x=x+5;
  }
  
  OSTimeDly(OS_TICKS_PER_SEC*2); 
 }  
}
/*******************************************************
* 名称: Task3
* 功能: 显示图形演示。
* 入口参数: 无
* 出口参数: 无
*******************************************************/
void  Task3(void *pdata)
{  uint32  x, y;
   uint32  no;
   PINSEL0 = 0x00000000;
   PINSEL1 = 0x00000000;   
   IO0DIR = BEEP;	            // 设置蜂鸣器控制口为输出
   IO0SET = BEEP;   
   pdata = pdata;
   no = 0;
   TargetInit ();
 while(1)
 {
  if((IO0PIN&KEY)==0)
  {
   IO0CLR = BEEP;  // 控制蜂鸣器响
   OSTimeDly(OS_TICKS_PER_SEC/10);			    
   IO0SET = BEEP;
  }
 } 
 
}

/****************************************************************************
* 名    称:UART0_Ini()
* 功    能:初始化串口1。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  UART0_Init(void)
{  
    uint16 Fdiv;

    U0LCR = 0x83;						// DLAB = 1,可设置波特率
    Fdiv = (Fpclk / 16) / UART_BPS;		// 设置波特率
    U0DLM = Fdiv / 256;							
    U0DLL = Fdiv % 256;						
    U0LCR = 0x03;
}
/****************************************************************************
* 名    称:UART0_SendByte()
* 功    能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data		要发送的数据
* 出口参数:无
****************************************************************************/
void  UART0_SendByte(uint8 data)
{  
    U0THR = data;				    	// 发送数据
    
    while( (U0LSR&0x40)==0 );	    	// 等待数据发送完毕
}

/****************************************************************************
* 名    称:UART0_SendStr()
* 功    能:向串口发送一字符串
* 入口参数:srt		要发送的字符串的指针
* 出口参数:无
****************************************************************************/
void  UART0_SendStr(uint8 const *str)
{  
    while(1)
    {  
        if( *str == '\0' ) break;
        UART0_SendByte(*str++);	    	// 发送数据
    }
}

/****************************************************************************
* 名    Task4()
* 功    能:向串口UART0发送字符串"Hello World!"
****************************************************************************/
void  Task4(void *pdata)
{  
    PINSEL0 = 0x00000005;		    //p0.1~2设置I/O连接到UART0
    pdata = pdata;
	TargetInit ();
	
    UART0_Init();
    while(1)	
    {  
        UART0_SendStr(SEND_STRING);
        OSTimeDly(OS_TICKS_PER_SEC);	
    }
}/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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