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

📄 main.c

📁 一个基于lpc2220的uCosII操作系统的移植
💻 C
字号:
#include "config.h"

#if 0
#define   LEDCON    0x10000000
// P0.7为蜂鸣器的控制I/O
#define TEST_GPIO0 18
#define TEST_GPIO1 20 

// LED控制宏函数定义。LED1--LED4的控制I/O为P2.28--P2.31
#define   LED_IOCON	        0xF0000000


#define	TaskStkLengh	64			//定义用户任务堆栈长度
 
OS_STK	TaskStk0[TaskStkLengh];		//Define the Task0 stack 定义用户任务0的堆栈
OS_STK	TaskStk1[TaskStkLengh];		//Define the Task1 stack 定义用户任务1的堆栈

void Timer0_Exception(void)
{
    T0IR = 0x01;
    VICVectAddr = 0;            //interrupt close 通知中断控制器中断结束
    OSTimeTick();
}
void Timer0Init(void)
{
    T0IR = 0xffffffff;
    T0TC = 0;
    T0TCR = 0x01;
    T0MCR = 0x03;
    T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
}
void VICInit(void)
{
    extern void IRQ_Handler(void);
    extern void Timer0_Handler(void);

    VICIntEnClr = 0xffffffff;
    VICDefVectAddr = (INT32U)IRQ_Handler;

    VICVectAddr0 = (INT32U)Timer0_Handler;
    VICVectCntl0 = (0x20 | 0x04);
    VICIntEnable = 1 << 4;
}
void Task1(void *pdata)
{
	while (1)
	{
		OSTimeDly(OS_TICKS_PER_SEC*5);     // 延时10S	    
	    IO0CLR = 1<<TEST_GPIO1;  // 控制蜂鸣器响
        OSTimeDly(OS_TICKS_PER_SEC*5);			    
        IO0SET = 1<<TEST_GPIO1;
	}
}  

void Task0(void *pdata)
{
	TargetInit ();	
	PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 4 ) ) );	//TEST_GPIO1
	IO0DIR  = IO0DIR | ( 0x01 << TEST_GPIO1 );
	PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 8 ) ) );	//TEST_GPIO2
	IO0DIR  = IO0DIR | ( 0x01 << TEST_GPIO0 );

   
    // 建立任务1(用于蜂鸣器控制)
	OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);	
	
	while (1)
	{
		OSTimeDly(OS_TICKS_PER_SEC/2);     // 延时10S	    
	    IO0CLR = 1<<TEST_GPIO0;  // 控制蜂鸣器响
        OSTimeDly(OS_TICKS_PER_SEC/2);			    
        IO0SET = 1<<TEST_GPIO0;            
	}
}

int main (void)
{
	VICInit();
    Timer0Init();
	OSInit ();
	OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);
	OSStart ();
	#if 0
	IO2DIR = LEDCON;
	while(1){
		IO2SET = 1<<28;
		delay();
		IO2CLR = 1<<28;
		delay();
	}
	#endif
    return 0;
}
#endif

void delay (void)
{                             /* Delay function */
  unsigned int cnt;
  for(cnt=0;cnt<200000;cnt++);				    /* Delay */
}

#define TEST_GPIO1 18
#define TEST_GPIO2 20

int main (void)
{
	PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 4 ) ) );	//TEST_GPIO1
	IO0DIR  = IO0DIR | ( 0x01 << TEST_GPIO1 );
	PINSEL1 = ( PINSEL1 & ( ~ ( 0x03 << 8 ) ) );	//TEST_GPIO2
	IO0DIR  = IO0DIR | ( 0x01 << TEST_GPIO2 );
	while(1){
		IO0SET = 1<<TEST_GPIO1;		
		IO0SET = 1<<TEST_GPIO2;
		delay();
		IO0CLR = 1<<TEST_GPIO1;		
		IO0CLR = 1<<TEST_GPIO2;
		delay();
	}
    return 0;
}

⌨️ 快捷键说明

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