4. 实现代码
任务 1 的实现:
```
void task1(void)
{
for (;;)
{
uint16_t temp = read_temperature(); // 采集温度数据
g_temp_data = temp; // 存储温度数据到全局变量
send_temperature(temp); // 向串口发送温度数据
osDelay(1000); // 暂停 1 秒钟
}
}
```
任务 2 的实现:
```
void task2(void)
{
for (;;)
{
if (g_cmd_received == 1) // 判断是否接收到命令
{
if (strcmp(g_cmd, "get_temp") == 0) // 判断是否为 “get_temp” 命令
{
send_temperature(g_temp_data); // 向串口发送温度数据
}
g_cmd_received = 0; // 清除命令接收标志位
}
osDelay(10); // 暂停 10 毫秒
}
}
```
四、总结
多任务并发是单片机开发必不可少的一个技能点,它可以提高系统性能和实时性,同时也需要我们对任务调度、任务间通信等方面有深入的理解。 |