本书采用大量实例和程序逐行解说的方式介绍了STM32单片机与C语言编程,主要内容有STM32单片机入门,单片机C语言基础,STM32单片机的硬件介绍,Keil软件的使用与寄存器方式编程闪烁点亮LED,固件库与库函数方式编程闪烁点亮LED,按键控制LED和蜂鸣器的电路与编程实例,中断功能的使用与编程实例,定时器的使用与编程实例,串口通信与编程实例,模/数转换器(ADC)的使用与编程实例,数/模转换器(DAC)的使用与编程实例,光敏、温度传感器的检测电路与编程实例,红外线遥控、实时时钟(RTC)的使用与编程实例,RS485通信、CAN通信的原理与编程实例,FSMC、液晶显示屏的使用与编程实例。
前言
第 1 章 STM32 单片机入门.1
1.1 STM32 单片机简介1
1.1.1 什么是 ARM 1
1.1.2 什么是 STM32 单片机 2
1.1.3 STM32 单片机的型号含义 3
1.2 STM32 单片机的最小系统电路3
1.2.1 STM32F103C8T6 单片机介绍 3
1.2.2 STM32 单片机的最小系统电路 4
1.2.3 最小系统实验电路板 6
1.3 程序的编写与下载7
1.3.1 用 Keil MDK5 软件编写和编译程序 7
1.3.2 ST-Link 下载调试器及驱动程序的安装 8
1.3.3 下载调试器与 STM32 单片机的连接 10
1.3.4 连接设置与下载程序 10
1.3.5 单片机电路板通电测试 12
第 2 章 单片机 C 语言基础. 13
2.1 关键字、常量与变量13
2.1.1 关键字 13
2.1.2 常量 13
2.1.3 变量 15
2.2 运算符15
2.2.1 算术运算符 16
2.2.2 关系运算符 16
2.2.3 逻辑运算符 17
2.2.4 位运算符 17
2.2.5 复合赋值运算符 18
2.3 数组、结构体、枚举和指针18
2.3.1 数组 18
2.3.2 结构体 20
2.3.3 枚举 22
2.3.4 指针 22
2.4 控制语句23
2.4.1 循环语句(while、do while、for 语句) 23
2.4.2 选择语句(if、switch…case 语句) 25
第 3 章 STM32 单片机的硬件介绍 27
3.1 单片机内部结构与最小系统电路27
3.1.1 单片机的引脚功能与最小系统电路 27
3.1.2 单片机内部结构 27
3.2 存储器的地址分配29
3.2.1 存储器的划分与地址分配 29
3.2.2 寄存器的命名 30
3.2.3 基地址与偏移地址 31
3.3 GPIO 端口电路32
3.3.1 GPIO 端口的基本电路结构 32
3.3.2 工作在输入模式时的电路原理 32
3.3.3 工作在输出模式时的电路原理 33
3.4 GPIO 端口寄存器34
3.4.1 端口配置低 8 位寄存器(GPIOx_CRL,x=A~G) 34
3.4.2 端口配置高 8 位寄存器(GPIOx_CRH,x=A~G) 34
3.4.3 端口输入数据寄存器(GPIOx_IDR,x=A~G) 35
3.4.4 端口输出数据寄存器(GPIOx_ODR,x=A~G) 36
3.4.5 端口置位 / 复位寄存器(GPIOx_BSRR,x=A~G) 36
3.4.6 端口清 0 寄存器(GPIOx_BRR,x=A~G) 36
3.4.7 端口配置锁定寄存器(GPIOx_LCKR,x=A~G) 37
3.5 时钟、复位及相关寄存器38
3.5.1 时钟信号的种类与分配 38
3.5.2 时钟控制寄存器(RCC_CR) 40
3.5.3 时钟配置寄存器(RCC_CFGR) 41
3.5.4 APB2 外设复位寄存器(RCC_APB2RSTR) 43
3.5.5 APB1 外设复位寄存器(RCC_APB1RSTR) 44
3.5.6 AHB 外设时钟使能寄存器(RCC_AHBENR) 45
3.5.7 APB2 外设时钟使能寄存器(RCC_APB2ENR) 46
3.5.8 APB1 外设时钟使能寄存器(RCC_APB1ENR) 48
3.5.9 控制 / 状态寄存器(RCC_CSR) 49
第 4 章 Keil 软件的使用与寄存器方式编程闪烁点亮 LED. 51
4.1 Keil MDK 软件和芯片包的安装51
4.1.1 Keil MDK5 软件的安装 51
4.1.2 芯片包的安装 . 53
4.1.3 软件的启动 54
4.2 创建项目工程并导入程序文件54
4.2.1 创建项目文件夹 54
4.2.2 查找并复制启动文件 55
4.2.3 新建工程 56
4.2.4 新建程序文件 57
4.2.5 将程序文件导入工程 . 58
4.3 用直接操作寄存器的方式编程闪烁点亮 LED58
4.3.1 编写头文件(.h 文件) 58
4.3.2 头文件的程序代码说明 59
4.3.3 主程序文件(main.c)的编写 61
4.3.4 主程序的程序代码说明 62
4.3.5 启动文件说明 63
4.3.6 编译程序 64
第 5 章 固件库与库函数方式编程闪烁点亮 LED 65
5.1 STM32 固件库介绍65
5.1.1 固件库的组成 65
5.1.2 固件库中一些重要文件说明 65
5.1.3 固件库帮助文件的使用 67
5.2 库函数方式编程模板的创建68
5.2.1 创建模板文件夹并复制需要的文件 68
5.2.2 创建工程 69
5.2.3 配置工程 72
5.2.4 编写主程序模板 75
5.3 库函数方式闪烁点亮 LED 的工程创建与程序编写 76
5.3.1 利用库函数方式编程模板创建工程 . 76
5.3.2 在工程中新建一些文件 76
5.3.3 程序的编写与说明 78
5.4 位段(bit-band)访问方式编程闪烁点亮 LED83
5.4.1 位段区与位段别名区 83
5.4.2 位段区字节的位的别名地址计算 84
5.4.3 新建工程和程序文件 84
5.4.4 程序的编写与说明 86
第 6 章 按键控制 LED 和蜂鸣器的电路与编程实例. 89
6.1 按键、LED、蜂鸣器及相关电路89
6.1.1 按键开关产生的抖动及解决方法 89
6.1.2 发光二极管(LED) 90
6.1.3 蜂鸣器 . 93
6.2 按键输入控制 LED 和蜂鸣器的电路与编程95
6.2.1 电路及控制功能 95
6.2.2 按键输入控制 LED 和蜂鸣器的工程创建 . 96
6.2.3 LED 端口配置的程序及说明 97
6.2.4 蜂鸣器端口配置的程序及说明 97
6.2.5 按键端口配置、检测的程序及说明 97
6.2.6 主程序文件及说明 98
第 7 章 中断功能的使用与编程实例100
7.1 中断基础知识100
7.1.1 什么是中断 100
7.1.2 中断源与中断优先级 100
7.2 外部中断 / 事件控制器(EXTI)介绍104
7.2.1 外部中断 / 事件控制器(EXTI)的组成及说明 104
7.2.2 外部中断 / 事件线