⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 C
字号:
#include <stdio.h>
#include <ucos_ii.h>
#include "drv_init.h"
#include "mp3_dbg.h"
#include "snd_rec.h"
#include "tasks.h"

struct user_task user_tasks[] = {
	{"monitor", "Monitor task.", 1,
	 App_TaskMonitor, (void *) 0,
	 &App_TaskMonitorStk[APP_TASK_MONITOR_STK_SIZE - 1],
	 APP_TASK_MONITOR_PRIO,
	 0, App_TaskMonitorStk, APP_TASK_MONITOR_STK_SIZE, &user_tasks[0],
	 OS_TASK_OPT_STK_CHK,
	 },
#if KEYS_USE_EINT == 0
	{"key_srv", "Key scan task.", 1,
	 Task_Key_Srv, (void *) 0,
	 &Sys_TaskKeySrvStk[SYS_TASK_KEY_SRV_STK_SIZE - 1],
	 SYS_TASK_KEY_SRV_PRIO,
	 1, Sys_TaskKeySrvStk, SYS_TASK_KEY_SRV_STK_SIZE, 0,
	 OS_TASK_OPT_STK_CHK,
	 },
#endif
	{"dial_srv", "CDMA or GPRS dial task.", 0,
	 Dial_Srv, (void *)0,
	 &Sys_TaskDialSrvStk[SYS_TASK_DIAL_SRV_STK_SIZE - 1],
	 SYS_TASK_DIAL_SRV_PRIO,
	 6, Sys_TaskDialSrvStk, SYS_TASK_DIAL_SRV_STK_SIZE, 0,
	 OS_TASK_OPT_STK_CHK
	},
	{"led", "User led task.", 1,
	 App_led, (void *) 0, &App_TaskLedStk[APP_TASK_LED_STK_SIZE - 1],
	 APP_TASK_LED_PRIO,
	 2, App_TaskLedStk, APP_TASK_LED_STK_SIZE, 0, OS_TASK_OPT_STK_CHK,
	 },
	{"debug", "Debug only task.", 1,
	 App_test, (void *) 0,
	 &App_TaskTestStk[APP_TASK_TEST_STK_SIZE - 1], APP_TASK_TEST_PRIO,
	 3, App_TaskTestStk, APP_TASK_TEST_STK_SIZE, 0,
	 OS_TASK_OPT_STK_CHK,
	 },

	{
	 "wav_play",
	 "Wave file player task.",
	 0,
	 mp3_dbg,
	 (void *) 0,
	 &App_TaskMp3Stk[APP_TASK_MP3_STK_SIZE - 1],
	 APP_TASK_MP3_PRIO,
	 4,
	 App_TaskMp3Stk,
	 APP_TASK_MP3_STK_SIZE,
	 0,
	 OS_TASK_OPT_STK_CHK,
	 },
#if 0
	{
	 "snd_rec",
	 "Sound recorder task.",
	 0,
	 snd_rec,
	 (void *) 0,
	 &App_TaskMp3Stk[APP_TASK_MP3_STK_SIZE - 1],
	 APP_TASK_MP3_PRIO,
	 5,
	 App_TaskMp3Stk,
	 APP_TASK_MP3_STK_SIZE,
	 0,
	 OS_TASK_OPT_STK_CHK,
	 },
#endif

	{NULL}
};

int Run_Task(struct user_task *ptask)
{
	INT8U err;

#if OS_TASK_CREATE_EXT_EN > 0
	err = OSTaskCreateExt(ptask->code, ptask->parg, ptask->pstk,	//&Task1Stk[TASK_STK_SIZE - 1],
			      ptask->prio, ptask->pid,	//task id
			      ptask->pstkb,
			      ptask->stksize, ptask->pdat, ptask->opt);
#else
	err = OSTaskCreate(ptask->code,
			   ptask->parg, ptask->pstk, ptask->prio);
#endif
#if (OS_TASK_NAME_SIZE >= TASK_NAME_LENTH)

	OSTaskNameSet(ptask->prio, (INT8U *) ptask->TaskName, &err);

#endif
	if (OS_ERR_NONE == err)
		return ptask->prio;
	return -1;
}

static void StartFirstTask(void)
{
	Run_Task(&user_tasks[0]);
}

int main(void)
{

	RCC_Configuration();
	NVIC_Configuration();

	OSInit();		/* Initialize "uC/OS-II, The Real-Time Kernel".         */

	StartFirstTask();

	OSStart();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -