在具有 RTOS 的 STM32Cube 上开发应用! \6 Q) F% z! p5 a# y B8 Z 前言 0 O7 l7 B9 N5 L1 P$ \; U& L* a2 R STMCubeTM 计划源自意法半导体,旨在通过减少开发的工作量、时间与成本,使开发者受益。 STM32Cube 涵盖 STM32 产品系列。 1 `$ K+ Q# N2 j4 S1 S; Q8 w" I STM32Cube 1.x 版包括: • 图形软件配置工具 STM32CubeMX,可通过图形化的生成初始化 C 代码。 • 针对每个系列提供综合的嵌入式软件平台 (即 STM32CubeF4 用于 STM32F4 系列)- P/ {4 L8 h E, B8 ]" T – STM32 抽象层嵌入式软件 STM32Cube HAL,确保在 STM32 各个产品之间实现最大限度的可移植性 – 一套一致的中间件,比如 RTOS、 USB、 TCP/IP、图形7 b; e3 m; o" W* s! A% o – 所有嵌入式软件实用工具均配备一套完整的示例。 8 [+ O+ o4 `, C' j0 I8 y" I7 H + h0 b- i7 ?# N1 \; F 实时操作系统是为在嵌入式 / 实时应用中使用而优化的操作系统。它们的主要目标是确保及时、确定性地响应事件。使用实时操作系统,应用可写为一组独立的线程,线程间使用消息队列和信号量通信。 - C6 P2 z [3 v5 b4 ?: ?) V 本用户手册的目标读者为在 STM32 微控制器上使用 STM32Cube 固件的开发者。它完整描述了如何使用具有实时操作系统 (RTOS)的 STM32Cube 固件组件;本用户手册还提供了一组示例说明,它们基于 FreeRTOS,使用 CMSIS-OS 封装层提供的通用 API。 / {2 X/ a& W$ E @2 k$ N 在 STM32Cube 固件中,通过 ARM 提供的通用 CMSIS-OS 封装层,将 FreeRTOS 用作实时操作系统。使用 FreeRTOS 的样例和应用可直接移植到其它任何 RTOS 而不需要修改高层API,在此情况下仅需更改 CMSIS-OS 封装。 请参考软件包的发布说明,以了解与 STM32CubeTM 共同使用的 FreeRTOS 和 CMSIS-RTOS固件组件版本。 9 @% S# ?4 b8 [: ]1 L/ K 本文档适用于所有 STM32 器件;然而为了简洁起见,以 STM32F4xx 器件和 STM32CubeF4作为参考平台。若需了解更多在 STM32 设备上样例实现的信息,请参考相关 STM32Cube 固件包中提供的自述文件。# ~1 N7 |' [/ W5 {. a" d. K ( D8 S( c* W3 h: U% {$ Z 1 Free RTOS 1.1 概述 , n1 u- G9 F8 U4 L" n! N FreeRTOS 是 RTOS 的一种,尺寸非常小,可运行于微控制器上,但其使用并不限于微控制器应用。 ) g* x* f9 f9 ?( x. | 微控制器是尺寸小、资源受限的处理器,它在单个芯片上包含了处理器本身、用于保存要执行的程序的只读存储器 (ROM 或 Flash)、所执行程序需要的随机存取存储器 (RAM)。一般情况下,程序直接从只读存储器执行。 ; b4 ]: n+ @6 W% h& j, c. U + l9 P R, E B$ j5 v5 S5 | 微控制器用于深度嵌入式应用(对于那些应用,您永远不会看到处理器本身或运行的软件),它们一般有非常明确、专门的工作。尺寸的限制以及专用的终端应用等性质,令其很少能使用完整的 RTOS 实现 - 或者说不可能使用完整的 RTOS 实现。因此,FreeRTOS 仅为内核提供了实时调度功能、任务间通信、时序和同步原语。这意味着更准确地说,它是一个实时内核,或实时执行器。命令控制台界面、网络栈等额外的功能可作为附加组件。 _$ p* b9 Z: Q FreeRTOS 为可调整的实时示例生成器内核,专为小型嵌入式系统设计。其特点包括 + S; c& v) V: s* i+ J% ~2 N! o- D • Free RTOS 示例生成器内核 —— 优先式、合作式及混合式配置选项。 9 E% U4 a- k5 L5 S' \ • 官方支持 27 种架构 (ARM7 和 ARM Cortex M3 每个算一种架构)。 • FreeRTOS-MPU 支持 Cortex M3 存储器保护单元 (MPU)。 - g7 ]2 L+ i$ M B0 j. n • 设计目标为小尺寸、简单和易用。一般来说,示例生成器内核二进制映像大约为 4K 到9K 字节。 • 代码结构极易移植,主要用 C 编写。 • 支持任务和协同例程。 ( H9 G0 N5 E7 |0 L • 可通过队列、二进制信号量、计数信号量、递归信号量、互斥量在任务间、任务与中断间通信和同步。 • 互斥量有优先级继承。 • 支持高效的软件定时器。 • 强大的执行跟踪功能。 % o; p) r2 B' D+ m. `6 K; q • 栈溢出检测选项。 5 f( r0 b# J8 N • 预配置的示例应用,用于选定的单板电脑,可直接使用,加快学习曲线。 3 g% i; P* o. q8 ^% ` • 免费论坛支持,或可选择商业支持和授权。 , g# \- ?5 Q/ ?8 I8 g • 可创建的任务数无软件限制。 • 可使用的优先级数无软件限制。 # b% u7 @& r* H# i* _ • 优先级指定无限制 - 可为多个任务指定同一优先级。 • 免费的开发工具可用于很多支持的架构。 • 免费的嵌入式软件源代码。 • 免版税。 • 可从标准的 Windows 主机交叉开发。 .......... 1 v9 A/ [. U Q: E 想了解更多,请下载原文阅读 |