内容推荐 本书从单片机应用的角度,系统的介绍STM32F107原理以及开发方法,共包含十六个篇章。 第一、二章是基础篇,第一章介绍CrotexM3内核概况以及指令集,以及ST公司的STM系列单片机选型方法和开发工具。第二章介绍STM32F107单片机的的基础架构以及存储组织、时钟、电源和启动配置。 第四章介绍STM32F107单片机的NVIC和系统时钟定时器。 第三章、第五章一直到第十三章是STM32F107单片机的外设篇,系统介绍了单片机的定时器、通信接口、ADC/DAC、USB、以太网接口等外设接口的原理和编程方法。 第十四章到十六章是进阶篇,针对单片机应用的常用软件技术,介绍了嵌入式界面设计方法、RTOS的使用、以及物联网网关的设计方法。 目录 第1篇入门篇 第1章ARM及CortexM3概述 1.1ARM概述 1.1.1ARM公司 1.1.2RISC 1.1.3ARM微处理器 1.1.4ARM微处理器内核及其架构的发展简史 1.2CortexM3内核 1.2.1Cortex内核的分类 1.2.2CM3内核的特点 1.2.3CM3内核的指令集 本章小结 第2篇准备篇 第2章天信通STM32F107开发板 2.1STM32系列MCU 2.2STM32F107芯片 2.3STM32F107开发板资源 本章小结 第3章MDK开发环境 3.1STM32官方固件库 3.1.1库开发与寄存器开发 3.1.2CMSIS 3.1.3STM32官方固件库包 3.2MDK5简介 3.3MDK5的安装 3.3.1MDK5的安装步骤 3.3.2MDK5的注册 3.4基于固件库新建工程模板 3.5程序的下载和调试 3.5.1程序的下载 3.5.2程序的调试 本章小结 第4章STM32基础知识简介 4.1STM32的系统架构 4.2STM32的时钟系统 本章小结 第3篇详解篇 第5章GPIO端口及其应用 5.1GPIO端口概述 5.2GPIO端口的相关寄存器 5.2.1端口配置低寄存器 5.2.2端口配置高寄存器 5.2.3端口输入数据寄存器 5.2.4端口输出数据寄存器 5.2.5端口位设置/清除数据寄存器 5.2.6端口位清除数据寄存器 5.3GPIO端口的相关库函数 5.3.1GPIO_Init()函数 5.3.2GPIO_SetBits()函数和GPIO_ResetBits()函数 5.3.3GPIO_Write()函数和GPIO_WriteBit()函数 5.3.4GPIO_ReadInputDataBit()函数、GPIO_ReadInputData()函数、 GPIO_ReadOutputDataBit()函数和 GPIO_ReadOutputData()函数 5.3.5GPIO_DeInit()函数 5.4GPIO端口的应用实例 5.4.1流水灯 5.4.2按键控制LED 本章小结 第6章寄存器的名称和地址的映射关系及位带操作 6.1寄存器的名称和地址的映射关系 6.2位带操作 6.2.1位带操作概述 6.2.2位带操作应用实例 本章小结 第7章NVIC与中断管理 7.1CM3的异常及其优先级管理 7.2NVIC概述 7.3NVIC相关的寄存器 7.3.1中断使能寄存器组和中断失能寄存器组 7.3.2中断挂起寄存器组和中断解挂寄存器组 7.3.3中断激活标志位寄存器组 7.3.4中断优先级寄存器组 7.4NVIC相关的库函数 7.4.1NVIC_PriorityGroupConfig()函数 7.4.2NVIC_Init()函数 本章小结 第8章EXTI控制器及其应用 8.1EXTI控制器概述 8.2EXTI相关的寄存器 8.2.1中断屏蔽寄存器 8.2.2事件屏蔽寄存器 8.2.3上升沿触发选择寄存器 8.2.4下降沿触发选择寄存器 8.2.5软件中断事件寄存器 8.2.6挂起寄存器 8.3EXTI相关的库函数 8.3.1GPIO_EXTILineConfig()函数 8.3.2EXTI_Init()函数 8.3.3EXTI的中断处理函数 8.3.4EXTI_GetITStatus()函数和EXTI_ClearITPendingBit()函数 8.3.5EXTI_GetFlagStatus()函数和EXTI_ClearFlag()函数 8.4EXTI外部中断的应用实例 本章小结 第9章SysTick定时器及其应用 9.1SysTick定时器概述 9.2SysTick定时器相关的寄存器 9.2.1SysTick控制及状态寄存器 9.2.2SysTick重装载数值寄存器 9.2.3SysTick当前数值寄存器 9.3SysTick定时器相关的库函数 9.3.1SysTick_CLKSourceConfig()函数 9.3.2SysTick_Config()函数 9.4SysTick定时器的应用实例 9.4.1中断方式实现定时 9.4.2查询方式实现定时 本章小结 第10章USART及其应用 10.1串行通信基础知识简介 10.1.1异步通信和同步通信 10.1.2串行通信的数据传输方向 10.1.3串行通信的数据传输速率 10.1.4串行通信的错误校验 10.2USART概述 10.3USART相关的寄存器 10.3.1状态寄存器 10.3.2数据寄存器 10.3.3波特率寄存器 10.3.4控制寄存器1 10.4USART相关的库函数 10.4.1USART_Init()函数 10.4.2USART_DeInit()函数 10.4.3USART_Cmd()函数 10.4.4USART_ITConfig()函数 10.4.5USART_SendData()函数 10.4.6USART_ReceiveData()函数 10.4.7USART_GetITStatus()函数和USART_GetFlagStatus()函数 10.4.8USART_ClearITPendingBit()函数和 USART_ClearFlag()函数 10.5端口引脚的复用功能 10.5.1端口引脚复用功能的概念 10.5.2调用库函数实现端口引脚的复用功能 10.6USART的应用实例 本章小结 第11章独立看门狗及其应用 11.1看门狗概述 11.2IWDG概述 11.3IWDG相关的寄存器 11.3.1键寄存器(IWDG_KR) 11.3.2预分频寄存器(IWDG_PR) 11.3.3重装载寄存器(IWDG_RLR) 11.4IWDG相关的库函数 11.4.1IWDG_WriteAccessCmd()函数 11.4.2IWDG_SetPrescaler()函数 11.4.3IWDG_SetReload()函数 11.4.4IWDG_ReloadCounter()函数 11.4.5IWDG_Enable()函数 11.5IWDG的应用实例 本章小结 第12章窗口看门狗及其应用 12.1WWDG概述 12.2WWDG相关的寄存器 12.2.1控制寄存器(WWDG_CR) 12.2.2配置寄存器(WWDG_CFR) 12.2.3状态寄存器(WWDG_SR) 12.3WWDG相关的库函数 12.3.1WWDG_SetPrescaler()函数 12.3.2WWDG_SetWindowValue()函数 12.3.3WWDG_EnableIT()函数 12.3.4WWDG_SetCounter()函数 12.3.5WWDG_Enable()函数 12.3.6WWDG_GetFlagStatus()函数 12.3.7WWDG_ClearFlag()函数 12.4WWDG的应用实例 本章小结 第13章通用定时器及其应用1 13.1通用定 序言 前言 全面信息化的时代及数字智能化为智能产品的发展 带来了巨大的契机,嵌入式智能产品市场前景广阔,嵌 入式系统的应用几乎无处不在。广阔的市场也吸引了全 球范围内的IT巨头们进军嵌入式市场,嵌入式已经形成 了一个充满商机的庞大产业,国家也对嵌入式软件行业 给予了政策倾斜。在“技术以人为本”的软件技术产业 中,嵌入式行业正以行业前景好、应用领域广、人才需 求大、就业薪酬高等众多优势,获得越来越多应用开发 人员的关注及青睐,也让越来越多的技术研发人员投入 嵌入式这一行业。作者根据多年的嵌入式系统开发及教 学经验,理论与实际应用并重,力求做到由浅入深、循 序渐进。全书分3篇,共19章。以CortexM3内核的 STM32单片机产品为学习对象,以MDK5.14为开发平台, 详细介绍了此类单片机的系统架构、各种内核和外围设 备的基本功能以及对它的实际应用。在入门篇(第1章) 中,介绍了对大多数人来说可能觉得比较熟悉但不一定 能深刻理解的ARM的概念,进而引入CortexM3内核的 概念,并介绍了其分类、特点、指令集等,使读者对 CortexM3内核有一个大体的认识。在准备篇(第2~4章 )中,首先介绍了CortexM3内核的STM32系列的MCU, 并先后介绍与本书所配套的硬件开发套件——天信通采 用的STM32F107单片机以及软件开发平台MDK5.14,以 及MDK的基本应用。接着简要介绍了STM32的一些基础知 识,包括系统架构、时钟系统等,为在详解篇讲解 STM32的各种内核和外设模块做好准备。在详解篇(第 5~19章)中,介绍了STM32的各种内核和外设模块的基本 功能及其应用,这些内核和外设模块包括GPIO端口、滴 答定时器、NVIC、EXTI、USART、IWDG、WWDG、通用定 时器、RTC、电源控制、ADC等。对于每个模块,基本上 都会用一章的篇幅来介绍关于它的功能——从基本原理 ,到与其相关的底层寄存器,再到ST官方固件库所包含 的与其相关的库函数。在每章的最后,都会讲解至少一 个与STM32的该模块相关的应用实例。此外,提供了应 用实例的源代码,方便大家在学习时通过开发板进行实 验。本书第1、4章由王英合编写,第2、3章由刘通编写 ,第5~19章由姜付鹏编写,全书由刘通统稿,黄凯负责 校对,在编写过程中得到清华大学出版社盛东亮、曾珊 等各位老师的指导与支持,以及山东商务职业学院老师 的协助,同时作者还参考了STM32技术手册以及国内外 优秀的教材和科技文献,在此一并表示感谢。由于作者 水平所限,书中难免存在疏漏,希望读者指正。编者 2022年5月 |