使用μC/OS-II嵌入式系统 设计三个或更多任务:任务1实现显示学号和姓名,任务2实现简易计算器,任务3实现结果显示
时间: 2023-12-10 20:37:45 浏览: 47
以下是使用μC/OS-II嵌入式系统设计的三个任务:
任务1:显示学号和姓名
这个任务可以通过串口或者LCD屏幕进行显示。我们可以在任务1中创建一个任务来初始化串口或者LCD屏幕,并在任务1中创建一个任务来实现显示学号和姓名。以下是任务1的代码示例:
```c
#include <includes.h>
#include <stdio.h>
#define TASK1_STK_SIZE 512
#define TASK1_PRIO 2
static OS_STK Task1Stk[TASK1_STK_SIZE];
static void Task1(void *pdata)
{
while(1)
{
printf("My student ID is 1234567890 and my name is John.\n");
OSTimeDlyHMSM(0, 0, 5, 0); // 每5秒钟执行一次
}
}
void AppTaskCreate(void)
{
OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK1_STK_SIZE - 1], TASK1_PRIO);
}
```
任务2:简易计算器
这个任务可以通过串口或者LCD屏幕进行用户交互。我们可以在任务2中创建一个任务来初始化串口或者LCD屏幕,并在任务2中创建一个任务来实现简易计算器。以下是任务2的代码示例:
```c
#include <includes.h>
#include <stdio.h>
#define TASK2_STK_SIZE 512
#define TASK2_PRIO 3
static OS_STK Task2Stk[TASK2_STK_SIZE];
static void Task2(void *pdata)
{
int num1, num2, result;
char op;
while(1)
{
printf("Please input your calculation (e.g. 2 + 3):\n");
scanf("%d %c %d", &num1, &op, &num2);
switch(op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
printf("Invalid operator!\n");
continue;
}
printf("The result is %d.\n", result);
OSTimeDlyHMSM(0, 0, 0, 500); // 每0.5秒钟执行一次
}
}
void AppTaskCreate(void)
{
OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK2_STK_SIZE - 1], TASK2_PRIO);
}
```
任务3:结果显示
这个任务可以通过串口或者LCD屏幕进行显示。我们可以在任务3中创建一个任务来初始化串口或者LCD屏幕,并在任务3中创建一个任务来实现结果显示。以下是任务3的代码示例:
```c
#include <includes.h>
#include <stdio.h>
#define TASK3_STK_SIZE 512
#define TASK3_PRIO 4
static OS_STK Task3Stk[TASK3_STK_SIZE];
static void Task3(void *pdata)
{
while(1)
{
printf("The result is being displayed on the screen.\n");
OSTimeDlyHMSM(0, 0, 10, 0); // 每10秒钟执行一次
}
}
void AppTaskCreate(void)
{
OSTaskCreate(Task3, (void *)0, &Task3Stk[TASK3_STK_SIZE - 1], TASK3_PRIO);
}
```