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

📄 main.c

📁 ucos应用在keil环境下调试
💻 C
字号:
#include "config.h"
//#include "stdlib.h"
#include "spi.h"

#define	  DS2	(1 << 24)           	// P1.24控制DS2
#define	  DS3	(1 << 8)           	// P0.25控制DS3
#define	Task0StkLengh	64				// 定义用户任务0的堆栈长度
#define	TaskDS2StkSize	128				// 定义任务TaskDS2的堆栈长度
#define	TaskDS3StkSize	128				// 定义任务TaskDS3的堆栈长度
#define	TaskDS4StkSize	128				// 定义任务TaskDS3的堆栈长度

 
OS_STK	Task0Stk [Task0StkLengh];		// 定义用户任务0的堆栈
OS_STK	TaskDS2Stk [TaskDS2StkSize];	// 定义任务TaskDS2的堆栈
OS_STK	TaskDS3Stk [TaskDS3StkSize];	// 定义任务TaskDS3的堆栈
OS_STK	TaskDS4Stk [TaskDS4StkSize];	// 定义任务TaskDS3的堆栈


void  Task0(void *pdata);				// Task0 任务0
void  TaskDS2(void *data);				// 任务TaskDS2
void  TaskDS3(void *data);				// 任务TaskDS3

extern OS_EVENT *Sem1;                         // 定义一个信号量


/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :c语言的主函数,由它启动多任务环境
*********************************************************************************************************
*/
int main (void)
{
	OSInit ();																										
	Sem1 = OSSemCreate(1);              // 建立信号量																										
	OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], 2);		
	OSStart ();
	return 0;															
}

/*
********************************************************************************************************
** 									Task0 任务0
** 							完成目标板初始化和创建TaskLED1任务
********************************************************************************************************
*/

void Task0	(void *pdata)
{
	pdata = pdata;
	TargetInit ();
	OSTaskCreate (TaskDS2,(void *)0, &TaskDS2Stk[TaskDS2StkSize - 1], 3);		
	OSTaskCreate (TaskDS3,(void *)0, &TaskDS3Stk[TaskDS3StkSize - 1], 4);
	OSTaskCreate (task_spi,(void *)0, &TaskDS4Stk[TaskDS4StkSize - 1], 5);
		
	while (1)
	{
		OSTimeDly(10);
	}
}

/*
********************************************************************************************************
** 									TaskDS2
** 								    DS2任务
********************************************************************************************************
*/
void  TaskDS2(void *pdata)
{
    pdata = pdata;                          	 	// 避免编译警告

	PINSEL2 = PINSEL2 & (~0x08);				    // P1[25:16]选择GPIO
				
    IO1DIR |= DS2;			                    	// 设置LED1控制口输出
    IO1SET  = DS2;
    
    for (;;)
    {
        IO1CLR = DS2;
        OSTimeDly(OS_TICKS_PER_SEC / 4);
        IO1SET = DS2;
        OSTimeDly(OS_TICKS_PER_SEC / 2);
    }
}

 /*
********************************************************************************************************
** 									TaskDS3
** 								    DS1任务
********************************************************************************************************
*/
void  TaskDS3(void *pdata)
{
    pdata = pdata;                          	 	// 避免编译警告

	PINSEL0 = 0x00000000;		                    // 设置管脚连接GPIO
				
    IO0DIR |= DS3;			                    	// 设置LED1控制口输出
    IO0SET  = DS3;
    
    for (;;)
    {
        IO0CLR = DS3;
        OSTimeDly(OS_TICKS_PER_SEC / 5);
        IO0SET = DS3;
        OSTimeDly(OS_TICKS_PER_SEC / 3);
		OSSemPost(Sem1);	                   //等待信号量

    }
}  
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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