收藏 分享(赏)

STM32入门简易教程.pdf

上传人:weiwoduzun 文档编号:3580960 上传时间:2018-11-13 格式:PDF 页数:71 大小:2.13MB
下载 相关 举报
STM32入门简易教程.pdf_第1页
第1页 / 共71页
STM32入门简易教程.pdf_第2页
第2页 / 共71页
STM32入门简易教程.pdf_第3页
第3页 / 共71页
STM32入门简易教程.pdf_第4页
第4页 / 共71页
STM32入门简易教程.pdf_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、S T M 3 2 S T M 3 2 S T M 3 2 S T M 3 2 入门简 易教程 第一 章 S T M 3 2 S T M 3 2 S T M 3 2 S T M 3 2 处理 器概 述 优秀的处理器配合好的开发工具和工具链成就了单片机的辉煌, 这是单片机开发者辛勤 劳动的结果。 也正因为此, A R M 的工具链工程师和 C P U 工程师强强联手, 日日夜夜不停耕 耘为 A R M 7T D M I 设计出了精练、 优化和到位的内部结构,终于成就了 A R M 7T D M I 的风光 无限的辉 煌。新的 A R M C or t e x- M 3 处理器在 破茧而出之后,就

2、 处处闪耀着 A R M 体系结构 激动人心的新突破。它是基于最新最好的 32 为 A R M v7 架构,支持高度成功的 T hum b- 2 指 令集, 并带来了很多前卫崭新的特性。 在它优秀, 强大的同时, 编程模型也更清爽, 因而无 论你是新手还是骨灰级玩家都会对这样秀外慧中的小尤物爱不释手。 根据 A R M 的统计 , 2010 年全部 C or t e x- M M C U 出货量 为 1. 44 亿片, 2008 年 201 1 年 第一季度,S T M 32 累计出货量占 C or t e x- M M C U 出货量的 45% 。也就是说,两个 C or t e x- M

3、微控制器中有一个就来自 S T 。 ”很多市场分析机构也 A R M 的强劲增长表示认可。2007 年, 在 32/ 64 bi t M C U 及 M P U 架构中, A R M 所占市场份额为 13. 6% , 而 2010 年已经占了 23. 5% , 击败了 P ow e r A r c hi t e c t ur e , 成为市场占有率最多的架构。 C o r t e x - M 3 内核 是 A R M 公司 整个 C o r t e x 内核 系列中 的微控 制器系 列 (M ) 内核 , 还是 其他 两个系 列分 别是应 用处 理器系 列( A )与 实时 控制处 理系 列(

4、 R ) ,这 三个 系列 又分 别简 称为 A 、R 、M 系列 。当 然, 这三 个系 列的 内核 分别有 各自 不同 的应 用场 合。 C or t e x- M 3 内核 是为满 足存储 器和处 理器的 尺寸对 产品成 本影响 很大的 广泛市 场和应 用领域的低成本需求而专门开发设计的。 主要 是应用 于低成 本 、 小管 脚数和 低功耗 的场 合 , 并 且 具 有 极 高 的 运 算 能 力 和 极 强 的 中 断 响 应 能 力 。 C o r t e x - M 3 处 理 器 采 用 纯 T h u m b 2 指令 的执 行方式 ,这 使得这 个具 有 3 2 位高 性能

5、的 A R M 内核 能够 实现 8 位 和 1 6 位的 代码存 储密度 。 核心 门数只 有 3 3 K , 在包 含了必 要的外 设之后 的门数 也只 有 6 0 K ,使 得封装 更为小 型,成 本更加 低廉。 C o r t e x - M 3 采 用了 A R M V 7 哈 佛架 构, 具有 带分 支预 测的 3 级 流水 线, 中断 延 迟 最 大 只 有 1 2 个 时 钟 周 期 , 在 末 尾 连 锁 的 时 候 只 需 要 6 个 时 钟 周 期 。 同 时 具 有 1 . 2 5 D M I P S / M H Z 的性 能和 0 . 1 9 M W / M H Z

6、的功 耗。 意法 半导 体 是 C or t e x- M 3 内核开发项目的一 个主要合作方,现在是第一个推出 基于这 个内核产品的主要微控制器厂商。 S T 也是世界上为数不多的几家能够提供从二极管到处理 器的全系 列电机控制器件 的厂商。 意 法半导 体 S T M 3 2 系 列是业 界最 丰富 的基 于 A R M C o r t e x M 微控 制器系 列 , 共有 2 5 0 余款 存储容 量不同 的产品 , 拥有 丰富的 外设接 口 、 业界 最好的 开发生 态系统 、出色 的功耗 和整体 功能。 适用于 需要实 时控制 或联网 的 任何 消费电 子产品 或电子 设备应 用。

7、 在性能方 面, S T M 32 系列的处 理速度比同级别 的基于 A R M 7 T D M I 的产品快 30% ,换 句话说,如果处理 性能相同, S T M 32 产品功耗比同级别 产品低 75% 。同样地,使用新 内核 的 T hum b 2 指令集, 设计人员可以把代 码容量降低 45% ,几乎把 应用软件所需内存 容量降 低了一半。 此外, 根据 D hr ys t one s 和其它性能测试结果, S T M 32 的性能比最好的 16 位架构 至少高出一倍。 意法 半导 体 是市场上第一家提 供基于 C or t e x- M 3 内核的无传感器的 磁场定向电机控制解决方案

8、的厂商。这套工具证明 S T M 32 的内核和专用电机控制外设都有充足的处理能力来 优化驱动器的性能, 最小化系统总体成本。 S T M 微控制器在 25 微秒内即可执行一整套无传 感器三相无刷永磁 同步电机( P M S M )矢量控制算法, 大多数应用任务占用 C P U 资源比率 小于 30% ,为 C P U 执行其它应用任务(如需要)预留了充足的处理能力。永磁电机同步电 机控制解决方案的代码大小少于 16 千字节。 意法半导体在推出 S T M 32 微控制器之初,也同时提供了一套完整细致的固件开发包, 里面包含了在 S T M 32 开发过程中所涉及到的所有底层操作。尽管库不是那

9、么尽如人意,但 是通过在程序开发中引入这样的固件开发包, 可以使开发人员从复杂冗余的底层寄存器操作 中解放出来, 将精力专注应用程序的开发上 , 这便是 S T 推出这样一个开发包的初衷 。 事实 上也确实带给了我们很大的方便,因而很多人在用。 正是由于上面的特点,我们在此选用了 S T M 32 系列的 A R M 芯片。 注:因参考资料较多,不一一详述,如涉及作者利益,请联系修改。 湖北师范学院 电工电子实验教学示范中心第二 章 学习 建议 一、 较低 的学习 门槛 社会对基于 A R M 的嵌入式系统开发人员的高需求及给予的高回报, 催生了很多的培训 机构,这也说明嵌入式系统的门槛较高,

10、其主要原因有以下几点。 1、 A R M 本身复杂的体系结构和编程模型, 使得我们必须了解详细的汇编指令, 熟悉 A R M 与 T hum b 状 态 的 合 理 切 换 , 才 能 理 解 B oot l oa de r 并 对 操 作 系 统 进 行 移 植 , 而 理 解 B oot l oa de r 本身就比较困难 ,因而对于初学者来说 B oot l oa de r 的编写与操作系 统的移植 成了入门的第一道难以逾越的门槛; 2、 A R M 芯片,开发板及 仿真器的高成本,这样就直接影响 了嵌入式开发的普及,使得这 方面人才增长缓慢; 3、 高校及社会上高水平嵌入式开发人员的短

11、缺, 现实问题使得我们的大学生和公司职工在 入门的道路上困难重重,很多人也因此放弃; 4、 培训机构的高费用, 虽然有高水平的老师指导,但是高费用就是一道关口, 进去的人也 只是在短短的几天时间里匆匆了解了一下开发过程, 消除了一些畏惧心理而已, 修行还 是得依靠自己; 5、 好的开发环境需要资金的支持,也直接影响了入门的进度。 基于 C or t e x- M 3 内核的 A R M 处理器的出现, 在优秀的 K e i l 开发工具的支持下, 可以自 动生成启动代码,省去了复杂的 B oot l oa de r 的编写。 T hum b- 2 指令集 的使用,使 得开发人员 不用再考虑 A

12、 R M 状态与 T hum b 状态的 切换, 节省了执行时间和指令空间,大大减轻了软件开发的管理工作。 处理器与内存尺寸的减少, 大大降低了成本, 使得芯片及开发板的价格得以在很大程度 上降低。C or t e x- M 3 内核通过把中断控制器、M P U 及各种调试组件等基础设施的地址固定, 很大程度上方便了程序的移植。 源代码是公开的库函数, 使得我们可以摒弃晦涩难懂的汇编语言, 在不需要了解底层寄 存器的操作细节的情况下,用 C 语言就可以完成我们需要的功能。 所有这些特点使得我们学习 A R M 处理器的门槛得以降低。 同时 建议大家尽量去用固件 库。 而不是避开固件库自己写代码

13、。 因为在实际的项目中, 代码成百上千个, 不可能都自己 来写, 调用固件库中的函数来完成, 才是可行的方案。 当然我们在深入的情况下, 透彻理解 寄存器的操作是必要的,也是值得的,高效编程也必须在这方面努力。 二、 重要 的参考 资料 1、 C or t e x- M 3 权威指南 宋岩 译 权威资料的精简版,思路清晰,有条理,适合学 C or t e x- M 3 处理器的所有人。 2、 S T M 32 技术参考手册 a ) S T M 32 微控制器产品的技术参考手册是讲述如何使用该产品的; b) 包含各个功能模块的内部结构、 所有可能的功能描述、 各种工作模式的使用和寄存器配置等详细

14、信息。 3、 S T M 32F 103R B 数据手册 a ) 产品的基本配置(内置 F L A S H 和 R A M 的容量、外设模块的种类和数量等) ; b) 管脚的数量和分配,电气特性,封装信息和订购代码等。 4、 S T M 32 开发板手册 与开发板配套的参考资料,有很多经验值得借鉴。 5、 s t m 32 固件库 a ) 相关定义,文档约定和固件库规则; b) 库的架构,安装指南及使用实例; c ) 每个外围模块的函数及解释。 6、 开发板原理图 必不可少的硬件电路参考。 7、 互联网 取之不尽的知识宝库。 三、 必要 的学习 步骤 对于初学者来说,困难较多,下面是需要了解的

15、一些信息,以供参考。 1 1 1 1 、 了解 C or t e x- M 3 C or t e x- M 3 C or t e x- M 3 C or t e x- M 3 内核 看完 C or t e x- M 3 权威指南的前 36 页,你就会知道什么是 C or t e x- M 3 。 2 2 2 2 、 认识 S T M 32F 103R B T 6 S T M 32F 103R B T 6 S T M 32F 103R B T 6 S T M 32F 103R B T 6 处理器 a ) 了解 S T M 32F 10xxx 技术参考手册与 S T M 32F 103xB 数据手

16、册; b) 了解 S T M 32F 10xxx 技术参考手册第二章存储器和总线构架,需要了解外设时, 再 具体查看具体的功能模块; c ) 芯片选型初期看数据手册以评估该芯片是否能满足功能需求; d) 基本选定芯片后就需要查看技术参考手册以确定各功能模块的功能是否符合要求; e ) 确定芯片型号, 进入编程阶段后需要详细阅读技术参考手册以获知各项功能的具体 实现方式和寄存器的配置使用; f ) 在设计硬件时还需要参考数据手册以获得电压、 电流、 管脚分配、 驱动能力等信息。 3 3 3 3 、 了解开发板原理图 参考开发板原理图,了解可支配的资源。 4 4 4 4 、 了解库的结构与使用 参

17、考 S T M 32 固件库中文版(U M 0427 )前三章。 5 5 5 5 、 熟悉开发工具的使用 a ) K E I L M D K 的使用( 本文所有实例均在 K e i l v4. 10 上编译通过) b) 程序下载软件 F l yM c u 的使用 c ) 串口调试助手的使用 6 6 6 6 、 了解时钟系统 时钟的配置涉及到所有的外设资源,所以我们应该对它有更深入的了解。 7 7 7 7 、 G P I O G P I O G P I O G P I O 8 8 8 8 、 定时器与中断 9 9 9 9 、 串口 10 10 10 10 、 A D C A D C A D C

18、A D C 、S P I S P I S P I S P I 、I I C I I C I I C I I C 、U S B U S B U S B U S B 。 。 。第三 章 编程 基础 一、 库函 数结构 与使 用 1、 S T M 32F 10X X X S T M 32F 10X X X S T M 32F 10X X X S T M 32F 10X X X V 3. 4 V 3. 4 V 3. 4 V 3. 4 标准外设库文件夹描述 S T M 32F 10x_S t dP e r i ph_L i b_V 3. 4. 0 _ht m r e s c 本 文件夹 包含 了所 有的

19、 ht m l 页 面 资源 L i br a r i e s C M S I S S T M 32F 10x_S t dP e r i ph_D r i ve r i nc 标准外设库驱动头文件 s r c 标准 外设 库驱 动源 文 件 P r oj e c t E xa m pl e s 标准外设库驱动的完整例程 T e m pl a t e M D K - A R M K E I L R V M D K 的项目模板示例 R I D E R a i s ona nc e R I D E 的 项目模板示例 E W A R M I A R E W A R M 的 项 目 模板示例 U t i

20、 l i t i e s S T M 3210- E V A L 本 文 件 夹 包 含 了 用 于 S T M 3210B - E V A L 和 S T M 3210E - E V A L 评估板的专用驱 动 标准 外设库 的第一 部分是 C M S I S 和 S T M 32F 10x_S t dP e r i ph_D r i ve r ,C M S I S 是独 立于 供应商的 C or t e x- M 处理器系列硬件抽象层, 为芯片厂商和中间件供应商提供了简单的处理 器软件接口, 简化了软件复用工作,降低了 C or t e x- M 上操作系统的移植难度, 并减少了新 入门的

21、微控制器开发者的学习难度和新产品的上市时间 。 S T M 32F 10x_S t dP e r i ph_D r i ve r 则包 括了分别 对应包括了所有外 设对应驱动函数 ,这些驱动函数均 使用 C 语言编写 ,并提供了 统一的易于调用的函数接口, 供开发者使用。 P r oj e c t 文件夹中则包括了 S T 官方的所有例程 和基于不同编译器的项目模板, 这些例程是学习和使用 S T M 32 的重要参考。 U t i l i t i e s 包含了 相关评估板的示例程序和驱动函数, 供使用官方评估板的开发者使用, 很多驱动函数同样可 以作为学习的重要参考。 2 2 2 2 、

22、文件功能说明 文件名 功能描述 具体功能说明 c or e _c m 3. h c or e _c m 3. c C or t e x- M 3 内核 及其设备文件 访问 C or t e x- M 3 内核及其设备: N V I C , S ys T i c k 等。 访问 C or t e x- M 3 的 C P U 寄存器和内核外设的函数。 s t m 32f 10x. h 微 控 制 器 专 用 头文件 这 个文件 包含 了 S T M 32F 10x 全 系列所 有外 设寄 存 器的定义 (寄存器的基地址和布局) 、 位定义、 中断 向量表、存储空间的地址映射等。s ys t e

23、m _s t m 32f 10x. h s ys t e m _s t m 32f 10x. c 微 控 制 器 专 用 系统文件 函数 S ys t e m I ni t ,用来初始化微控制器 函数 S ys e m _E xt M e m C t l ,用来配置外部存 储器控制 器。 它位于文件 s t a r t up_s t m 32f 10x_xx . s / . c , 在跳转 到 m a i n 前调用,S ys t e m F r e qunc y ,该值代表系统时 钟频率。 s t a r t up_s t m 32f 10x_X d. s 编 译 器 启 动 代 码 微控制

24、器专用的中断处理程序列表( 与头文件一致) 弱 定义 ( W e a k) 的 中断 处 理程 序 默认 函 数 ( 可 以被 用 户代码覆盖) 该文件是与编译器相关的。 s t m 32f 10x_c onf . h 固 件 库 配 置 文 件 通过更改包含的 外设头文件来选择固件库所使用的 外设,在新建程 序和进行功能变更之前应当首先修 改对应的配置。 s t m 32f 10x_i t . h s t m 32f 10x_i t . c 外 设 中 断 函 数 文件 用户可以相应的 加入自己的中断程序的代码,对于 指向同一个中断 向量的多个不同中断请求,用户可 以 通 过判 断 外 设

25、的中 断 标 志 位来 确 定 准 确的 中 断 源,执行相应的中断服务函数。 s t m 32f 10x_ppp. h s t m 32f 10x_ppp. c 外 设 驱 动 函 数 文件 包 括 了相 关 外 设 的初 始 化 配 置和 部 分 功 能应 用 函 数,这部分是进行编程功能实现的重要组成部分。 A ppl i c a t i on. c 用户文件 用户程序文件, 通过标准外设库提供的接口进行相 应的外设配置和功能设计。 3 3 3 3 、 基于 C M S I S C M S I S C M S I S C M S I S 标准的软件架构 根据调查研究, 软件开发已经被嵌入

26、式行业公认为最主要的开发成本。 对于 A R M 公司 来说, 一个 A R M 内核往往会授权给多个厂家, 生产种类繁多的产品, 如果没有一个通用的 软件接口标准, 那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本, 因此, A R M 与 A t m e l 、 I A R 、 K e i l 、ha m i - na r y M i c r o 、M i c r i um 、 N X P 、S E G G E R 和 S T 等诸多芯片 和软件厂商合作,将所有 C or t e x 芯片厂商产品的软件接口标准化,制定了 C M S I S 标准。 此 举意在降低软件开发成本,

27、 尤其针对新设备项目开发, 或者将已有软件移植到其他芯片厂商 提供的基 于 C or t e x 处理器的 微控制器的情况。 有了该标准,芯 片厂商就能够将他 们的资源 专注于产品外设特性的差异化, 并且消除对微控制器进行编程时需要维持的不同的、 互相不 兼容的标准的需求,从而达到降低开发成本的目的。 如下图所示,基于 C M S I S 标准的软件架构主要分为以下 4 层:用户应用层、操作系统 及中间件接口层、 C M S I S 层、 硬件寄存器层。其中 C M S I S 层起着承上启下的作用: 一方面 该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对 C or t e x- M 系列微

28、处理器核内外设寄 存器的不同定义; 另一方面又向上层的操作系统及中间件接口层和应用层提供接口, 简化了 应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此, C M S I S 层的实现相对复杂。C M S I S 层主要分为以下 3 个部分: ( 1) 核内外设访问层 (C P A L ,C or e P e r i phe r a l A c c e s s L a ye r ) :该层由 A R M 负责实现。包括 对寄存器名称、地址的定义,对核寄存器、 N V I C 、调试子系统的访问接口定义以及对特殊 用途寄存器的访问接口 (例如: C O N T R

29、O L , xP S R ) 定义。 由于对特殊寄存器的访问以内联 方式定义, 所以针对不同的编译器 A R M 统一用来屏蔽差异。 该层定义的接口函数均是可重 入的。 ( 2) 片上外设访问层( D P A L , D e vi c e P e r i phe r a l A c c e s s L a ye r ) :该层由芯片厂商负责实现 。 该 层的实现 与 C P A L 类似,负 责对硬件寄存器地 址以及外设访问 接口进行定义。该 层可调 用 C P A L 层提供的接口函数同时根据设备特性对异常向量表进行扩展, 以处理相应外设的中断 请求。 ( 3) 外设访问函数( A F P

30、, A c c e s s F unc t i ons f or P e r i phe r a l s ) :该层也由芯片厂商负责实现,主 要是提供访问片上外设的访问函数,这一部分是可选的。 对一个 C or t e x- M 微控制系统而言,C M S I S 通过以上三个部分实现了: 定义了访问外设寄存器和异常向量的通用方法; 定义了核内外设的寄存器名称和核异常向量的名称; 为 R T O S 核定义了与设备独立的接口,包括 D e bug 通道。 这样芯片厂商就能专注于对其产品的外设特性进行差异化, 并且消除他们对微控制器进 行编程时需要维持的不同的、互相不兼容的标准需求,以达到低成本

31、开发的目的。 4 4 4 4 、S T M 32F 10X X X S T M 32F 10X X X S T M 32F 10X X X S T M 32F 10X X X 标准外设库的使用 在 实 际 开 发 过 程 中 , 根 据 应 用 程 序 的 需 要 , 可 以 采 取 2 种 方 法 使 用 标 准 外 设 库 ( S t dP e r i ph_L i b) : ( 1) 使用外设 驱动:这时应用程 序开发基于外设 驱动的 A P I ( 应用编程 接口 ) 。用户只 需要配 置文件” s t m 32f 10x_c onf . h ” ,并使用相应的文件” s t m 32

32、f 10x_ppp. h/ . c ” 即可。 ( 2) 不使用外设驱动:这时应用程序开发基于外设的寄存器结构和位定义文件。 这两种方法的优缺点在“ 使用标准外设库开发的优势” 小节中已经有了具体的介绍, 这里仍要 说明的是, 使用使用标准外设库进行开发可以极大的减小软件开发的工作量, 也是目前嵌入 式系统开发的一个趋势。标准 外设库 ( S t dP e r i ph_L i b) 支持 S T M 32F 10xxx 系列 全部成员 :大容量 ,中容量 和小容 量产品。 从表 5- 6 中也可以看出, 启动文件已经对不同的系列进行了划分, 实际开发中根 据使用的 S T M 32 产品具体

33、型号,用户可以通过文件 ” s t m 32f 10x. h ” 中的预处理 de f i ne 或者通 过开发环境中的全局设置来配置标准外设库( S t dP e r i ph_L i b) , 一个 de f i ne 对应一个产品系列。 S T M 32F 10x_L D :S T M 32 小容量产品 S T M 32F 10x_M D :S T M 32 中容量产品 S T M 32F 10x_H D :S T M 32 大容量产品 在库文件中这些 de f i ne 的具体作用范围是: 文件“ s t m 3210f . h ” 中的中断 I R Q 定义 启动文件中的向量表,小容

34、量,中容量,大容量产品各有一个启动文件 外设存储器映像和寄存器物理地址 产品设置:外部晶振( H S E ) 的值等 系统配置函数 因此通过宏定义这种方式, 可以使标准外设库适用于不同系列的产品, 同时也方便与不 同产品之间的软件移植,极大的方便了软件的开发。 标准外设库中包含了众多的变量定义和功能函数, 如果不能了解他们的命名规范和使用 规律将会给编程带来很大的麻烦, 本节将主要叙述标准外设库中的相关规范, 通过这些规范 的学习可以更加灵活的使用固件库, 同时也将极大增强程序的规范性和易读性, 同时标准外 设库中的这种规范也值得我们在进行其他相关的开发时使用和借鉴。 5 5 5 5 、命名规

35、则 标准外设库遵从以下命名规则 P P P 表示任一外设缩写,例如:A D C 。源程序文件和头 文件命名都以“ s t m 32f 10x_ ” 作为开头, 例如: s t m 32f 10x _c onf . h 。 常量仅被应用于一个文件的, 定义于该文件中; 被应用于多个文件的, 在对应头文件中定义。 所有常量都由英文字母大写 书写。 寄存器作为常量处理。 他们的命名都由英文字母大写书写。 在大多数情况下, 他们采 用与缩写规范一致。 外设函数的命名以该外设的缩写加下划线为开头。 每个单词的第一个字 母都由英文字母大写书写,例如:SP I _Se ndD at a 。在函数名中,只允许

36、存在一个下划线 , 用 以分隔外设缩写和函数名的其它部分。对于函数命名,总的来说有以下规则: 名为 P P P _I ni t 的函数, 其功能是根据 P P P _I ni t T ype D e f 中指定的参数, 初始化外设 P P P , 例如 T I M _I ni t . 名 为 P P P _D e I ni t 的 函 数 , 其 功 能 为 复 位 外 设 P P P 的 所 有 寄 存 器 至 缺 省 值 , 例 如 T I M _D e I ni t . 名为 P P P _I ni t 的函数, 其功能为通过设置 P P P _I ni t T ype D e f 结构

37、中的各种参数来定义外 设的功能,例如:U S A R T _I ni t . 名为 P P P _C m d 的函数,其功能为使能或者失能外设 P P P ,例如: S P I _C m d. 名为 P P P _I T C onf i g 的函 数, 其功 能为 使能 或者 失能 来自外 设 P P P 某中 断源 ,例 如: R C C _I T C onf i g. 名为 P P P _D M A C onf i g 的函数,其功能为使能或者失能外设 P P P 的 D M A 接口,例如: T I M 1_D M A C onf i g. 用以配置外设功能的函数,总是以字符串“ C o

38、nf i g ” 结尾,例如 G P I O _P i nR e m a pC onf i g. 名为 P P P _G e t F l a gS t a t us 的函数, 其功能为检查外 设 P P P 某标志位 被设置与否,例 如 : I 2C _G e t F l a gS t a t us . 名为 P P P _C l e a r F l a g 的函数,其功能为清除外设 P P P 标志位,例如:I 2C _C l e a r F l a g. 名为 P P P _G e t I T S t a t us 的函 数, 其功能 为判 断来自 外设 P P P 的中 断发 生与否 ,

39、例 如: I 2C _G e t I T S t a t us . 名为 P P P _C l e a r I T P e ndi ngB i t 的函数, 其功能为清除外设 P P P 中断待处理标志位, 例如: I 2C _C l e a r I T P e ndi ngB i t . 这样的命名方式非常便于程序的编写和阅读, 以标准外设库中的示例函数为例, 下面摘 录了 S T M 32F 10x_S t dP e r i ph_E xa m pl e s A D C 3A D C s _D M A m i a n. c 中的一段程序。 D M A _I ni t T ype D e f

40、 D M A _I ni t S t r uc t ur e ; / * D M A 1 c ha nne l 1 c onf i gur a t i on - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ D M A _D e I ni t ( D M A 1_C ha nne l 1) ; D M A _I ni t S t r uc t ur e . D M A _P e r i phe r a l B a s e A ddr = A D C 1_D

41、 R _A ddr e s s ; D M A _I ni t S t r uc t ur e . D M A _M e m or yB a s e A ddr = ( ui nt 32_t ) D M A _I ni t S t r uc t ur e . D M A _D I R = D M A _D I R _P e r i phe r a l S R C ; D M A _I ni t S t r uc t ur e . D M A _B uf f e r S i z e = 1; D M A _I ni t S t r uc t ur e . D M A _P e r i phe r

42、 a l I nc = D M A _P e r i phe r a l I nc _D i s a bl e ; D M A _I ni t S t r uc t ur e . D M A _M e m or yI nc = D M A _M e m or yI nc _D i s a bl e ; D M A _I ni t S t r uc t ur e . D M A _P e r i phe r a l D a t a S i z e = D M A _P e r i phe r a l D a t a S i z e _H a l f W or d; D M A _I ni t S

43、 t r uc t ur e . D M A _M e m or yD a t a S i z e = D M A _M e m or yD a t a S i z e _H a l f W or d; D M A _I ni t S t r uc t ur e . D M A _M ode = D M A _M ode _C i r c ul a r ; D M A _I ni t S t r uc t ur e . D M A _P r i or i t y = D M A _P r i or i t y_H i gh; D M A _I ni t S t r uc t ur e . D

44、M A _M 2M = D M A _M 2M _D i s a bl e ; D M A _I ni t ( D M A 1_C ha nne l 1, / * E na bl e D M A 1 c ha nne l 1 */ D M A _C m d( D M A 1_C ha nne l 1, E N A B L E ) ; 这段程序完成了 D M A 1 通道的配置,首先 定义了 D M A _I ni t T y pe D M A _I ni t St r uc t ur e ,接 着配置 D M A _I ni t T y pe 的各种参数,各参数的命名方式也均使用约定的命名方式

45、,从命名就 能 够 很 容 易 的 看 出 各 参 数 所 指 代 的 具 体 功 能 。 功 能 参 数 配 置 完 成 后 , 使 用 D M A _I ni t ( D M A 1_C hanne l 1, 完 成 相 应 外 设 的 初 始 化 , 最 后 使 用 D M A _C m d( D M A 1_C hanne l 1, E N A B L E ) 使能相应外设。 从这个例子就能够很容易的看出标准 外设库这种规范化的命名规则给编写和阅读程序带来的好处。 6 6 6 6 、变量定义 在早期的版本中有 24 个变量定义,在 s t m 32f 10x_t ype . h 中,可

46、以找到对应的定义。 / * I nc l ude s - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ / * E xpor t e d t ype s - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

47、 - - - */ t ype de f s i gne d l ong s 32; t ype de f s i gne d s hor t s 16; t ype de f s i gne d c ha r s 8; t ype de f s i gne d l ong c ons t s c 32; / * R e a d O nl y */ t ype de f s i gne d s hor t c ons t s c 16; / * R e a d O nl y */ t ype de f s i gne d c ha r c ons t s c 8; / * R e a d O

48、nl y */ t ype de f vol a t i l e s i gne d l ong vs 32; t ype de f vol a t i l e s i gne d s hor t vs 16; t ype de f vol a t i l e s i gne d c ha r vs 8; t ype de f vol a t i l e s i gne d l ong c ons t vs c 32; / * R e a d O nl y */t ype de f vol a t i l e s i gne d s hor t c ons t vs c 16; / * R e

49、 a d O nl y */ t ype de f vol a t i l e s i gne d c ha r c ons t vs c 8; / * R e a d O nl y */ t ype de f uns i gne d l ong u32; t ype de f uns i gne d s hor t u16; t ype de f uns i gne d c ha r u8; t ype de f uns i gne d l ong c ons t uc 32; / * R e a d O nl y */ t ype de f uns i gne d s hor t c ons t uc 16; / * R e a d O nl y */ t ype de f uns i gne d c ha r c ons t uc 8; / * R e a d O nl y */ t ype de f vol a t i l e uns i gne d l ong vu32; t ype de f vol a t i l e uns i gne d s hor t vu16; t ype de f vol a t i l e uns i gne d c ha r vu8; t

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报