#include <includes.h>
#define RCC_GPIO_LED RCC_APB2Periph_GPIOF /*LED使用的GPIO时钟*/
#define LEDn 4 /*神舟III号LED数量*/
#define GPIO_LED GPIOF /*神舟III号LED灯使用的GPIO组*/
#define OS_PRIO_SELF 0xFFu
#define DS1_PIN GPIO_Pin_6 /*DS1使用的GPIO管脚*/
#define DS2_PIN GPIO_Pin_7 /*DS2使用的GPIO管脚*/
#define DS3_PIN GPIO_Pin_8 /*DS3使用的GPIO管脚*/
#define DS4_PIN GPIO_Pin_9 /*DS4使用的GPIO管脚*/
//#define KEY1 (1 << 20) /* P0.20为KEY1 */
//#define BEEP (1 << 7) /* P0.07为蜂鸣器 */
#define TaskStkLengh 64 //Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK TaskStk0[TaskStkLengh]; //Define the Task0 stack 定义用户任务0的堆栈
OS_STK TaskStk1[TaskStkLengh];
OS_STK TaskStk2[TaskStkLengh]; //Define the Task1 stack 定义用户任务1的堆栈
//void Delay(vu32 nCount);
void Task0(void *pdata); //Task0 任务0
void Task1(void *pdata); //Task0 任务1
void Task2(void *pdata);
void RCC_Configuration(void);
void NVIC_Configuration(void);
void Delay1(vu32 nCount);
void Turn_On_LED(u8 LED_NUM);
GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
u8 count=0;
int main(void)
{
OSInit ();
OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
void Task0(void *pdata)
{ pdata = pdata;
// BSP_Init(); /* Initialize BSP functions */
// #if (OS_TASK_STAT_EN > 0)
// OSStatInit(); /* Determine CPU capacity */
// #endif
OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 5);
OSTaskCreate (Task2,(void *)0, &TaskStk2[TaskStkLengh - 1], 6);
// GPIO_ResetBits(GPIO_LED,DS3_PIN|DS4_PIN);
//GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);/*关闭所有的LED指示灯*/
// Turn_On_LED(count%4); //点亮一个LED灯
// count++;
while(1)
{
OSTaskSuspend(0x2FFFFF);
}
Delay1(0x2FFFFF);
Delay1(0x2FFFFF);
// OSTimeDlyHMSM(0,0,0,500);
}
void Task1(void *pdata)
{
pdata = pdata;
RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE); /*使能LED灯使用的GPIO时钟*/
GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_LED, &GPIO_InitStructure);
while(1)
{
GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);/*开启所有的LED指示灯*/
// GPIO_ResetBits(GPIO_LED,DS2_PIN|DS3_PIN);/*关闭所有的LED指示灯*/
// Turn_On_LED(count%4); //点亮一个LED灯
// count++;
// //GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);
Delay1(0x2FFFFF);
// OSTaskSuspend(OS_PRIO_SELF);
// Delay(0x200000);
OSTimeDly(OS_TICKS_PER_SEC);
//
}
// OSTimeDly(OS_PRIO_SELF);
}
void Task2(void *pdata)
{
pdata = pdata;
// OSTaskResume() ;
// GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN);/*关闭所有的LED指示灯*/
while(1)
{
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);/*关闭所有的LED指示灯*/
Delay1(0x2FFFFF);
GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN);/*关闭所有的LED指示灯*/
Delay1(0x2FFFFF);
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);/*关闭所有的LED指示灯*/
Delay1(0x2FFFFF);
// Turn_On_LED(count%4); //点亮一个LED灯
// count++;
//
// //GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);
// Delay1(0x2FFFFF);
// Delay(0x2FFFFF);
OSTimeDly(OS_TICKS_PER_SEC);
// OSTaskResume(5);
}
//
}