全网唯一标准王
前言 意法半导体公司(下文简称意法公司)近年来在国内单片机市场上的业绩可圈可点,旗下STM32系列单片机凭借其高性能、高性价比成为32位单片机的市场主力,在如今的人才市场上,会不会使用 STM8和STM32单片机往往是用人方选择硬件工程师的条件之一,其重要性和业界的影响力可见一斑。在意法公司的产品线中,STM32F0系列是32位微控制器中的入门级产品。该系列基于ARM公司的 Cortex-M0内核,集实时性能、低功耗运算和STM32平台的先进架构及外设于一身,既保留了对传统8位和16位市场的压倒性竞争力,又可以传承STM32用户的开发平台和程序代码,是入门STM32开发的 不二之选。本书将以STM32F0系列微控制器中的旗舰型号STM32F072VBT6微控制器为例,从整体架构、存储器、时钟树、异常处理、DMA和外设模块等方面做详细的介绍,特别是对微控制器片内的 bxCAN模块和USB模块的原理和开发方法进行重点介绍。 学习ARM微控制器的方法其实与学习8位机并无两样,只要找准入门的方法就会事半功倍。在接触STM32F0系列的32位单片机之前,你一定也曾经是8位单片机的“发烧友”,回想当初我们使用8051 单片机点亮一个LED时,那种激动的心情至今仍难以忘怀。在此笔者向大家推荐与当初学习8051单片机相同的方法,即从一个简单的实验入手,如点亮一个LED,由局部到整体,逐步积累开发经验,增强 信心,循序渐进,由浅入深。要特别注意的是不要在你还没有学会使用寄存器和函数来操作STM32的时候,就贸然研究操作系统移植、图形用户界面(GUI)以及上位机开发等。这不但会让你对学习 STM32望而却步,还会使你对学习嵌入式开发的信心丧失,这是最可怕的事情。本书不拘泥于概念和原理的探究,而是立足于实践,从系统板基础电路起步,一章一个例子、一章一个实验、一章一个总 结、一个模块一套或多套代码,从最基本的I/O口学起,逐步拓展到定时器、时钟、串行口、ADC等,届时你会发现其实STM32与8位单片机也没有太大差别。 近期,意法公司专门针对旗下不同系列的微控制器产品推出了一款全新的开发软件——STM32CubeMX。该软件允许用户使用图形化界面简单直观地对目标微控制器的引脚、时钟等进行初始化设置, 并能针对不同的集成开发环境,如EWARM、MDK-ARM、TrueSTUDIO等快速生成开发项目,这无疑是STM32入门用户最重大的利好消息。本书将利用STM32CubeMX作为项目建立和代码初始化工具, 快速生成STM32F0系列微控制器的程序架构,并在MDK-ARM软件上对代码进行进一步的编辑修改,直至完成最终的项目开发。 作为STM32微控制器开发的新手,往往在从寄存器开发入手还是从固件库开发入手的选择上纠结不定。业界对开发STM32系列微控制器的方法通常也持有两种不同的观点:一种认为寄存器开发能使开 发者明晰单片机内部结构,编写出简洁的代码,执行效率高;而另一种则认为固件库开发能避开对寄存器操作,减轻编程者的压力,还可以为开发者访问底层硬件提供一个中间应用编程界面(API),并方 便上层软件的调用。笔者认为,作为开发STM32的硬件工程师,以上两种开发方法都应该掌握,原因是寄存器开发能加深对芯片内部结构和功能的理解,是微控制器入门的必经之路,而固件库开发则是一 种趋势,它的编程思想更加先进,对应代码更规范,更具有可读性。本书基于STM32CubeMX软件自带的HAL库开发——HAL库不同于以往的标准外设库,是意法公司最新推出的替代标准外设库的产品, 书内附HAL库、函数、结构、常量等的详细说明及开发实例。 为了配合本书的出版,相应的开发板和视频教程“STM32奇幻漂流记”也会在近期由“睿芯美微”淘宝网店同步推出,网址为 http://shop59521455.taobao.com 。由于作者水平有限,加之写作时间 仓促,书中错误在所难免,在此恳请读者和有识之士给予批评斧正,也欢迎大家通过互联网与笔者分享STM32的开发心得。 作者QQ:710878209,微信号:gpmza2000。 本书得以出版,首先要特别感谢机械工业出版社华章公司朱捷等资深编辑,他们对本书的选题、立意和编纂给予了大力支持和悉心指导。其次要感谢的是广大热心网友,你们为本书内容、结构、写法 献言献策,给予了莫大关心和支持。再次要感谢笔者的家人,在笔者奋笔疾书的日日夜夜照顾饮食起居,让笔者能更加专注于本书的创作。 尺有所短,寸有所长。每个人的天赋迥异,如果你发现自己对电子产业时常会萌发出一些新奇的想法或创意,请一定将其捕捉住,并且尽早阅读本书,那时你会发现使用STM32系列微控制器会让你的 想法变为现实,会让你的创意尽情表达,这也许就是你走上研发之路的起点,你的人生也会因此而更加精彩!再次感谢你选择本书,祝学业有成,事业顺达! 高显生 于哈尔滨 第一篇 系统架构 STM32F0系列是意法半导体32位微控制器中的入门级产品。但入门不代表低性能,相反,STM32F0系列微控制器恰恰是集高运算能力和低功耗特性于一身的、极具竞争力的产品。全系列微控制器基于 ARM公司的Cortex-M0高性能内核,集实时性、低功耗运算和STM32平台的先进架构及外设于一身,既保留了对传统8位和16位微控制器市场的压倒性竞争力,又传承了STM32用户的开发平台和程序代码, 为成本敏感型应用带来了更加灵活的选择。不仅如此,STM32F0系列微控制器通过集成了USB 2.0和CAN总线接口,提供了更加丰富的通信功能选项,成为智能电话、通信网关、智能能源器件、多媒体设 备、游戏终端等众多便携式消费类应用的理想选择。 本篇将以STM32F072VBT6微控制器为例,重点讲述片内系统架构、存储器、系统配置、时钟以及电源管理等内容。在编程方法上,使用了STM32CubeMX软件生成开发项目,并且完成对时钟、外设模 块的初始化,之后编辑用户应用程序源文件,使用STM32CubeMX软件提供的HAL库来实现对外设模块的运行控制。 第1章 “芯”系ARM 在剑桥郊外一个不起眼的商业园区中,坐落着几栋随意排列的办公楼,这就是英国最成功的科技公司之一——ARM公司的总部所在地。也许你对ARM这个名字还不太熟悉,但它的产品却在几乎所有 智能手机中处于核心地位。从本章开始,我们将一起步入ARM的世界,领略它惊人的运算和处理能力。 1.1 强劲的ARM芯 ARM(Advanced RISC Machines)公司是微控制器行业的一家知名企业,设计了大量高性能、廉价、低耗能的RISC微控制器和相关技术及软件。通过将其技术授权给世界上许多著名的半导体、软件 和OEM厂商,ARM公司成为许多全球性RISC标准的缔造者。目前总共有30余家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、飞利浦和国家半导体等 知名企业。 1.1.1 最成功的科技公司采用ARM技术知识产权的微处理器已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占32位RISC微处理器75%以上的市场份额。 目前,全世界超过95%的智能手机和平板电脑都采用ARM架构,ARM技术正在逐步渗入我们生活的方方面面。 20世纪90年代,ARM业绩平平,处理器的出货量徘徊不前。由于资金短缺,ARM做出了一个意义深远的决定,不再制造芯片,只将芯片的设计方案授权给其他公司,由它们来生产。正是这个模式, 最终使得ARM芯片遍地开花。进入21世纪,由于手机制造行业的快速发展,出货量呈现爆炸式增长,ARM处理器占据了全球智能手机市场的主导地位。2016年7月,ARM被日本软银收购,并欲成为下一 个潜力巨大的科技市场即物联网的领导者。 在传统的计算设备中,如笔记本电脑、台式计算机和服务器等,Intel和AMD两家公司生产的处理器占据了绝大多数的市场份额。应当说,单纯从计算能力来讲,Intel和AMD的处理器都是非常强大 的,大量机器运行的操作系统也都依靠这两家公司的芯片产品,包括Windows、Mac OS和Linux。但强大的计算能力带来的是功耗的成倍提升,以Intel的处理器为例,其平均80W的功率显然不是一般移 动设备所能承受的。而由ARM公司授权生产的处理器运行功率非常小,一个多核心的ARM处理器大约只有4W的功率,并能让整个系统都运行在一个芯片上。这一特点使其产品特别适合用于个人电子设 备,更小的功率意味着更小的占用空间、更好的散热和更加经济的成本。这也是ARM处理器成功的关键。 1.1.2 ARMv6-M架构 Cortex是ARM公司一个处理器系列的名称。ARM公司最初的处理器产品都以数字命名,如ARM7、ARM9和ARM11等。在ARM11之后,新推出的处理器产品则改用Cortex命名。Cortex系列基于先进 的ARMv7架构。按照应用领域不同,基于ARMv7架构的Cortex处理器系列所采用的技术也不尽相同:基于v7A的称为Cortex-A系列,定位为应用处理器,支持复杂的运算,主要面向尖端的、基于虚拟内 存的操作系统和用户应用,代表型号如Cortex-A9;基于v7R的称为Cortex-R系列,定位为实时高性能处理器,主要针对实时系统的应用,如硬盘控制器和汽车控制系统等,代表型号为Cortex-R4;基于 v7M的称为Cortex-M系列,定位为微控制器处理器,用于工业控制和低成本消费产品等嵌入式系统,代表型号为Cortex-M3。我们所熟悉的STM32F103xx就是基于Cortex-M3内

.pdf文档 STM32F0实战:基于HAL库开发.html

文档预览
中文文档 5 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共5页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
STM32F0实战:基于HAL库开发.html 第 1 页 STM32F0实战:基于HAL库开发.html 第 2 页 STM32F0实战:基于HAL库开发.html 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2026-01-06 05:42:45上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。