在 STM32 处理器上优化 FreeRTOS 调度
此示例说明如何使用 Embedded Coder® Support Package for STMicroelectronics® STM32 Processors 在 STMicroelectronics NUCLEO-F207ZG 板上执行 Simulink® 模型。它指导您在 STM32CubeMX 工作流中实现 FreeRTOS 调度,从而实现高效的任务管理和代码执行。
FreeRTOS 是为嵌入式设备设计的开源实时操作系统 (RTOS),可实现高效的多任务处理和资源管理。当与 STM32 处理器结合使用时,它为开发复杂的实时应用程序提供框架。
简介
Embedded Coder® Support Package for STMicroelectronics® STM32 能够基于模型指定的速率调度代码执行。它与 FreeRTOS 集成,为线程和时间管理提供标准接口。此 STMicroelectronics® STM32 处理器支持 Digital Port Write 模块,允许它们以不同的基本速率运行。
在此示例中,您将学习如何配置 Simulink 模型以便为 STMicroelectronics NUCLEO-F207ZG 生成代码,并运行生成的代码,以在指定的速率下周期性地打开和关闭 LED。
前提条件
完成以下教程:
必需的硬件
STMicroelectronics NUCLEO-F207ZG
模型
打开 FREERTOS_gettingstarted 预配置模型。此示例说明如何将 FreeRTOS 与 STM32 处理器结合使用,使 LED 以指定的速率闪烁。

1.配置目标模型,使 LED 灯以您在模型中指定的采样率闪烁。
2.双击 GPIO 模块以打开“模块参数”对话框,并确保配置以下引脚编号。
绿色 LED 连接到 GPIOB 端口的引脚 0。
蓝色 LED 连接到 GPIOB 端口的引脚 7。
红色 LED 连接到 GPIOB 端口的引脚 14。
3.在 STM32CubeMX 工程中配置与 GPIO_Output 相同的引脚(PB0、PB7、PB14)以切换用户 LED。有关详细信息,请参阅 FreeRTOS STM32CubeMX 工程配置。
配置 Simulink 模型
1.打开 FREERTOS_gettingstarted 模型。
2.按 CTRL+E 打开“配置参数”对话框。点击左窗格中的硬件实现。将硬件板设置为基于 STM32F2xx。
3.在硬件板设置下,展开操作系统/调度器并将操作系统设置为 FreeRTOS。

4.转至编译选项,并点击浏览以选择 gettingStarted_F2027ZG.ioc STM32CubeMX 工程文件。有关 STM32CubeMX 工程的详细信息,请参阅基于 STMicroelectronics STM32 处理器的板快速入门。

5.当您将操作系统设置为 FreeRTOS 时,请考虑以下 Simulink 配置:
使用 FreeRTOS 时,请确保将模型基本速率设置为大于或等于
1毫秒的值。FreeRTOS支持最多56个线程优先级(即 0 - 55 之间),其中1 - 40个线程优先级可用于调度模型速率。41-55个线程优先级保留用于用户自定义的更高优先级线程。空闲线程优先级保留用于外部模式仿真。

注意:软件计时器用于调度模型速率。计时器任务优先级应设置为高于最高调度速率的优先级(40 是基本速率)。
使用 FreeRTOS 时,您在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小列表中指定的值将应用于每个线程。但是,指定的堆栈大小在某些线程中可能未得到充分利用。
注意:线程的堆栈大小在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小和 STM32CubeMX > 中间件 > FREERTOS > 内核设置 > 配置参数 > 最小堆栈大小中设置为最大值。
FreeRTOS STM32CubeMX 工程配置
当您选择 FreeRTOS 作为操作系统时,请确保在 STM32CubeMX 工程中配置以下设置。
1.打开 gettingStarted_F2027ZG.ioc 文件。
2.在 STM32CubeMX 工程中将引脚 (PB0) 配置为 GPIO_Output 以切换用户 LED。

3.同样,在 IOC 文件中将其他引脚 PB7 和 PB14 配置为 GPIO_Output 。

4.在 STM32CubeMX > 中间件 > FREERTOS > 接口中对接口选择 CMSIS_V2。

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

6.在 STM32CubeMX > 中间件 > FREERTOS > 高级设置 > Newlib 设置中将 USE_NEWLIB_REENTRANT 设置为 Enabled 。

从 Simulink 模型生成代码并加载到硬件板上
1.要为模型生成代码,请按 Ctrl+B 或点击编译、部署和启动。

2.按照编译过程进行操作,方法是使用模型画布底部提供的链接打开诊断查看器。在您将代码加载到板上后,硬件板上的 LED 会闪烁,表示代码正在运行。