#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "includes.h"
//创建三个任务:START_TASK,LED0_TASK,LED1_TASK
//主函数中创建START_TASK,START_TASK中创建LED0_TASK和LED1_TASK
//任务设置
///////////START_TASK//////////
#define START_STK_SIZE 256 //定义开始任务堆栈大小
OS_STK StartTaskStk[START_STK_SIZE];//定义开始任务堆栈区
#define START_TASK_PRIO 10 //设置任务优先级
void StartTask(void *pdata);//任务声明
//////////LED0_TASK///////////
#define LED0_STK_SIZE 128 //定义LED0任务堆栈大小
OS_STK Led0TaskStk[LED0_STK_SIZE];//定义LED0任务堆栈区
#define LED0_TASK_PRIO 9//设置任务优先级
void Led0Task(void *pdata);//任务声明
/////////LED1_TASK/////////
#define LED1_STK_SIZE 128 //定义LED1任务堆栈大小
OS_STK Led1TaskStk[LED1_STK_SIZE];//定义LED1任务堆栈区
#define LED1_TASK_PRIO 8//设置任务优先级
void Led1Task(void *pdata);//任务声明
int main(void)
{
Stm32_Clock_Init(9); //时钟初始化 72M
delay_init(72);
uart_init(72,9600);
LED_Init(); //LED初始化
OSInit();//初始化μC/OS-II
OSTaskCreate(
StartTask,//指向任务的指针
(void*)0,//传递给任务的参数
&StartTaskStk[START_STK_SIZE-1],//指向堆栈栈顶
START_TASK_PRIO
); //创建开始任务
OSStart();//启动μC/OS-II
}
////////////开始任务/////////////
void StartTask(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata=pdata;
OS_ENTER_CRITICAL();//关闭中断(进入临界区)
OSTaskCreate(
Led0Task,//指向任务的指针
(void*)0,//传递给任务的参数
&Led0TaskStk[LED0_STK_SIZE-1],//指向堆栈栈顶
LED0_TASK_PRIO
); //创建LED0任务
OSTaskCreate(
Led1Task,//指向任务的指针
(void*)0,//传递给任务的参数
&Led1TaskStk[LED1_STK_SIZE-1],//指向堆栈栈顶
LED1_TASK_PRIO
); //创建LED1任务
// OSTaskSuspend(START_TASK_PRIO);//挂起开始任务(停止开始任务)
OS_EXIT_CRITICAL(); //打开中断(退出临界区)
delay_ms(8000);
}
////////////////LED0任务/////////////////
void Led0Task(void *pdata)
{
for(;;)
{
LED0=!LED0;
delay_ms(1000);
}
}
////////////////LED1任务/////////////////
void Led1Task(void *pdata)
{
for(;;)
{
LED1=!LED1;
delay_ms(2000);
}
}