#include "config.h"<br />#include "stdlib.h"<br /><br />#define KEY1 (1 << 20) /* P0.20为KEY1 */<br />#define BEEP (1 << 7) /* P0.07为蜂鸣器 */<br /><br />#define TaskStkLengh 64 //Define the Task0 stack length 定义用户任务0的堆栈长度 <br />OS_STK TaskStk0[TaskStkLengh]; //Define the Task0 stack 定义用户任务0的堆栈<br />OS_STK TaskStk1[TaskStkLengh]; //Define the Task1 stack 定义用户任务1的堆栈<br /><br />void Task0(void *pdata); //Task0 任务0<br />void Task1(void *pdata); //Task0 任务1<br /><br />int main(void)<br />{<br /> OSInit (); <br /> OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2); <br /> OSStart ();<br /> return 0; <br />}<br /><br />/*********************************************************************************************************<br />** Task0 任务0<br />********************************************************************************************************/<br />void Task0(void *pdata)<br />{ pdata = pdata;<br /><br /> TargetInit ();<br /> PINSEL0 = PINSEL0 & 0xffff3fff; // 管教选择模块初始化<br /> PINSEL1 = PINSEL1 & 0xfffffcff;<br /> IO0DIR &= ~KEY1; // 设置KEY1的控制I/O为输入<br /> IO0DIR |= BEEP; // 设置蜂鸣器为输出<br /> IO0SET = BEEP; <br /> <br /> OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 5);<br /> <br /> for (;;)<br /> { OSTaskSuspend(OS_PRIO_SELF);<br /> IO0CLR = BEEP;<br /> OSTimeDly(OS_TICKS_PER_SEC / 8);<br /> IO0SET = BEEP;<br /> OSTimeDly(OS_TICKS_PER_SEC / 4);<br /><br /> IO0CLR = BEEP;<br /> OSTimeDly(OS_TICKS_PER_SEC / 8);<br /> IO0SET = BEEP;<br /> OSTimeDly(OS_TICKS_PER_SEC / 4);<br /> }<br />}<br /><br />/*********************************************************************************************************<br />** Task1 任务1<br />********************************************************************************************************/<br />void Task1(void *pdata)<br />{ pdata = pdata; /* 避免编译警告 */<br /><br /> for (;;)<br /> { OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */<br /> if ((IO0PIN & KEY1) != 0)<br /> { continue;<br /> }<br /> OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */<br /> if ((IO0PIN & KEY1) != 0)<br /> { continue;<br /> }<br /> OSTaskResume(2);<br /> while ((IO0PIN & KEY1) == 0)<br /> { OSTimeDly(OS_TICKS_PER_SEC / 50); /* 延时20毫秒 */<br /> }<br /> }<br />}<br /> |
|