-
内容大纲
本书以具有Cortex-M3内核的STM32单片机产品为学习对象,以MDK5.14为开发平台,详细介绍此类单片机的系统架构、各种内核和外围设备的基本功能及其实际应用。
全书分3篇,共19章。入门篇首先讲述ARM的概念,接着介绍Cortex-M3内核的概念、分类、特点、指令集等,使读者对Cortex-M3内核有大体认识。准备篇首先介绍采用Cortex-M3内核的STM32系列的MCU,然后介绍与本书配套的硬件开发套件——天信通采用的STM32F107单片机、软件开发平台MDK5.14,以及MDK的基本应用;接着简单介绍STM32的基础知识,包括系统架构、时钟系统等;以上内容为详解篇讲解STM32的各种内核和外设做准备。详解篇介绍STM32的各种内核和外设的基本功能及其应用,这些内核和外设包括GPIO端口、滴答定时器、NVIC、EXTI、USART、IWDG、WWDG、通用定时器、RTC、电源控制、ADC等。对于每个模块都介绍其功能,从基本原理,到相关底层寄存器,再到ST官方固件库中所包含的与其相关的库函数。在每章最后都会讲解至少一个与STM32的该模块相关的应用实例。此外,本书配套提供应用实例的源代码,方便读者在学习的同时,通过开发板进行实验,亲身体验各模块的功能。
本书适合高等院校电子信息类、计算机类、自动化类、物联网等相关专业的学生学习。读者在学习时,最好结合STM32开发板和例程源代码,以更加深刻地理解相关内容。 -
作者介绍
姜付鹏先生是物联网行业的资深专家,国家科技部项目专家库成员,青岛市智慧城市项目评审专家,青岛市高新区工商联副主席,山东省第一批产业教授,多所大学的外聘教授、专家,山东省校企合作先进个人,青岛市物联网协会首席专家;拥有20多项国家专利,出版过《电磁兼容设计》等多本技术专著;具有电子行业、软件行业、教育行业工作经验,主导设计几十种产品,承担过多项政府研发创新项目;1994-2002年在青岛创统集团;2003-2005在中天股份;2006-2008在洛杉矶的AVT公司从事技术开发3年,从事领域为在线管理系统;2009-2011青岛青岛感知信息科技有限公司等担任产品经理、CTO、公司总经理等职位,2012年创立青岛天信通公司,主要业务为物联网教育产品及物联网行业应用产品两个板块。2015年成立青岛中云数据信息科技有限公司,中云数据的核心产品是基于CyberPhysicalSystem(信息物理融合系统)的行业解决方案,将云计算、大数据、物联网为代表的新一代信息网络技术与行业应用融合创新,为行业应用提供关键技术及解决方案。 -
目录
第1篇 入门篇
第1章 ARM及Cortex-M3概述
1.1 ARM概述
1.1.1 ARM公司
1.1.2 RISC
1.1.3 ARM微处理器
1.1.4 ARM微处理器内核及其架构的发展简史
1.2 Cortex-M3内核
1.2.1 Cortex内核的分类
1.2.2 CM3内核的特点
1.2.3 CM3内核的指令集
本章小结
第2篇 准备篇
第2章 天信通STM32F107开发板
2.1 STM32系列MCU
2.2 STM32F107芯片
2.3 STM32F107开发板资源
本章小结
第3章 MDK开发环境
3.1 STM32官方固件库
3.1.1 库开发与寄存器开发
3.1.2 CMSIS
3.1.3 STM32官方固件库包
3.2 MDK5简介
3.3 MDK5的安装
3.3.1 MDK5的安装步骤
3.3.2 MDK5的注册
3.4 基于固件库新建工程模板
3.5 程序的下载和调试
3.5.1 程序的下载
3.5.2 程序的调试
本章小结
第4章 STM32基础知识简介
4.1 STM32的系统架构
4.2 STM32的时钟系统
本章小结
第3篇 详解篇
第5章 GPIO端口及其应用
5.1 GPIO端口概述
5.2 GPIO端口的相关寄存器
5.2.1 端口配置低寄存器
5.2.2 端口配置高寄存器
5.2.3 端口输入数据寄存器
5.2.4 端口输出数据寄存器
5.2.5 端口位设置/清除数据寄存器
5.2.6 端口位清除数据寄存器
5.3 GPIO端口的相关库函数
5.3.1 GPIO_Init()函数
5.3.2 GPIO_SetBits()函数和GPIO_ResetBits()函数
5.3.3 GPIO_Write()函数和GPIO_WriteBit()函数
5.3.4 GPIO_ReadInputDataBit()函数、GPIO_ReadInputData()函数、GPIO_ReadOutputDataBit()函数和GPIO_ReadOutputData()函数
5.3.5 GPIO_DeInit()函数
5.4 GPIO端口的应用实例
5.4.1 流水灯
5.4.2 按键控制LED
本章小结
第6章 寄存器的名称和地址的映射关系及位带操作
6.1 寄存器的名称和地址的映射关系
6.2 位带操作
6.2.1 位带操作概述
6.2.2 位带操作应用实例
本章小结
第7章 NVIC与中断管理
7.1 CM3的异常及其优先级管理
7.2 NVIC概述
7.3 NVIC相关的寄存器
7.3.1 中断使能寄存器组和中断失能寄存器组
7.3.2 中断挂起寄存器组和中断解挂寄存器组
7.3.3 中断激活标志位寄存器组
7.3.4 中断优先级寄存器组
7.4 NVIC相关的库函数
7.4.1 NVIC_PriorityGroupConfig()函数
7.4.2 NVIC_Init()函数
本章小结
第8章 EXTI控制器及其应用
8.1 EXTI控制器概述
8.2 EXTI相关的寄存器
8.2.1 中断屏蔽寄存器
8.2.2 事件屏蔽寄存器
8.2.3 上升沿触发选择寄存器
8.2.4 下降沿触发选择寄存器
8.2.5 软件中断事件寄存器
8.2.6 挂起寄存器
8.3 EXTI相关的库函数
8.3.1 GPIO_EXTILineConfig()函数
8.3.2 EXTI_Init()函数
8.3.3 EXTI的中断处理函数
8.3.4 EXTI_GetITStatus()函数和EXTI_ClearITPendingBit()函数
8.3.5 EXTI_GetFlagStatus()函数和EXTI_ClearFlag()函数
8.4 EXTI外部中断的应用实例
本章小结
第9章 SysTick定时器及其应用
9.1 SysTick定时器概述
9.2 SysTick定时器相关的寄存器
9.2.1 SysTick控制及状态寄存器
9.2.2 SysTick重装载数值寄存器
9.2.3 SysTick当前数值寄存器
9.3 SysTick定时器相关的库函数
9.3.1 SysTick_CLKSourceConfig()函数
9.3.2 SysTick_Config()函数
9.4 SysTick定时器的应用实例
9.4.1 中断方式实现定时
9.4.2 查询方式实现定时
本章小结
第10章 USART及其应用
10.1 串行通信基础知识简介
10.1.1 异步通信和同步通信
10.1.2 串行通信的数据传输方向
10.1.3 串行通信的数据传输速率
10.1.4 串行通信的错误校验
10.2 USART概述
10.3 USART相关的寄存器
10.3.1 状态寄存器
10.3.2 数据寄存器
10.3.3 波特率寄存器
10.3.4 控制寄存器
10.4 USART相关的库函数
10.4.1 USART_Init()函数
10.4.2 USART_DeInit()函数
10.4.3 USART_Cmd()函数
10.4.4 USART_ITConfig()函数
10.4.5 USART_SendData()函数
10.4.6 USART_ReceiveData()函数
10.4.7 USART_GetITStatus()函数和USART_GetFlagStatus()函数
10.4.8 USART_ClearITPendingBit()函数和USART_ClearFlag()函数
10.5 端口引脚的复用功能
10.5.1 端口引脚复用功能的概念
10.5.2 调用库函数实现端口引脚的复用功能
10.6 USART的应用实例
本章小结
第11章 独立看门狗及其应用
11.1 看门狗概述
11.2 IWDG概述
11.3 IWDG相关的寄存器
11.3.1 键寄存器(IWDG_KR)
11.3.2 预分频寄存器(IWDG_PR)
11.3.3 重装载寄存器(IWDG_RLR)
11.4 IWDG相关的库函数
11.4.1 IWDG_WriteAccessCmd()函数
11.4.2 IWDG_SetPrescaler()函数
11.4.3 IWDG_SetReload()函数
11.4.4 IWDG_ReloadCounter()函数
11.4.5 IWDG_Enable()函数
11.5 IWDG的应用实例
本章小结
第12章 窗口看门狗及其应用
12.1 WWDG概述
12.2 WWDG相关的寄存器
12.2.1 控制寄存器(WWDG_CR)
12.2.2 配置寄存器(WWDG_CFR)
12.2.3 状态寄存器(WWDG_SR)
12.3 WWDG相关的库函数
12.3.1 WWDG_SetPrescaler()函数
12.3.2 WWDG_SetWindowValue()函数
12.3.3 WWDG_EnableIT()函数
12.3.4 WWDG_SetCounter()函数
12.3.5 WWDG_Enable()函数
12.3.6 WWDG_GetFlagStatus()函数
12.3.7 WWDG_ClearFlag()函数
12.4 WWDG的应用实例
本章小结
第13章 通用定时器及其应用
13.1 通用定时器概述
13.2 中断定时相关的寄存器
13.2.1 计数器当前值寄存器
13.2.2 预分频器寄存器
13.2.3 自动重装载寄存器
13.2.4 控制寄存器
13.2.5 DMA/中断使能寄存器
13.2.6 状态寄存器
13.3 中断定时相关的库函数
13.3.1 TIM_TimeBaseInit()函数
13.3.2 TIM_ITConfig()函数
13.3.3 TIM_Cmd()函数
13.3.4 TIM_GetITStatus()函数
13.3.5 TIM_ClearITPendingBit()函数
13.4 中断定时的应用实例
本章小结
第14章 通用定时器及其应用
14.1 通用定时器捕获/比较通道的输出
14.2 通用定时器的PWM模式
14.3 PWM脉宽调制相关的寄存器
14.3.1 输出模式下的捕获/比较模式寄存器
14.3.2 输出模式下的捕获/比较使能寄存器
14.3.3 输出模式下的捕获/比较寄存器
14.4 PWM脉宽调制相关的库函数
14.4.1 TIM_OCxInit()函数
14.4.2 TIM_SetComparex()函数
14.4.3 TIM_OCxPreloadConfig()函数
14.5 PWM脉宽调制的应用实例
本章小结
第15章 通用定时器及其应用
15.1 通用定时器捕获/比较通道的输入
15.2 通用定时器的输入捕获模式
15.3 通用定时器输入捕获相关的寄存器
15.3.1 输入模式下的捕获/比较模式寄存器
15.3.2 输入模式下的捕获/比较使能寄存器
15.3.3 输入模式下的捕获/比较寄存器
15.4 通用定时器输入捕获相关的库函数
15.4.1 TIM_ICxInit()函数
15.4.2 TIM_OCxPolarityConfig()函数
15.4.3 TIM_SetCounter()函数
15.5 输入捕获的应用实例
本章小结
第16章 实时时钟
16.1 RTC概述
16.2 RTC相关的寄存器
16.2.1 RTC控制寄存器高位
16.2.2 RTC控制寄存器低位
16.2.3 RTC预分频装载寄存器
16.2.4 RTC预分频余数寄存器
16.2.5 RTC计数器寄存器
16.2.6 RTC闹钟寄存器
16.3 RTC应用相关的其他寄存器
16.3.1 备份数据寄存器
16.3.2 备份区域控制寄存器
16.3.3 APB1外设使能寄存器
16.3.4 电源控制寄存器
16.4 RTC相关的库函数
16.4.1 RTC_WaitForLastTask()函数
16.4.2 RTC_WaitForSynchro()函数
16.4.3 RTC_EnterConfigMode()函数
16.4.4 RTC_ExitConfigMode()函数
16.4.5 RTC_GetCounter()函数
16.4.6 RTC_SetCounter()函数
16.4.7 RTC_SetPrescaler()函数
16.4.8 RTC_SetAlarm()函数
16.4.9 RTC_ITConfig()函数
16.4.10 RTC_GetFlagStatus()函数和RTC_GetITStatus()函数
16.4.11 RTC_ClearFlag()函数和RTC_ClearITPendingBit()函数
16.5 RTC应用相关的其他库函数
16.5.1 RCC_RTCCLKConfig()函数
16.5.2 RCC_RTCCLKCmd()函数
16.5.3 PWR_BackupAccessCmd()函数
16.5.4 RCC_LSEConfig()函数
16.5.5 RCC_GetFlagStatus()函数
16.5.6 BKP_ReadBackupRegister()函数
16.5.7 BKP_WriteBackupRegister()函数
16.6 RTC应用实例
本章小结
第17章 电源控制
17.1 电源管理
17.1.1 独立的A/D转换器供电和参考电压
17.1.2 电池备份区域
17.1.3 电压调节器
17.2 低功耗模式
17.2.1 睡眠模式
17.2.2 停止模式
17.2.3 待机模式
17.2.4 低功耗模式下的自动唤醒
17.3 电源控制相关的寄存器
17.3.1 电源控制寄存器
17.3.2 电源控制/状态寄存器
17.3.3 系统控制寄存器
17.4 电源控制相关的库函数
17.4.1 PWR_WakeUpPinCmd()函数
17.4.2 PWR_EnterSTANDBYMode()函数
17.4.3 PWR_EnterSTOPMode()函数
17.4.4 PWR_GetFlagStatus()函数
17.4.5 PWR_ClearFlag()函数
17.5 电源控制的应用实例
本章小结
第18章 ADC
18.1 ADC概述
18.1.1 ADC简介
18.1.2 ADC的主要特征
18.1.3 ADC的功能描述
18.2 ADC相关的寄存器
18.2.1 ADC状态寄存器
18.2.2 ADC控制寄存器
18.2.3 ADC控制寄存器
18.2.4 ADC采样时间寄存器
18.2.5 ADC规则序列寄存器
18.2.6 ADC注入数据寄存器
18.2.7 ADC规则数据寄存器
18.2.8 时钟配置寄存器
18.3 ADC相关的库函数
18.3.1 ADC_DeInit()函数
18.3.2 ADC_Init()函数
18.3.3 ADC_Cmd()函数
18.3.4 ADC_ITConfig()函数
18.3.5 ADC_ResetCalibration()函数
18.3.6 ADC_GetResetCalibrationStatus(ADC_TypeDef*ADCx)函数
18.3.7 ADC_StartCalibration(ADC_TypeDef*ADCx)函数
18.3.8 ADC_GetCalibrationStatus(ADC_TypeDef*ADCx)函数
18.3.9 ADC_SoftwareStartConvCmd()函数
18.3.10 ADC_RegularChannelConfig()函数
18.3.11 ADC_GetConversionValue()函数
18.3.12 ADC_TempSensorVrefintCmd()函数
18.3.13 ADC_GetFlagStatus()函数和ADC_GetITStatus()函数
18.3.14 ADC_ClearFlag()函数和ADC_ClearITPendingBit()函数
18.4 ADC的应用实例
18.4.1 读取外部电压值
18.4.2 获取内部温度值
本章小结
第19章 DAC
19.1 DAC概述
19.1.1 DAC简介
19.1.2 DAC的主要特征
19.2 DAC的功能描述
19.2.1 使能DAC通道和DAC缓存
19.2.2 DAC的数据格式
19.2.3 DAC的转换
19.2.4 DAC的输出电压
19.2.5 DAC的触发选择
19.3 DAC相关的寄存器
19.3.1 DAC控制寄存器
19.3.2 DAC软件触发寄存器
19.3.3 DAC通道1的12位右对齐数据保持寄存器
19.3.4 DAC通道1的12位左对齐数据保持寄存器
19.3.5 DAC通道1的8位右对齐数据保持寄存器
19.3.6 DAC通道1数据输出寄存器
19.4 DAC相关的库函数
19.4.1 DAC_DeInit()函数
19.4.2 DAC_Init()函数
19.4.3 DAC_Cmd()函数
19.4.4 DAC_SetChannel1Data()函数和DAC_SetChannel2Data()函数
19.4.5 DAC_GetDataOutputValue()函数
19.4.6 DAC_DMACmd()函数
19.4.7 DAC_SoftwareTriggerCmd()函数
19.5 DAC的应用实例
本章小结
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
