图书目录

目录

第1部分系统平台模块

第1章ARM CortexM3嵌入式系统

微课视频32分钟

1.1嵌入式系统概述

1.1.1什么是嵌入式系统

1.1.2嵌入式系统和通用计算机系统比较

1.1.3嵌入式系统的特点

1.1.4嵌入式系统的应用领域

1.1.5嵌入式系统范例

1.2ARM CortexM3处理器

1.2.1ARM公司

1.2.2ARM处理器

1.3STM32微控制器

1.3.1从CortexM3内核到基于CortexM3的MCU

1.3.2STM32微控制器产品线

1.3.3STM32微控制器命名规则

1.4嵌入式系统的软件

1.4.1无操作系统的嵌入式软件

1.4.2带操作系统的嵌入式软件

1.4.3典型嵌入式操作系统

1.4.4软件架构选择建议

本章小结

思考与扩展

第2章STM32F103微控制器与实验平台

微课视频41分钟

2.1STM32F103微控制器

2.1.1STM32F103功能特性

2.1.2STM32F103系统架构

2.1.3STM32F103内部结构

2.1.4STM32F103存储器映射

2.1.5STM32F103时钟树

2.1.6STM32F103引脚定义

2.2开发板总体概况

2.2.1开发板设计背景

2.2.2开发板总体介绍

2.3电源模块

2.3.1电源模块原理图

2.3.2电源模块工作原理

2.4核心板电路

2.4.1芯片电源电路

2.4.2CPU滤波电路

2.4.3外接晶振模块

2.4.4复位电路

2.4.5串口通信模块

2.4.6启动设置电路

2.4.7JTAG接口

2.5IO模块

2.5.1LED指示灯模块

2.5.2按键模块

2.5.3数码管模块

2.5.4蜂鸣器模块

2.5.5OLED显示屏电路

2.6扩展模块

2.6.1温度传感器

2.6.2A/D采样模块

2.6.3EEPROM

2.6.4蓝牙模块

2.6.5I/O引脚外接模块

本章小结

思考与扩展

第3章Keil MDK软件与工程模板创建

微课视频34分钟

3.1STM32固件库认知

3.1.1STM32固件库概述

3.1.2STM32固件库下载

3.1.3STM32固件库目录结构

3.2工程模板创建

3.2.1MDKARM开发环境配置

3.2.2工程模板的创建

3.3软件模拟仿真

本章小结

思考与扩展

第2部分基本外设模块

第4章通用目的输入输出口

微课视频67分钟

4.1GPIO概述及引脚命名

4.2GPIO内部结构

4.2.1输入驱动器

4.2.2输出驱动器

4.3GPIO工作模式

4.3.1输入浮空

4.3.2输入上拉

4.3.3输入下拉

4.3.4模拟输入

4.3.5开漏输出

4.3.6开漏复用输出

4.3.7推挽式输出

4.3.8推挽式复用输出

4.3.9工作模式选择

4.4GPIO输出速度

4.5复用功能重映射

4.6GPIO控制寄存器

4.7GPIO控制寄存器配置实例

4.8寄存器版LED闪烁工程

4.8.1创建寄存器版工程模板

4.8.2LED闪烁程序设计

4.8.3开发板驱动安装及程序下载

4.8.4基于寄存器开发方式特点

本章小结

思考与扩展

第5章LED流水灯与SysTick定时器

微课视频56分钟

5.1库函数开发方法

5.2GPIO输出库函数

5.2.1函数RCC_APB2PeriphClockCmd

5.2.2函数GPIO_Init

5.2.3函数GPIO_Write

5.2.4函数GPIO_SetBits

5.2.5函数GPIO_ResetBits

5.2.6函数GPIO_WriteBit

5.3LED流水灯控制

5.4SysTick定时器

5.4.1SysTick定时器概述

5.4.2SysTick定时器寄存器

5.4.3SysTick定时器应用

本章小结

思考与扩展

第6章按键输入与蜂鸣器

微课视频31分钟

6.1GPIO输入库函数

6.1.1函数GPIO_ReadInputDataBit

6.1.2函数GPIO_ReadInputData

6.1.3函数GPIO_ReadOutputDataBit

6.1.4函数GPIO_ReadOutputData

6.2项目分析

6.3项目实施

本章小结

思考与扩展

第7章数码管动态显示

微课视频55分钟

7.1数码管显示接口

7.1.1数码管工作原理

7.1.2数码管编码方式

7.1.3数码管显示方式

7.2项目分析

7.3项目实施

7.4项目拓展

本章小结

思考与扩展

第8章中断系统与基本应用

微课视频64分钟

8.1中断的基本概念

8.1.1中断的定义

8.1.2中断的应用

8.1.3中断源与中断屏蔽

8.1.4中断处理过程

8.1.5中断优先级与中断嵌套

8.2STM32F103中断系统

8.2.1嵌套向量中断控制器NVIC

8.2.2STM32F103中断优先级

8.2.3STM32F103中断向量表

8.2.4STM32F103中断服务程序

8.3STM32F103外部中断/事件控制器EXTI

8.3.1EXTI内部结构

8.3.2EXTI工作原理

8.3.3EXTI主要特性

8.4STM32中断相关库函数

8.4.1STM32F10x的NVIC相关库函数

8.4.2STM32F10x的EXTI相关库函数

8.4.3EXTI中断线GPIO引脚映射库函数

8.5EXTI项目实例

8.5.1项目分析

8.5.2项目实施

本章小结

思考与扩展

第9章定时器与脉冲宽度调制

微课视频89分钟

9.1STM32F103定时器

9.2基本定时器

9.2.1基本定时器简介

9.2.2基本定时器的主要特性

9.2.3基本定时器的功能

9.2.4基本定时器寄存器

9.3通用定时器

9.3.1通用定时器主要功能

9.3.2通用定时器功能描述

9.3.3通用定时器工作模式

9.3.4通用定时器寄存器

9.4高级定时器

9.4.1高级定时器特性

9.4.2高级定时器结构

9.5定时器相关库函数

9.5.1函数TIM_DeInit

9.5.2函数TIM_TimeBaseInit

9.5.3函数TIM_OC1Init

9.5.4函数TIM_OC2Init

9.5.5函数TIM_OC3Init

9.5.6函数TIM_OC4Init

9.5.7函数TIM_Cmd

9.5.8函数TIM_ITConfig

9.5.9函数TIM_OC1PreloadConfig

9.5.10函数TIM_OC2PreloadConfig

9.5.11函数TIM_OC3PreloadConfig

9.5.12函数TIM_OC4PreloadConfig

9.5.13函数TIM_GetFlagStatus

9.5.14函数TIM_ClearFlag

9.5.15函数TIM_GetITStatus

9.5.16函数TIM_ClearITPendingBit

9.5.17函数TIM_SetCompare1

9.5.18函数TIM_SetCompare2

9.5.19函数TIM_SetCompare3

9.5.20函数TIM_SetCompare4

9.6项目实例

9.6.1数字电子钟

9.6.2PWM呼吸灯

本章小结

思考与扩展

第3部分扩展外设模块

第10章串行通信接口USART

微课视频57分钟

10.1数据通信基本概念

10.1.1并行通信与串行通信

10.1.2异步通信与同步通信

10.1.3串行通信的制式

10.1.4串行通信的校验

10.1.5串行通信的波特率

10.2STM32F103的USART工作原理

10.2.1USART介绍

10.2.2USART主要特性

10.2.3USART功能概述

10.2.4USART通信时序

10.2.5USART中断

10.2.6USART相关寄存器

10.3USART相关库函数

10.3.1函数USART_DeInit

10.3.2函数USART_Init

10.3.3函数USART_Cmd

10.3.4函数USART_SendData

10.3.5函数USART_ReceiveData

10.3.6函数USART_GetFlagStatus

10.3.7函数USART_ClearFlag

10.3.8函数USART_ITConfig

10.3.9函数USART_GetITStatus

10.3.10函数USART_ClearITPendingBit

10.3.11函数USART_DMACmd

10.4项目实例

10.4.1项目分析

10.4.2项目实施

本章小结

思考与扩展

第11章SPI与OLED显示屏

微课视频26分钟

11.1SPI通信原理

11.1.1SPI介绍

11.1.2SPI互连

11.2STM32F103的SPI工作原理

11.2.1SPI主要特征

11.2.2SPI内部结构

11.2.3时钟信号的相位和极性

11.2.4数据帧格式

11.3OLED显示屏

11.3.1OLED简介

11.3.2实验平台OLED显示屏

11.3.3OLED显示屏接口

11.4SPI库函数

11.4.1函数SPI_I2S_DeInit

11.4.2函数SPI_Init

11.4.3函数SPI_Cmd

11.4.4函数SPI_I2S_SendData

11.4.5函数SPI_I2S_ReceiveData

11.4.6函数SPI_I2S_ITConfig

11.4.7函数SPI_I2S_GetITStatus

11.4.8函数SPI_I2S_ClearFlag

11.5项目实例

11.5.1项目分析

11.5.2项目实施

本章小结

思考与扩展

第12章模拟数字转换器

微课视频54分钟

12.1ADC概述

12.1.1ADC基本原理

12.1.2ADC性能参数

12.1.3ADC主要类型

12.2STM32F103的ADC工作原理

12.2.1主要特征

12.2.2内部结构

12.2.3通道及分组

12.2.4时序图

12.2.5数据对齐

12.2.6校准

12.2.7转换时间

12.2.8转换模式

12.2.9外部触发转换

12.2.10中断和DMA请求

12.3ADC相关库函数

12.3.1函数ADC_DeInit

12.3.2函数ADC_Init

12.3.3函数ADC_RegularChannelConfig

12.3.4函数ADC_InjectedChannelConfig

12.3.5函数ADC_Cmd

12.3.6函数ADC_ResetCalibration

12.3.7函数ADC_GetResetCalibrationStatus

12.3.8函数ADC_StartCalibration

12.3.9函数ADC_GetCalibrationStatus

12.3.10函数ADC_SoftwareStartConvCmd

12.3.11函数ADC_GetConversionValue

12.3.12函数ADC_GetFlagStatus

12.3.13函数ADC_DMACmd

12.4项目实例

12.4.1项目分析

12.4.2项目实施

本章小结

思考与扩展

第13章直接存储器访问

微课视频48分钟

13.1DMA的基本概念

13.1.1DMA由来

13.1.2DMA定义

13.1.3DMA传输过程

13.1.4DMA优点

13.2STM32F103的DMA工作原理

13.2.1STM32F103的DMA主要特性

13.2.2STM32F103的DMA内部结构

13.2.3STM32F103的DMA通道

13.2.4STM32F103的DMA优先级

13.2.5STM32F103的DMA传输模式

13.2.6STM32F103的DMA中断

13.3DMA相关库函数

13.3.1函数DMA_DeInit

13.3.2函数DMA_Init

13.3.3函数DMA_GetCurrDataCounter

13.3.4函数DMA_Cmd

13.3.5函数DMA_GetFlagStatus

13.3.6函数DMA_ClearFlag

13.3.7函数DMA_ITConfig

13.3.8函数DMA_GetITStatus

13.4项目实例

13.4.1项目分析

13.4.2项目实施

本章小结

思考与扩展

第14章I2C接口与EEPROM

微课视频30分钟

14.1I2C通信原理

14.1.1I2C串行总线概述

14.1.2I2C的数据传输

14.2STM32F103的I2C接口

14.2.1STM32F103的I2C主要特性

14.2.2STM32F103的I2C内部结构

14.2.3STM32F103的模式选择

14.3STM32F103的I2C相关库函数

14.3.1函数I2C_DeInit

14.3.2函数I2C_Init

14.3.3函数I2C_Cmd

14.3.4函数I2C_GenerateSTART

14.3.5函数I2C_GenerateSTOP

14.3.6函数I2C_Send7bitAddress

14.3.7函数I2C_SendData

14.3.8函数I2C_ReceiveData

14.4项目实例

14.4.1模拟I2C时序要求

14.4.2模拟I2C函数

14.4.3EEPROM芯片24C02

14.4.4模拟I2C访问24C02项目分析

14.4.5模拟I2C访问24C02项目实施

本章小结

思考与扩展

第15章RTC与DS18B20传感器

微课视频30分钟

15.1RTC

15.1.1RTC简介

15.1.2RTC主要特性

15.1.3RTC内部结构

15.1.4RTC复位过程

15.2备份寄存器(BKP)

15.2.1BKP简介

15.2.2BKP特性

15.3RTC的操作

15.3.1RTC的初始化

15.3.2RTC时间写入初始化

15.4RTC与BKP相关库函数

15.4.1函数PWR_BackupAccessCmd 

15.4.2函数BKP_DeInit

15.4.3函数RCC_LSEConfig

15.4.4函数RCC_GetFlagStatus

15.4.5函数RCC_RTCCLKConfig

15.4.6函数RCC_RTCCLKCmd

15.4.7函数RTC_WaitForSynchro

15.4.8函数 RTC_WaitForLastTask

15.4.9函数RTC_ITConfig

15.4.10函数RTC_SetPrescaler

15.4.11函数RTC_SetCounter

15.4.12函数RTC_GetCounter

15.4.13函数BKP_ReadBackupRegister

15.4.14函数BKP_WriteBackupRegister

15.4.15函数RCC_ClearFlag

15.5DS18B20温度传感器

15.5.1功能特性与内部结构

15.5.2数据组件

15.5.3访问命令

15.5.4引脚功能与接口电路

15.5.5读写时序与驱动函数

15.5.6读取温度

15.6带温度显示的电子万年历

15.6.1项目分析

15.6.2项目实施

15.6.3项目调试

15.7本章小结

15.8思考与扩展

附录AASCII码表

附录BSTM32编程C语言基础

B.1MDK中的数据类型

B.2运算符和结合性

B.3位运算

B.3.1位运算符和位运算

B.3.2嵌入式系统位运算实用技巧

B.4程序流程控制

B.4.1顺序结构

B.4.2选择结构

B.4.3循环结构

B.5数组

B.5.1一维数组的定义和引用

B.5.2二维数组的定义和引用

B.5.3字符数组

B.6函数

B.6.1函数的定义

B.6.2函数参数和函数的返回值

B.6.3函数调用

B.6.4函数实例

B.7指针

B.7.1指针变量的定义

B.7.2指针变量的引用

B.7.3数组的指针和指向数组的指针变量

B.7.4指向字符串的指针变量

B.7.5指针类型转换

B.8类型别名

B.9复合数据类型

B.9.1结构体数据类型

B.9.2枚举数据类型

B.10编译预处理

B.10.1宏定义

B.10.2条件编译

附录CSTM32F103微控制器小容量产品系列引脚定义表

附录DSTM32F103微控制器中等容量产品系列引脚定义表

附录ESTM32F103微控制器大容量产品系列引脚定义表

参考文献