新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2014-10-9
- 在线时间
- 0 小时
|
5金钱
A任务创建了B和C 那么A的任务优先级是最低的 。 但是我把A任务改成高优先级 结果运行出来一样的效果。用到的实验是 原子大神的 任务调度实验。
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "includes.h"
#define START_TASK_PRIO 5
#define START_STK_SIZE 64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);
#define LED1_TASK_PRIO 7
#define LED1_STK_SIZE 64
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
void led1_task(void *pdata);
#define LED2_TASK_PRIO 6
#define LED2_STK_SIZE 64
OS_STK LED2_TASK_STK[LED2_STK_SIZE];
void led2_task(void *pdata);
int main(void)
{
delay_init();
NVIC_Configuration();
LED_Init();
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );
OSStart();
}
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit();
OS_ENTER_CRITICAL();
OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
OSTaskCreate(led2_task,(void *)0,(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],LED2_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);
OS_EXIT_CRITICAL();
}
void led1_task(void *pdata)
{
while(1)
{
LED0=0;
delay_ms(80);
LED0=1;
delay_ms(920);
};
}
void led2_task(void *pdata)
{
while(1)
{
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);
};
}
|
|