ARMCortex-M3嵌入式原理及应用:基于STMF微控制器pdf下载pdf下载

ARMCortex-M3嵌入式原理及应用:基于STMF微控制器百度网盘pdf下载

作者:
简介:本篇主要提供ARMCortex-M3嵌入式原理及应用:基于STMF微控制器pdf下载
出版社:清华大学出版社
出版时间:2019-12
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色


编辑推荐

作者根据多年的嵌入式系统教学和开发经验,循序渐进,理论实践并重,共性个性兼顾,将嵌入式系统的理论知识和基于ARM Cortex-M3内核的STM32F103微控制器的实际开发相结合,编写了《ARM Cortex-M3嵌入式原理及应用——基于STM32F103微控制器》一书,并自主设计STM32嵌入式实验板,帮助广大32位MCU初学者快速入门嵌入式系统开发。

全书共15章,分为三部分:第1部分(第1~3章)为系统平台模块,讲述嵌入式系统定义、开发板硬件平台和工程模板创建;第2部分(第4~9章)为基本外设模块,分别对STM32嵌入式系统常用外设模块进行介绍,包括GPIO、中断、定时器、PWM和嵌入式系统接口技术;第3部分(第10~15章)为扩展外设模块,分别对STM32嵌入式系统高级外设模块进行介绍,包括USART、SPI、OLED、ADC、IIC、EEPROM和RTC等。

本书突出特点

 传承51经典,发扬ARM长处,助推MCU升级。

 以读者认知过程为导向编排教材,组织章节内容。

 项目引领,任务驱动,教、学、做一体,注重读者工程实践能力的培养。

 构建全方位、立体化的教学资源网络,助力嵌入式系统教学与项目开发。

说明:凡是选用本书作为教材,并已经订购了30册以上教材的学校任课教师,可以凭订单获赠本教材配的套嵌入式开发板一套,联系本书作者黄克亚教授微信sz_hky获取。


内容简介

  《ARM Cortex-M3嵌入式原理及应用:基于STM32F103微控制器/清华开发者书库》旨在传承51经典,发扬ARM长处,助推MCU升级;以学生认知过程为导向组织教材内容,采取项目代领,全案例讲解的方式,着重培养学生实践应用能力。该书详细阐述了基于ARMCortex-M3内核的STM32F103微控制器嵌入式系统硬件设计方法和软件开发技术。全书共有15章,划分为3部分:第1部分(第1~3章)为系统平台模块,讲述嵌入式系统定义、开发板硬件平台和工程模板创建;第2部分(第4~9章)为基本外设模块,分别对STM32嵌入式系统常用外设模块进行介绍,包括GPIO、中断、定时器、PWM和嵌入式系统接口技术;第3部分(第10~15章)为扩展外设模块,分别对STM32嵌入式系统高级外设模块进行介绍,包括USART、SPI、OLED、ADC、IIC、EEPROM和RTC等。
  《ARM Cortex-M3嵌入式原理及应用:基于STM32F103微控制器/清华开发者书库》适合作为高等院校计算机、自动化、电子信息、机电一体化、物联网等专业高年级本科生或研究生嵌入式相关课程的教材,同时可供从事嵌入式开发的技术和研究人员参考。

说明:凡是选用本书作为教材,并已经订购了30册以上教材的学校任课教师,可以凭订单获赠本教材配的套嵌入式开发板一套,联系本书作者黄克亚教授微信sz_hky获取。

作者简介

黄克亚 软件设计师,苏州大学副教授、硕士生导师,主要从事智能控制、嵌入式系统开发等教学和科研工作。讲授过“电工电子技术”“单片机原理与控制技术”“微机原理及应用”“嵌入式系统开发”“可编程控制器”“传感器应用技术”等课程。近年来主持省级课题2项,授权发明专利1项,登记软件著作权4项,发表EI检索或中文核心期刊论文6篇,指导学生获中国智能机器人大赛一等奖1项、江苏省本专科优秀毕业设计(论文)三等奖1项、全国电子设计大赛江苏赛区二等奖2项。

说明:凡是选用本书作为教材,并已经订购了30册以上教材的学校任课教师,可以凭订单获赠本教材配的套嵌入式开发板一套,联系本书作者黄克亚教授微信sz_hky获取。

内页插图

精彩书评

  ★32位微控制器时代已经到来,32位微控制器性能优越,功能强大但结构复杂,使很多嵌入式工程师望而却步!目前,读者对一本好的嵌入式入门教材需求越来越迫切。《ARM Cortex-M3嵌入式原理及应用——基于STM32F103微控制器》是由来自教学一线,有着多年嵌入式开发经验的教师编写,详细阐述了基于ARM Gortex-M3内核的STM32F103微控制器嵌入式系统硬件设计方法和软件开发技术,是一本围绕学习者学习,全案例驱动,由浅入深,循序渐进的优秀嵌入式入门教材。
  ——孙立宁 苏州大学教授、博士生导师、教育部长江学者、国家杰青获得者
  
  ★《ARM Cortex-M3嵌入式原理及应用——基于STM32F103微控制器》一书旨在传承51经典,发扬ARM长处,助推MCU升级。ARM嵌入式系统实际上是8位单片机的升级扩展,但是其高性能必然对应系统复杂度的大幅提高,如果能借助8位单片机理念、方法和案例的共性,有助于提高读者的学习兴趣,使其轻松入门嵌入式开发。
  ——吴国伟 大连理工大学软件学院院长
  
  ★《ARM Cortex-M3嵌入式原理及应用——基于STM32F103微控制器》一书,以读者认知过程为导向设计教材逻辑、组织章节内容。全书先硬件后软件,讲解由浅入深,循序渐进;遵循理论够用,重在实践,上手容易的原则,培养读者学习兴趣,激发学习动力。
  ——宋廷强 青岛科技大学信息科学技术学院副院长
  
  ★《ARM Cortex-M3嵌入式原理及应用——基于STM32F103微控制器》一书采取项目代领,任务驱动的方式,强调教、学、做一体,注重读者工程实践能力的培养。对于每一个典型外设模块,在简明扼要阐述原理的基础上,围绕应用讨论其设计精髓,并给出完整的工程案例。
  ——严海蓉 北京工业大学嵌入式软件与系统系副教授
  
  ★该书配套提供教学课件、录播视频、教学大纲、项目代码和实验素材等全方位、立体化的教学资源,轻松助力嵌入式系统教学与项目开发。
  ——韩勇 中国移动苏州分公司嵌入式系统高级工程师

目录

第1章 ARM Cortex-M3嵌入式系统
1.1 嵌入式系统概述
1.1.1 什么是嵌入式系统
1.1.2 嵌入式系统和通用计算机系统比较
1.1.3 嵌入式系统的特点
1.1.4 嵌入式系统的应用领域
1.1.5 嵌入式系统范例
1.2 ARM Cortex-M3处理器
1.2.1 ARM公司
1.2.2 ARM处理器
1.3 STM32微控制器
1.3.1 从Cortex-M3内核到基于Cortex-M3的MCU
1.3.2 STM32微控制器产品线
1.3.3 STM32微控制器命名规则
1.4 嵌入式系统的软件
1. 4.1 无操作系统的嵌入式软件
1.4.2 带操作系统的嵌入式软件
1.4.3 典型嵌入式操作系统
1.4.4 软件架构选择建议
本章小结
思考与扩展

第2章 STM32开发板硬件系统
2.1 开发板总体概况
2.1.1 开发板设计背景
2.1.2 开发板总体介绍
2.2 电源模块
2.2.1 电源模块原理图
2.2.2 电源模块工作原理
2.3 核心板电路
2.3.1 CPU模块
2.3.2 串口通信模块
2.3.3 外接晶振模块
2.3.4 备用电源模块
2.3.5 ADC模块电源
2.3.6 CPU滤波电路
2.3.7 复位电路
2.3.8 启动设置电路
2.4 110模块电路
2.4.1 LED指示灯模块
2.4.2 按键模块
2.4.3 数码管模块
2.4.4 蜂鸣器模块
2.4.5 0LED显示屏电路
2.5 扩展模块电路
2.5.1 温度传感器
2.5.2 红外传感器
2.5.3 AD采样模块
2.5.4 EEPROM存储器
2.5.5 I/O引脚外接模块
本章小结
思考与扩展

第3章 MDK软件与工程模板创建
3.1 STM32固件库认知
3.1.1 STM32固件库概述
3.1.2 STM32固件库下载
3.1.3 STM32固件库目录结构
3.2 工程模板创建
3.2.1 Keil MDK-ARM软件简介
3.2.2 工程模板的创建
3.3 软件模拟仿真
本章小结
……
第4章 通用目的输入输出口
第5章 LED流水灯与SysTick定时器
第6章 按键输入与蜂鸣器
第7章 数码管动态显示
第8章 中断系统与基本应用
第9章 定时器与脉冲宽度调制
第10章 串行通信接口USART
第11章 SPI与OLED显示屏
第12章 模拟数字转换器
第13章 直接存储器访问
第14章 I2C接口与EEPROM存储器
第15章 RTC时钟与BKP寄存器
附录A ASCII码表
附录B STM32F103微控器小容量产品系列引脚定义表
附录C STM32F103微控器中等容量产品系列引脚定义表
附录D STM32F103微控器大容量产品系列引脚定义表
参考文献

精彩书摘

  第5章
  LED流水灯与SysTick定时器
  本章要点
  基于库函数的开发方法
  GPIO输出相关库函数
  库函数版LED流水灯程序设计
  SysTick定时器概述、寄存器和应用方法
  SysTick定时器毫秒和微秒延时函数
  SysTick函数嵌入到LED流水灯项目中实现精确延时
  第4章章介绍了STM32的GPIO并给出了通过操作GPIO寄存器的LED灯闪烁程序,使大家对STM32程序设计有一定的了解,本章将首先介绍STM32的库函数开发方式,并详细给出库函数版的LED流水灯程序设计方法。CortexM3处理器内部包含了一个简单的定时器,因为所有的CortexM3芯片都带有这个定时器,软件在不同CortexM3器件间的移植工作得以简化。本章将进一步介绍利用SysTick定时器编写延时函数方法,并将其嵌入到流水灯程序当中,为其提供精确的1s延时程序。
  LED流水灯
  5.1库函数开发方法
  从第4章的分析可以看出,对寄存器操作虽然简单、直接、高效,但是需要对STM32硬件有非常好的理解,并且要记住所有相关寄存器的名称、位定义以及操作方式,这对于绝大部分初学者来说相当不容易。另外,基于寄存器编写出来的程序可读性比较差,不便于系统维护和程序员之间的交流,所以对于初学者和普通程序开发人员,本书推荐另外一种程序开发方法,即基于库函数的开发方法。
  库函数对于程序设计人员并不陌生,我们在学习C语言时,经常会使用到stdio.h库所提供的标准输入输出库函数scanf()和printf()。类似地,为了简化编程开发难度,意法半导体公司向用户提供了STM32标准库函数,又称为STM32固件库,它包括所有标准外设的驱动程序,可以极大地方便用户使用STM32微控制器的片上外设。
  STM32固件库是由ST公司针对STM32微控制器为用户开发提供的API(APPlication Program Interface,应用程序接口)。实际上,STM32固件库是位于寄存器和用户之间的预定义代码,它由程序、数据结构和各种宏定义组成。它向下实现与寄存器的直接相关操作,向上为用户提供配置寄存器的标准接口。通过使用固件库的标准函数,无须深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。就像学习C语言编程使用库函数printf()和scanf()时,只是学习它们的调用方法,并没有去研究它们的源代码实现一样。
  显而易见,相比于寄存器开发方式,基于库函数的开发方式具有容易学习、便于阅读和维护成本低等优点,降低了开发难度和门槛,缩短了开发周期。标准库函数由于考虑到软件通用性,需要面面俱到,为提高软件的鲁棒性,需要对软件参数进行检测,这些都会使得库函数方式生成的代码较直接配置寄存器方式要大一些。但是由于STM32拥有充足的硬件资源,权衡利弊,绝大多数情况下,宁愿牺牲一点资源而选择库函数开发。通常,只有在对代码运行时间要求极其苛刻的场合,例如,频繁调用的异常服务程序,才会选择寄存器方式编写程序。随着意法半导体官方固件库的不断丰富和完善,库函数方式目前已经成为STM32嵌入式开发的首选。
  5.2GPIO输出库函数
  由LED流水灯控制电路可知,需要配置PC口为输出方式,并设置PC0~PC7的电平状态,以点亮或是熄灭LED指示灯。现将涉及的库函数一一详解如下,因为这是本书第一次介绍库函数,所以讲解要详尽一些。
  5.2.1函数RCC_APB2PeriphClockCmd
  表51描述了函数RCC_APB2PeriphClockCmd。
  表51函数RCC_APB2PeriphClockCmd
  函数名RCC_APB2PeriphClockCmd
  函数原型void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph,FunctionalState NewState)
  功能描述使能或者失能APB2外设时钟
  输入参数1
  RCC_APB2Periph: 门控APB2外设时钟
  参阅Section: RCC_APB2Periph,查阅更多该参数允许取值范围
  输入参数2
  New State: 指定外设时钟的新状态
  这个参数可以取: ENABLE或者DISABLE
  输出参数无
  返回值无
  先决条件无
  被调用函数无
  RCC_APB2Periph参数:
  该参数被门控的APB2外设时钟,可以取下表的一个或者多个取值的组合作为该参数的值。
  表52RCC_AHB2Periph值
  RCC_AHB2Periph描述
  RCC_APB2Periph_AFIO功能复用I/O时钟
  RCC_APB2Periph_GPIOAGPIOA时钟
  RCC_APB2Periph_GPIOBGPIOB时钟
  RCC_APB2Periph_GPIOCGPIOC时钟
  RCC_APB2Periph_GPIODGPIOD时钟
  RCC_APB2Periph_GPIOEGPIOE时钟
  RCC_APB2Periph_ADC1ADC1时钟
  RCC_APB2Periph_ADC2ADC2时钟
  RCC_APB2Periph_TIM1TIM1时钟
  RCC_APB2Periph_SPI1SPI1时钟
  RCC_APB2Periph_USART1USART1时钟
  RCC_APB2Periph_ALL全部APB2外设时钟
  例如:
  /* Enable GPIOA, GPIOB and SPI1 clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
  RCC_APB2Periph_SPI1, ENABLE);
  此函数用于打开挂接在APB2总线上的外设时钟,要打开哪一个设备只要将其名称作为参数填入到函数中即可,如果是要打开多个设备的时钟,多个设备的名称用“|”号连接。
  例如,对于LED流水灯控制来说,因为LED的阴极由STM32单片机的GPIOC口控制的,所以需要调用该函数打开GPIO时钟,其语句为:
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  ……

前言/序言

  前言
  “青山遮不住,毕竟东流去”,虽然我们对经典的8位单片机(如MCS51)、16位单片机(如MSP430)积累了大量的技术资料,用起来得心应手。但是单片机复杂的指令、较低的主频、有限的存储空间、极少的片上外设,使其在面对复杂应用时,捉襟见肘,难以胜任。虽然8位、16位单片机的应用不会就此结束,但可以肯定的是32位处理器时代已经到来,32位处理器性能得到了显著提升,片上资源更加丰富,功能也越来越复杂和完善。
  选题背景
  在这个大环境下,ARM CortexM3处理器诞生了!由于采用了最新的设计技术,它的内核逻辑门数更低,性能却更强。许多曾经只能求助于高级32位处理器或DSP的软件设计,都能在CortexM3上运行得更快。
  基于ARM的嵌入式系统因为功能复杂、芯片系列多、开发模式各异,使其不仅难教而且难学。但是由于各行各业对控制器能力的要求“得寸进尺”,而32位嵌入式系统性价比不断提高,促使笔者下定决心转型,经过几年的努力,笔者成功转型ARM嵌入式开发。
  回想学习和教学过程,有几点经验要和大家分享: 一是要选择一个合适的内核,ARM嵌入式处理器无疑是主流产品,市场占有率相当高; 二是要选择合适的基于ARM内核微控制器,目前意法半导体公司(ST Microelectronics)推出的32位CortexM内核的MCU产品市场占有率很高,技术资料全面,官方固件库易学易用(基于上述两点,本书主要讲述的是目前被广泛使用的基于CortexM3内核的STM32F103微控制器); 三是要选择一本合适的教材,笔者认为一本好的嵌入式教材应该具有由浅入深,循序渐进,理论够用,注重实践,共性和个性兼顾等特点,既能较为系统地介绍嵌入式系统的基本概念和原理,又能指导初学者在实际软硬件环境中进行开发实践。
  主要内容
  针对上述情况,笔者根据多年的嵌入式系统教学和开发经验,试图做到内容循序渐进,理论与实践并重,共性与个性兼顾,将嵌入式系统的理论知识和基于ARM CortexM3内核的STM32F103微控制器的实际开发相结合,编写了本书。
  全书共有15章,划分为3部分。
  第1部分(第1~3章)为系统平台模块。第1章介绍了嵌入式系统定义、ARM内核,以及基于ARM CortexM3内核的STM32微控制器。第2章对STM32嵌入式开发板硬件平台各模块进行详细介绍。第3章介绍Keil MDK软件并进行工程模板创建。
  第2部分(第4~9章)为基本外设模块,分别对STM32嵌入式系统最常用外设模块进行介绍。第4章讲解通用目的输入输出口。第5章讲解LED流水灯与SysTick定时器。第6章讲解按键输入与蜂鸣器。第7章讲解数码管动态显示。第8章讲解中断系统与基本应用。第9章讲解定时器与脉冲宽度调制。
  第3部分(第10~15章)为扩展外设模块,分别对STM32嵌入式系统高级外设模块进行介绍。第10章讲解串行通信接口USART。第11章讲解SPI与OLED显示屏。第12章讲解模拟数字转换器。第13章讲解直接存储器访问。第14章讲解I2C接口与EEPROM存储器。第15章讲解RTC时钟与BKP寄存器。
  无论是基本外设模块,还是扩展外设模块,从第4章开始到第15章结束,每一章都先对模块所涉及的理论知识进行讲解,然后引入项目实例,给出项目实施的具体步骤,项目可以在课堂上完成。整个教学理论与实践一体,学中做,做中学。
  本书的特色和价值
  (1) 以学生认知过程为导向设计教材逻辑结构、组织教材章节内容。全书先硬件后软件,由浅入深; 遵循理论够用、重在实践、容易上手的原则,培养学习兴趣,激发学习动力。
  (2) 采取项目引领,任务驱动的方式,强调教、学、做一体,注重学生工程实践能力的培养。对每一个典型外设模块,在简明扼要阐述原理的基础上,围绕其应用,均以完整案例的形式讨论其设计精髓,并给出完整的工程案例。
  (3) 传承51经典,发扬ARM长处,助推MCU升级。ARM嵌入式系统实际上是8位单片机的升级扩展,但是其高性能必然带来系统复杂度的大幅提高,如果能借助8位单片机理念、方法和案例的共性,有助于提升读者学习兴趣,使其轻松入门嵌入式开发。
  本书配套学习资源,为便于提高学习效率,笔者精心制作了程序代码、学习素材、教材课件和教学大纲,扫码即可获取。
  程序代码
  学习素材
  教材课件
  教学大纲
  致谢
  在本书的撰写过程中参阅了许多资料,在此对所参考资料的作者表示诚挚的感谢。在编写过程中还引用了互联网上最新资讯及报道,在此向原作者和刊发机构表示真挚的谢意,并对不能一一注明来源的作者深表歉意。对于收集到的共享资料没有标明出处或找不到出处的,以及对有些资料进行加工、修改后纳入本书的,在此郑重声明,本书内容仅用于教学,其著作权属于原作者,并向他们表示致敬和感谢。
  在本书的编写过程中得到了家人的理解和帮助,并且一直得到清华大学出版社梁颖、盛东亮、钟志芳等各位老师的关心和大力支持,清华大学出版社的工作人员也付出了辛勤的劳动,在此谨向支持和关心本书编写的家人、同仁和朋友一并致谢。
  由于嵌入式技术的发展日新月异,加之笔者水平有限及时间仓促,书中难免有疏漏和不足之处,恳请广大读者批评指正。
  作者
  2019年10月