前言 欢迎来到STM32期末复习系列的最终篇前面的章节里我们写的代码都是放在main函数的while(1)死循环里一直跑这叫“裸机开发”。 但如果项目越来越复杂既要刷屏幕又要读传感器还要处理网络数据单片机忙不过来怎么办这就需要请出大管家——嵌入式实时操作系统RTOS。本章以uC/OS-III为例带你梳理期末必考的操作系统核心理论拿下最后的大题考点一嵌入式系统的三种开发方式⭐️⭐️⭐️⭐️ 简答题/对比题考试经常会让你比较这三种开发方式的优缺点请务必理解并背熟它们的概念1. 轮询方式 (Polling)大白话CPU像个保安一样在while(1)里面挨个去查各个设备比如按键有没有动静。特点代码最简单但效率极低因为CPU大部分时间都在“死等”比如Delay延时如果在延时的时候按键按下了单片机根本不知道实时性极差。2. 前后台系统 (Foreground / Background)大白话把不紧急的事情放在后台慢慢做把紧急的事情放在前台立刻做。分工后台就是main函数里的无限循环while(1)处理一些日常任务比如刷新屏幕。前台就是中断服务函数ISR。一旦有紧急事件串口来数据了立刻打断后台去处理处理完了再回后台。特点比轮询方式好多了实时性提高了是目前裸机开发最常用的模式。3. 多任务操作系统 (RTOS)大白话系统里有多个“任务”线程操作系统就像个超级调度员根据优先级决定当前谁先用CPU。特点将复杂的工程拆分成一个个独立的任务代码结构清晰实时性极强适合大型复杂项目。考点二操作系统的核心概念⭐️⭐️⭐️⭐️ 填空/选择题1. 任务 (Task)在uC/OS-III中任务是基本的执行单元。每个任务本质上就是一个无限循环的C语言函数。避坑警告既然是无限循环任务里必须要有阻塞函数如延时或等待信号量如果一个高优先级的任务里全是死循环而不交出CPU使用权低优先级的任务就永远得不到执行这叫“任务饿死”。2. 任务的三大组成部分必考填空要想让操作系统管理一个任务光有代码是不够的一个完整的任务由以下三部分组成任务程序代码你写的函数实体。任务堆栈 (Task Stack)任务被切换走的时候CPU的寄存器数据存放在哪里就存在这个任务专属的堆栈里保证下次回来还能接着上次的地方运行。任务控制块 (TCB - Task Control Block)这是操作系统的“户口本”记录了任务的名字、优先级、堆栈地址、状态等核心信息。3. 任务的调度机制抢占式调度这是uC/OS-III的核心。只要有优先级更高的任务准备好了操作系统会立刻剥夺当前低优先级任务的CPU使用权转而去执行高优先级任务。时间片轮转调度如果两个任务的优先级一模一样那就大家排排坐分果果。每人执行固定的时间时间片轮流使用CPU。 特别提醒在uC/OS-III中数字越小优先级越高比如优先级为2的任务比优先级为10的任务先执行。考点三uC/OS-III 任务的状态转换⭐️⭐️⭐️⭐️⭐️ 压轴简答题如果考操作系统的简答题大概率会让你画状态机或者简述任务的状态。uC/OS-III的任务主要有以下几种状态休眠态 (Dormant)任务代码写好了但还没向操作系统注册还没调用OSTaskCreate此时它对系统是隐形的。就绪态 (Ready)任务已经被创建万事俱备就等操作系统把它分配给CPU运行了。运行态 (Running)任务正在占有CPU执行代码。等待/阻塞态 (Pending / Blocked)正在运行的任务遇到需要等待某件事比如调用了延时函数OSTimeDly()或者等待按键信号量就会交出CPU进入等待态。等时间到了或者信号来了又会回到就绪态。考点四API与代码框架阅读⭐️⭐️⭐️ 代码理解虽然不要求手写完整的RTOS系统代码但你要能看懂核心API的意思。1. 任务创建函数OSTaskCreate()考试若出填空题通常会挖空让你填参数代表的意思OSTaskCreate((OS_TCB *) MyTask_TCB, // 填空任务控制块地址 (CPU_CHAR *) LED_Task, // 任务名字 (OS_TASK_PTR) MyTask_LED, // 填空任务函数指针入口地址 (void *) 0, // 传递给任务的参数 (OS_PRIO) 3, // 填空任务优先级 (CPU_STK *)TASK_LED_STK[0], // 填空任务堆栈基地址 // ... 后续参数省略 ... (OS_ERR *) err); // 错误代码保存地址2. 系统的心跳SysTick回忆杀还记得第9章学的SysTick滴答定时器吗在uC/OS-III中SysTick 就是操作系统的心跳操作系统能实现时间片轮转、能知道OSTimeDly(100)的 100个节拍到底有没有到时间全靠 SysTick 定期产生中断来唤醒操作系统去检查完结撒花 到这里《STM32嵌入式系统设计》的所有核心考点已经全部为你梳理完毕从最小系统、GPIO、USART、定时器、ADC、IIC再到最终的操作系统你已经建立起了完整的嵌入式知识架构体系。 祝你在期末考试中下笔如有神逢考必过高分拿下大家可以把这系列文章收藏或分享给其他需要的同学哦