新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2016-9-5
- 在线时间
- 15 小时
|
13金钱
本帖最后由 ai602683692 于 2016-11-18 15:20 编辑
求救呀按两次Key3,key4就崩溃了,\template\default\common\header.htm
#include "includes.h
"#include "bell.h"
#define START_TASK_PRIO 3
#define START_STK_SIZE 64
OS_TCB StartTaskTCB;
CPU_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *p_arg);
#define KEY_TASK_PRIO 4
#define KEY_STK_SIZE 128
OS_TCB KeyTaskTCB;
CPU_STK KEY_TASK_STK[KEY_STK_SIZE];
void key_task(void *p_arg);
#define BELL_TASK_PRIO 10
#define BELL_STK_SIZE 128
OS_TCB BellTaskTCB;
CPU_STK BELL_TASK_STK[BELL_STK_SIZE];
void bell_task(void *p_arg);
int main(void)
{
OS_ERR err;
CPU_SR_ALLOC();
BSP_Init();
OSInit(&err);
OS_CRITICAL_ENTER();
OSTaskCreate((OS_TCB * )&StartTaskTCB,
(CPU_CHAR * )"start task",
(OS_TASK_PTR )start_task,
(void * )0,
(OS_PRIO )START_TASK_PRIO,
(CPU_STK * )&START_TASK_STK[0],
(CPU_STK_SIZE)START_STK_SIZE/10,
(CPU_STK_SIZE)START_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void * )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR * )&err);
OS_CRITICAL_EXIT();
OSStart(&err);
while(1);
}
//¿aê¼èÎÎñoˉêy
void start_task(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCPUUsageInit(&err);
#endif
#ifdef CPU_CFG_INT_DIS_MEAS_EN
CPU_IntDisMeasMaxCurReset();
#endif
OS_CRITICAL_ENTER();
OSTaskCreate((OS_TCB * )&KeyTaskTCB,
(CPU_CHAR * )"key task",
(OS_TASK_PTR )key_task,
(void * )0,
(OS_PRIO )KEY_TASK_PRIO,
(CPU_STK * )&KEY_TASK_STK[0],
(CPU_STK_SIZE)KEY_STK_SIZE/10,
(CPU_STK_SIZE)KEY_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void * )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR * )&err);
OS_TaskSuspend((OS_TCB*)&StartTaskTCB,&err);
OS_CRITICAL_EXIT();
}
void key_task(void *p_arg)
{
u8 key;
OS_ERR err;
p_arg = p_arg;
while(1)
{
key=KEY_Scan(0);
switch(key)
{
case KEY3_PRES:
LED1=0;
OSTaskCreate((OS_TCB * )&BellTaskTCB,
(CPU_CHAR * )"bell task",
(OS_TASK_PTR )bell_task,
(void * )0,
(OS_PRIO )BELL_TASK_PRIO,
(CPU_STK * )&BELL_TASK_STK[0],
(CPU_STK_SIZE)BELL_STK_SIZE/10,
(CPU_STK_SIZE)BELL_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void * )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR * )&err);
break;
case KEY4_PRES :
LED1=1;
OSTaskDel((OS_TCB * )&BellTaskTCB,&err);
break;
case KEY5_PRES:
OS_TaskSuspend((OS_TCB*)&BellTaskTCB,&err);
break;
case KEY6_PRES:
OS_TaskResume((OS_TCB*)&BellTaskTCB,&err);
break;
default :
break;
}
delay_ms(30);
}
}
void bell_task(void *p_arg)
{
p_arg = p_arg;
while(1)
{
bmp3_play();
}
}
|
|