主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

为基于 STM32 处理器的板设置调度选项

您可以使用 BaremetalFreeRTOS 操作系统运行您的模型,这些选项可以在配置参数 > 硬件实现 > 硬件板设置 > 操作系统/调度器 > 操作系统中选择。

要为您的模型设置调度选项以在目标硬件上运行,请按照以下步骤操作:

  1. 在“配置参数”对话框中,选择硬件实现

  2. 硬件板下拉列表中,选择任何基于 STM32 处理器的板。例如:STM32F7xx Based (Double precision FPU)

  3. 在“操作系统”参数中选择 BaremetalFreeRTOS

    注意

    当您在“配置参数”中选择 FreeRTOS 作为操作系统时,请确保在 STM32CubeMX 工程中的 中间件 > FREERTOS > 接口 > CMSIS_V2 下对接口选择 CMSIS_V2

  4. 编译操作下拉列表中选择选项以作为代码生成期间的编译过程。

  5. 点击应用

裸机调度

Baremetal 以多任务、多速率模式运行调度器。您还可以在求解器窗格中为模型选择单任务。模型模块以周期性方式运行,由周期性中断钟控触发,中断周期设置为模型的基础采样时间。使用 Baremetal 可以加速上下文切换,提高堆栈内存使用效率,并获得调度器代码的可见性。

以下示例说明如何针对基于 STM32 处理器的板生成代码,该板使用 SysTick 调度器作为基本速率触发器:

SysTick 计时器配置为使模型的基本速率采样时间对应于中断速率。为了生成所需的速率,需要计算计时器周期并设置预分频器。

BaseRateSampleTime=TimerPeriodTimerClockSpeed

可实现的最小基本速率采样时间取决于模型复杂度。最大值取决于最大计时器周期值(对于 SysTick,为 224 - 1)和 CPU 时钟速度。

FreeRTOS 调度

使用 FreeRTOS,您可以根据模型中存在的速率进行调度以运行代码。FreeRTOS 提供标准的编程接口以及支持线程管理和时间管理的函数。

FreeRTOS Simulink 配置

  • 使用 FreeRTOS 时,请确保将模型基本速率设置为大于或等于 1 毫秒的值。

  • FreeRTOS 支持最多 56 个线程优先级(即 0 - 55 之间),其中 1 - 40 个线程优先级可用于调度模型速率。41-55 个线程优先级保留用于用户自定义的更高优先级线程。空闲线程优先级保留用于外部模式仿真。

    注意

    软件计时器用于调度模型速率。计时器任务优先级应设置为高于最高调度速率的优先级(40 是基本速率)。

  • 使用 FreeRTOS 时,您在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小列表中指定的值应用于每个线程。但是,指定的堆栈大小在某些线程中可能未得到充分利用。

    Stack size

  • 注意

    线程的堆栈大小在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小STM32CubeMX > 中间件 > FREERTOS > 内核设置 > 配置参数 > 最小堆栈大小中设置为最大值

FreeRTOS STM32CubeMX 工程配置

当您选择 FreeRTOS 作为操作系统时,请确保在 STM32CubeMX 工程中配置以下设置。

  • STM32CubeMX > 中间件 > FREERTOS > 接口中将接口选择为 CMSIS_V2

    FreeRTOS CMSIS

  • 确保分配足够的堆大小,并将计时器任务优先级设置为大于 40

    FreeRTOS