初级会员 
  
	- 积分
 - 136
 
        - 金钱
 - 136 
 
       - 注册时间
 - 2017-6-12
 
      - 在线时间
 - 36 小时
 
 
 
 | 
 
5金钱 
#define START_TASK_PRIO 9     //开始任务优先级 
#define START_STK_SIZE 64     //设置任务堆栈大小 
static OS_STK  START_TASK_STK[START_STK_SIZE];   //创建任务堆栈空间 
#define LED_TASK_PRIO 6     //led任务优先级 
#define LED_STK_SIZE 64     //设置任务堆栈大小 
static OS_STK  LED_TASK_STK[LED_STK_SIZE];   //创建任务堆栈空间 
 
#define DHT11_TASK_PRIO 5     //DHT11任务优先级 
#define DHT11_STK_SIZE 128     //设置任务堆栈大小 
static OS_STK  DHT11_TASK_STK[DHT11_STK_SIZE];   //创建任务堆栈空间 
#define PM25_TASK_PRIO 4     //PM25任务优先级 
#define PM25_STK_SIZE 256     //设置任务堆栈大小 
static OS_STK  PM25_TASK_STK[PM25_STK_SIZE];   //创建任务堆栈空间 
#define TOUCH_TASK_PRIO 3     //PM25任务优先级 
#define TOUCH_STK_SIZE 256     //设置任务堆栈大小 
static OS_STK  TOUCH_TASK_STK[TOUCH_STK_SIZE];   //创建任务堆栈空间 
 
#define BEEP_TASK_PRIO 2     //BEEP任务优先级 
#define BEEP_STK_SIZE 64     //设置任务堆栈大小 
static OS_STK  BEEP_TASK_STK[BEEP_STK_SIZE];   //创建任务堆栈空间 
 
void start_task(void *pdata)    //开始任务 
{ 
 OS_CPU_SR cpu_sr=0; 
 pdata=pdata; 
 OSStatInit();  //初始化统计任务 
 OS_ENTER_CRITICAL();  //进入临界区,中断无法打断 
 OSTaskCreate(led_task,(void *)0,(OS_STK *)&LED_TASK_STK[LED_STK_SIZE-1] 
 ,LED_TASK_PRIO);  
  
 OSTaskCreate(DHT11_task,(void *)0,(OS_STK *)&DHT11_TASK_STK[DHT11_STK_SIZE-1] 
 ,DHT11_TASK_PRIO); 
  
 OSTaskCreate(PM25_task,(void *)0,(OS_STK *)&PM25_TASK_STK[PM25_STK_SIZE-1] 
 ,PM25_TASK_PRIO); 
  
 OSTaskCreate(PM25_task,(void *)0,(OS_STK *)&PM25_TASK_STK[PM25_STK_SIZE-1] 
 ,PM25_TASK_PRIO); 
  
 OSTaskCreate(beep_task,(void *)0,(OS_STK *)&BEEP_TASK_STK[BEEP_STK_SIZE-1] 
 ,BEEP_TASK_PRIO); 
  
 OSTaskSuspend(START_TASK_PRIO);   //挂起起始任务 
 OS_EXIT_CRITICAL();  //退出临界区,中断可以打断 
} 
 
程序开始运行时,LED闪烁,传感器采集的数据通过LCD显示正常。运行一段时间后,程序卡在优先级最高的任务中,且每次程序从运行到卡住的时间不同。 
请各位大牛不吝赐教,谢谢!!! 
 
 
 
 |   
 
 
 
- 
 
 
 
 
 
 
 
 |