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

📄 monitor.c

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

#define ARGS_MAX_SIZE			10

char cmdbuf[84];
char *argv[ARGS_MAX_SIZE];
char* xargv[ARGS_MAX_SIZE + 1];
OS_STK App_TaskMonitorStk[APP_TASK_MONITOR_STK_SIZE];

void AllAppStart(void) {
	struct user_task *ptask = &user_tasks[1];	//跳过自身

	for (; ptask->TaskName != NULL; ptask++) {
		if (ptask->autorun) {
			Run_Task(ptask);
		}
	}

	return;
}

int task_exec(int argc, char* argv[]) {
	char buf[] = "run";

	if (argc == 0) {
		return 0;
	}

	xargv[0] = buf;
	memcpy(&xargv[1], &argv[0], sizeof(argv[0]) * argc);
	xargv[argc + 1] = NULL;

#if 0
	{
	int i;

	printf("\r\nargc = %d", argc);
	for (i = 0; i < argc; i++) {
		printf(" %s", argv[i]);
	}
	}
#endif
	return command_run(argc + 1, xargv);
}

void App_TaskMonitor(void *parg)
{
	struct cmd *pcmd;
	char cmdbf[84];

	drv_all_init();

	component_init();

	// 在打开优先级更高的任务前
	// 所有的设备及组件必须初使化
	AllAppStart();

	for (;;) {
		int argc;

		printf("\r\n uC/OS-II%% ");

		memset(cmdbf, 0, 80);
		gets(cmdbf);
		strcpy(cmdbuf, cmdbf);

		// printf("\r\n %s(%d)", cmdbuf, strlen(cmdbuf));
		// debug_buf("cmdbuf", cmdbuf, strlen(cmdbuf));
		memset(argv, '\0', sizeof argv);
		argc = make_argv(cmdbuf, 0x80, argv, ARGS_MAX_SIZE);
		// printf("\r\n %d %s", argc, argv[1]);

		pcmd = cmds;
		while (pcmd->cmdName != NULL) {
			if (!strcmp(argv[0], pcmd->cmdName)) {
				pcmd->run(argc, argv);
				break;
			}
			pcmd++;
		}

		if (1
		&& (pcmd->cmdName == NULL)
		&& (argc)
		) {
			task_exec(argc, argv);			
			// printf("\r\n Can't find command : %s\r\n", cmdbuf);
		}
	}
}

⌨️ 快捷键说明

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