STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2 JoyStick Demo... 8 3 EWARM 的 项 目 配 置 选 项... 10 3.1 General Options... 10 3.2 C/C++ Compiler... 11 3.3 Linker... 14 3.4 Debugger... 15 4 参 考... 17 4.1 手 册... 17 4.2 网 站... 17
1 EWARM 安 装 1.1 第 一 步 : 在 线 注 册 基 于 STMEVKIT 的 两 个 示 例 项 目 均 使 用 IAR Embedded Workbench for ARM (EWARM) 进 行 开 发 您 可 以 通 过 以 下 链 接 下 载 EWARM KickStart 版 本 (32KB 代 码 大 小 限 制 ), 此 版 本 免 费 使 用 http://supp.iar.com/download/sw/?item=ewarm-ks32 在 如 上 的 页 面 中 点 击 Continue 并 填 写 您 的 注 册 信 息 1
点 击 Submit registration 完 成 本 步 骤 1.2 第 二 步 : 下 载 软 件 几 分 钟 之 后, 在 您 的 注 册 信 息 中 提 供 的 信 箱 将 会 自 动 收 到 一 封 邮 件, 如 下 所 示 : 点 击 邮 件 中 的 链 接, 打 开 下 载 页 面, 如 下 图 所 示 : 2
现 在 您 就 可 以 下 载 安 装 EWARM KickStart 版 本 的 安 装 程 序 了, 可 以 选 择 HTTP 下 载, 也 可 以 选 择 FTP 下 载 请 保 存 安 装 程 序 到 本 地 磁 盘 1.3 第 三 步 : 安 装 EWARM 1) 双 击 已 经 下 载 的 安 装 文 件 EWARM-KS-WEB-5302, 选 择 Install IAR Embedded Workbench: 3
2) 继 续 安 装 过 程, 直 到 Enter User Information, 填 入 个 人 信 息 和 license number,license number 在 您 接 收 到 的 邮 件 中 可 以 获 得 3) 点 击 Next, 复 制 License Key 到 以 下 的 窗 口,License Key 也 在 您 接 收 到 的 邮 件 中 获 得 注 意 必 须 将 # 以 及 # 之 前 的 字 符 全 部 复 制 4) 继 续 安 装 过 程, 直 到 Setup Complete 点 击 Finish, 结 束 安 装 过 程 4
5
2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行 2.1 GPIO Demo 项 目 描 述 ============== 这 个 示 例 描 述 了 如 何 使 用 GPIO BSRR(Port bit set/reset register) 寄 存 器 以 及 BRR(Port bit reset register) 寄 存 器 来 触 发 IO 输 入 输 出, 板 上 的 LD2, LD3, LD4, LD5 将 轮 流 闪 亮 硬 件 配 置 ================= - STLink_USB: 跳 线 选 择 ST-LINK - 使 用 一 根 USB 线, 连 接 CN4 (ST-LINK) 和 PC 运 行 demo =============== 请 按 照 以 下 步 骤 运 行 demo 程 序 : - 打 开 EWARM 集 成 开 发 环 境 IDE: 选 择 Start -> Programs -> IAR Systems -> IAR Embedded Workbench for ARM KickStart -> IAR Embedded Workbench - 打 开 Workspace: 在 EWARM IDE 菜 单 中 选 择 File -> Open -> Workspace 在 Open Workspace 对 话 框 中, 在 [...]\IAR-STMEVKIT\GPIO 路 径 下, 选 择 文 件 GPIO Demo.eww, 点 击 Open 打 开 workspace 文 件 : 6
- Build 项 目 : 在 Workspace 面 板 里, 右 击 项 目 名 (GPIO Demo), 选 择 Rebuild All 来 编 译 和 链 接 所 有 的 项 目 文 件 你 也 可 以 通 过 菜 单 选 项 Project -> Rebuild All 来 实 现 相 同 的 功 能 这 步 完 成 之 后, 在 Build 面 板 里 将 提 示 没 有 警 告 和 错 误 的 信 息 7
- Download 程 序 the program: 在 工 具 栏 里 点 击 或 者 从 菜 单 栏 里 选 择 Project -> Debug 来 下 载 代 码 到 flash 空 间 调 试 器 将 会 在 main() 函 数 的 入 口 处 停 止 : - 调 试 和 执 行 程 序 : 关 于 程 序 调 试 的 详 细 信 息, 请 参 考 EWARM_UserGuide.pdf 的 Part.4 Debugging 章 节 ( 您 可 以 从 菜 单 栏 里 选 择 Help, 打 开 ARM Embedded Workbench User Guide) 这 里 我 们 仅 从 工 具 栏 里 点 击 点 击 来 运 行 程 序 ( 也 可 使 用 菜 单 栏 Debug -> Go) - 代 码 运 行 正 常, 板 上 的 LD2, LD3, LD4, LD5 将 轮 流 闪 亮 2.2 JoyStick Demo 项 目 描 述 ============== 这 个 示 例 描 述 了 通 过 对 USB 的 配 置 使 用, 以 及 板 上 的 操 纵 杆, 来 模 拟 鼠 标 上 下 左 右 移 动 的 功 能 硬 件 配 置 ================= - STLink_USB: 跳 线 选 择 ST-LINK - 使 用 一 根 USB 线, 连 接 CN4 (ST-LINK) 和 PC - 程 序 运 行 之 后, 使 用 一 根 USB 线, 连 接 CN2 和 PC 8
运 行 demo =============== - build,download, 以 及 debug 的 步 骤 请 参 考 如 上 的 GPIO 示 例 Workspace 工 程 文 件 位 于 [...]\IAR-STMEVKIT\JoyStick 路 径 下 - 点 击 运 行 程 序 之 后, 使 用 一 根 USB 线, 连 接 CN2 和 PC, 再 上 下 左 右 四 个 方 向 移 动 板 上 的 操 纵 杆,PC 上 的 鼠 标 光 标 将 跟 随 操 纵 杆 上 下 左 右 移 动 9
3 EWARM 的 项 目 配 置 选 项 为 了 使 用 EWARM 来 构 建 STM32 的 应 用 程 序, 您 需 要 了 解 EWARM 不 同 的 配 置 选 项 的 含 义, 例 如 device selection,compiler,assembler,linker,debugger 等 等 作 为 一 个 例 子, 请 在 Workspace 面 板 里 右 击 项 目 名 GPIO Demo 并 选 择 Options 来 打 开 Options for node xxx 对 话 框 同 样 的, 您 也 可 以 使 用 菜 单 栏 Project -> Options 打 开 对 话 框 3.1 General Options 从 Category 列 表 中 选 择 General Options 在 Target 选 项 卡 中, 根 据 具 体 的 硬 件, 从 菜 单 中 选 择 正 确 的 MCU ( 例 如 ST STM32F10xx8) 10
3.2 C/C++ Compiler 从 Category 列 表 中 选 择 C/C++ Compiler 在 Language 选 项 卡 中, 选 择 所 需 要 使 用 的 编 程 语 言 你 也 可 以 指 定 使 用 strict ISO/ANSI 编 程 语 言, 或 者 允 许 IAR 的 扩 展 关 键 字 ( 例 如 irq, ramfunc, 等 等 ) C IAR C/C++ 编 译 器 默 认 使 用 ISO/ANSI C 标 准, 遵 循 ISO 9899:1990 标 准, 也 就 是 我 们 熟 知 的 ANSI C 11
Embedded C++ Embedded C++,C++ 编 程 语 言 的 一 个 子 集, 专 为 嵌 入 式 编 程 所 设 计 它 是 Embedded C++ Technical committee 技 术 委 员 会 定 义 的 一 个 标 准 支 持 如 下 的 C++ 特 性 : 类 多 态 操 作 符 和 函 数 名 重 载 new 和 delete 内 联 函 数 那 些 消 耗 资 源 影 响 速 度 和 代 码 大 小 的 特 性 被 排 除, 像 模 板 类 多 重 和 虚 拟 继 承 异 常 处 理 运 行 时 类 型 信 息 名 字 空 间 等 等 Extended Embedded C++ Extended Embedded C++ 是 C++ 更 大 的 一 个 子 集, 由 IAR Systems 定 义 和 Embedded C++ 相 比, 它 增 加 了 如 下 的 特 性 : 模 板 多 重 和 虚 拟 继 承 名 字 空 间 mutable 属 性 操 作 符 转 换 static 转 换 const 转 换 以 及 reinterpret 转 换 Automatic 如 果 选 择 Automatic, 编 程 语 言 将 会 根 据 文 件 编 译 时 的 扩 展 名 自 动 进 行 选 择 扩 展 名 为 c 将 会 按 照 C 源 文 件 进 行 编 译, 扩 展 名 为 cpp 将 会 按 照 Extended Embedded C++ 源 文 件 进 行 编 译 在 Optimizations 选 项 卡 中, 你 可 以 选 择 编 译 优 化 的 级 别 和 类 型 Level IAR C/C++ 编 译 器 支 持 不 同 的 优 化 级 别, 在 最 高 的 优 化 级 别 中, 你 可 以 指 定 按 照 Speed,Size 或 者 Balanced 优 化 None ( 最 好 的 调 试 支 持 ) Low Medium 12
High, Balanced ( 自 动 的 在 速 度 和 大 小 之 间 作 平 衡 ) High, Speed ( 速 度 优 先 ) High, Size ( 代 码 大 小 优 先 ) Enabled transformations 为 了 产 生 最 优 的 目 标 码, 编 译 器 将 会 对 源 码 作 很 多 的 转 换 根 据 不 同 的 优 化 级 别, 编 译 器 自 动 执 行 下 面 的 转 换, 也 可 以 在 复 选 框 中 自 己 选 择 Common subexpression elimination Loop unrolling Function inlining Code motion Type-based alias analysis Static variable clustering Instruction scheduling 更 多 关 于 优 化 级 别 和 转 换 的 信 息, 请 参 考 EWARM_DevelopmentGuide.pdf 的 Controlling compiler optimizations 章 节 在 Preprocessor 选 项 卡 中, 你 可 以 定 义 符 号 ( 宏 ), 添 加 编 译 器 使 用 的 include 路 径 Additional include directories 这 个 选 项 可 以 添 加 #include 文 件 路 径 13
在 查 找 标 准 的 include 路 径 之 前, 在 这 里 列 出 的 路 径 将 首 先 被 查 找 从 更 好 的 移 植 性 考 虑, 你 可 以 使 用 $TOOLKIT_DIR$ 来 定 义 EWARM 的 路 径, 使 用 $PROJ_DIR$ 来 定 义 当 前 项 目 文 件 的 路 径 Defined Symbols 可 以 方 便 的 指 定 一 个 选 项 或 者 值 你 可 以 为 整 个 项 目 定 义 符 号 的 类 型, 例 如 : TESTVER=1 /* equal to: #define TESTVER 1 */ TESTDEF /* equal to: #define TESTDEF */ 注 意 在 = 周 围 没 有 空 格 Defined symbols 选 项 和 #define 表 达 式 作 用 相 同 3.3 Linker 从 Category 列 表 中 选 择 Linker 在 Config 选 项 卡 中, 你 可 以 指 定 linker 配 置 文 件 的 路 径 和 名 字, 也 可 以 定 义 符 号 Linker Configuration File Linker 配 置 文 件 用 来 指 定 在 memory 中 代 码 和 数 据 的 位 置 和 大 小 你 也 可 以 使 用 复 选 框 Override default 来 覆 盖 默 认 的 Linker 配 置 文 件, 同 时 指 定 你 自 己 的 配 置 文 件 $TOOLKIT_DIR$ 或 $PROJ_DIR$ 可 以 用 来 提 高 程 序 的 可 移 植 性 你 也 可 以 点 击 Edit 来 打 开 Linker configuration file editor, 在 IDE 的 辅 助 下 创 建 自 己 的 linker 配 置 文 件 Configuration file symbol definitions 14
使 用 这 个 文 本 框 来 定 义 在 linker 配 置 文 件 中 使 用 的 常 量 符 号 这 些 符 号 和 在 linker 配 置 文 件 中 使 用 define symbol 指 令 定 义 的 符 号 作 用 相 同 更 多 关 于 linker 配 置 文 件 的 信 息, 请 参 考 EWARM_DevelopmentGuide.pdf 的 Linking using ILINK 以 及 Linking your application 章 节 3.4 Debugger 从 Category 列 表 中 选 择 Debugger 在 Setup 复 选 框 中, 从 Driver 下 拉 菜 单 中 选 择 ST-Link STMEVKIT 板 子 包 含 一 个 板 上 的 仿 真 器 ST-LINK Run to 复 选 框 用 来 指 定 C-SPY 调 试 器 运 行 之 后 停 止 的 位 置, 默 认 的 位 置 是 main() 函 数 在 Download 选 项 卡 中, 你 可 以 配 置 程 序 代 码 下 载 到 RAM 还 是 flash 15
Verify download 这 个 选 项 用 来 验 证 下 载 的 代 码 映 像 可 以 正 确 的 从 memory 空 间 中 读 出 Suppress download 这 个 选 项 用 来 调 试 已 经 驻 于 memory 空 间 中 的 应 用 程 序 当 选 择 这 个 选 项 时, 代 码 将 不 会 被 下 载, 而 会 保 留 flash 中 的 当 前 内 容 Use flash loader(s) 这 个 选 项 用 来 指 定 下 载 代 码 到 flash 中 所 用 的 一 个 或 多 个 flash loader 如 果 对 于 指 定 的 芯 片 ( 如 STM32F10xx8)flash loader 已 经 存 在, 则 使 用 default 关 于 更 多 flash loader 的 信 息, 请 参 考 用 户 手 册 FlashLoaderGuide.pdf ( 位 于 EWARM 的 doc 路 径 ) 16
4 参 考 4.1 手 册 使 用 EWARM 开 发 嵌 入 式 系 统 时 的 更 多 帮 助, 你 可 以 参 考 如 下 的 手 册 : 关 于 EWARM 的 基 本 使 用 方 法, 例 如 创 建 项 目 管 理 项 目 编 辑 编 译 链 接 和 调 试, 请 参 考 下 面 的 文 档 : EWARM_UserGuide.pdf -> Part 2. Tutorials EWARM_UserGuide.pdf -> Part 3. Project management and building EWARM C-SPY 调 试 器 的 使 用, 请 参 考 下 面 的 文 档 : EWARM_UserGuide.pdf -> Part 4. Debugging 集 成 开 发 环 境 IDE 的 设 置, 例 如 窗 口 菜 单 对 话 框 等, 请 参 考 下 面 的 文 档 : EWARM_UserGuide.pdf -> Part 7. Reference information 嵌 入 式 应 用 程 序 的 开 发 和 程 序 编 写, 请 参 考 下 面 的 文 档 : EWARM_DevelopmentGuide.pdf -> Part 1. Using the IAR build tools 代 码 和 数 据 的 存 放,linker 配 置 文 件, 请 参 考 下 面 的 文 档 : EWARM_DevelopmentGuide.pdf -> Part 1. -> Linking using ILINK EWARM_DevelopmentGuide.pdf -> Part 1. -> Linking your application EWARM_DevelopmentGuide.pdf -> Part 2. -> The linker configuration file IAR 对 标 准 C/C++ 语 言 的 扩 展, 请 参 考 下 面 的 文 档 : EWARM_DevelopmentGuide.pdf -> Part 2. -> Compiler extensions EWARM_DevelopmentGuide.pdf -> Part 2. -> Extended keywords EWARM_DevelopmentGuide.pdf -> Part 2. -> Pragma directives EWARM_DevelopmentGuide.pdf -> Part 2. -> Intrinsic functions 4.2 网 站 更 多 关 于 IAR Systems 开 发 工 具 的 信 息, 请 登 陆 我 们 的 网 站 : IAR EWARM ( 重 点 总 结, 特 征 特 点, 支 持 的 ARM 核 以 及 芯 片, 免 费 的 评 估 版 以 及 KickStart 版 本, 用 户 手 册, 代 码 示 例, 生 动 的 flash 教 程 等 等 ): http://www.iar.com/ewarm IAR PowerPac for ARM(RTOS, 文 件 系 统 File System, TCP/IP 栈, USB 栈 ) http://www.iar.com/pparm IAR visualstate (UML 状 态 图 的 软 件 模 型 及 设 计 工 具 ) 17
http://www.iar.com/vs 18