freeRTOS高内聚低耦合
时间: 2024-07-27 15:01:20 浏览: 55
FreeRTOS是一个实时操作系统(RTOS)内核,它强调模块化设计和良好的组织结构。"高内聚低耦合"这一原则在这里指的是软件架构的设计目标:
1. **高内聚** (High Cohesion): 这意味着每个组件或任务都有清晰明确的职责,专注于完成特定的功能。例如,在FreeRTOS中,内核功能如调度、任务管理、中断处理等高度集成在一起,形成独立且功能完整的部分。
2. **低耦合** (Low Coupling): 各个组件之间的依赖关系较小,修改一个模块不会对其他模块造成大的影响。FreeRTOS设计时尽量避免强耦合,比如任务间的通信通常是通过消息队列或者事件通知,而不是直接共享数据。
这样的设计有助于提高系统的稳定性、可维护性和扩展性。当需要添加新功能或优化现有部分时,可以更轻松地定位到相关的代码区域,减少全局的影响。
相关问题
freertos 高优先级如何抢断低优先级
FreeRTOS(Real-Time Operating System for Embedded Systems)是一个专门为实时嵌入式系统设计的轻量级操作系统。它采用抢占式的调度策略,这意味着高优先级的任务可以中断正在运行的低优先级任务并立即执行。
当一个高优先级任务进入就绪状态时,操作系统会检查当前执行的任务是否为低优先级。如果是,系统将取消当前任务的执行上下文,并切换到高优先级任务。这称为任务抢占。高优先级任务抢占过程中,处理器的状态信息会被保存,以便稍后恢复低优先级任务的执行。
为了确保抢占机制的公平性和效率,FreeRTOS通常有以下几个关键点:
1. **优先级反转防止**:为了避免低优先级任务因频繁被高优先级打断而陷入无法退出的情况,FreeRTOS通过设置“互斥等待”策略,在高优先级任务需要执行低优先级任务所阻塞的功能时,先降低自身优先级,直到该功能完成再恢复抢占。
2. **任务挂起**:如果一个高优先级任务暂时不需要处理器,它可以主动让出CPU给其他任务,而不是直接抢占。这使得系统能平衡各个任务间的资源利用。
3. **延时队列**:对于有预定延迟的服务,FreeRTOS提供延时队列,这样即使任务到达,如果没有足够的处理时间,也会被推迟到设定的时间点再执行,避免了无谓的抢占。
freertos 低优先级任务创建高优先级任务
在FreeRTOS中,可以通过创建高优先级任务来实现低优先级任务创建高优先级任务的需求。具体步骤如下:
1. 首先,需要定义高优先级任务的任务句柄和任务函数。
```c
TaskHandle_t xHighPriorityTaskHandle = NULL;
void vHighPriorityTask(void *pvParameters)
{
// 高优先级任务的代码
}
```
2. 在低优先级任务中,使用xTaskCreate()函数创建高优先级任务。
```c
xTaskCreate(vHighPriorityTask, "HighPriorityTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, &xHighPriorityTaskHandle);
```
在这里,第5个参数tskIDLE_PRIORITY + 1表示高优先级任务的优先级比空闲任务的优先级高1。
3. 在低优先级任务中,使用vTaskDelete()函数删除自身任务。
```c
vTaskDelete(NULL);
```
完整的代码如下:
```c
TaskHandle_t xHighPriorityTaskHandle = NULL;
void vHighPriorityTask(void *pvParameters)
{
// 高优先级任务的代码
}
void vLowPriorityTask(void *pvParameters)
{
// 低优先级任务创建高优先级任务
xTaskCreate(vHighPriorityTask, "HighPriorityTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, &xHighPriorityTaskHandle);
// 删除自身任务
vTaskDelete(NULL);
}
void setup()
{
// 创建低优先级任务
xTaskCreate(vLowPriorityTask, "LowPriorityTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
// 启动调度器
vTaskStartScheduler();
}
void loop()
{
// 空函数
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)