本书用实例详解的方式介绍STM32单片机与C语言编程,主要内容有STM32单片机基础、STM32单片机的硬件系统、Keil软件与寄存器方式编程闪烁点亮LED、固件库与库函数方式编程闪烁点亮LED、按键控制LED和蜂鸣器的电路与编程实例、中断的使用与编程实例、定时器的使用与编程实例、USART串口通信与编程实例、ADC(模数转换器)的使用与编程实例、DAC(数模转换器)的使用与编程实例、光敏传感器测光与DS18B20测温的电路与编程实例、红外线遥控与RTC实时时钟的使用与编程实例、RS-485通信与CAN通信的原理与编程实例、FSMC与液晶显示屏的使用与编程实例。本书起点低,内容由浅入深,语言通俗易懂,结构安排符合学习认知规律,适合作为初学者学习STM32单片机及编程的自学图书,也适合作为职业院校电类专业的单片机教材。
蔡杏山,电工电子领域专家。曾做过十多年的教师,先后在不同的大中专院校任教,所授课程有电子技术基础、收录机、电视机、录像机、VCD影碟机、摄录像机、电子线路、电子测量仪器、电工技术、PLC技术、变频技术等。2008年后蔡老师将工作重心放在了图书写作上,编著的各类电工电子类图书超过100本,开卷数据统计,蔡老师编著的电工电子类图书全国销量总码洋常年排在前三列,开创单本销量10万册以上的好成绩。
第1章 STM32单片机基础
1.1 STM32单片机简介
1.1.1 什么是ARM
1.1.2 什么是STM32单片机
1.1.3 STM32单片机的型号含义
1.2 STM32单片机的最小系统电路
1.2.1 STM32F103C8T6单片机介绍
1.2.2 STM32单片机的最小系统电路
1.2.3 最小系统实验电路板
1.3 程序的编写与下载
1.3.1 用Keil MDK5软件编写和编译程序
1.3.2 ST-Link下载调试器及驱动程序的安装
1.3.3下载调试器与STM32单片机的连接
1.3.4 连接设置与下载程序
1.3.5 单片机电路板通电测试
1.4 单片机C语言基础
1.4.1 常量
1.4.2变量
1.4.3 运算符
1.4.4 关键字
1.4.5 数组
1.4.6 指针
1.4.7 结构体
1.4.8 枚举
1.4.9 循环语句(while、do while、for语句)
1.4.10 选择语句(if、switch…case语句)
第2章 STM32单片机的硬件系统
2.1单片机内部结构与最小系统电路
2.1.1单片机的引脚功能与最小系统电路
2.1.2单片机内部结构
2.2 存储器的地址分配(映射)
2.2.1 存储器的划分与地址分配
2.2.2 寄存器的命名
2.2.3 基地址与偏移地址
2.3 GPIO端口电路
2.3.1 GPIO端口的基本电路结构
2.3.2 输入模式的电路说明
2.3.3 输出模式的电路说明
2.4 GPIO端口寄存器
2.4.1 端口配置低8位寄存器(GPIOx_CRL,x=A…G)
2.4.2 端口配置高8位寄存器(GPIOx_CRH,x=A…G)
2.4.3 端口输入数据寄存器(GPIOx_IDR,x=A…G)
2.4.4 端口输出数据寄存器(GPIOx_ODR,x=A…G)
2.4.5 端口置位/复位寄存器(GPIOx_BSRR,x=A…G)
2.4.6 端口清0寄存器(GPIOx_BRR,x=A…G)
2.4.7 端口配置锁定寄存器(GPIOx_LCKR,x=A…G)
2.5时钟系统与复位时钟控制寄存器(RCC)
2.5.1时钟信号的种类与分配
2.5.2 时钟控制寄存器(RCC_CR)
2.5.3 时钟配置寄存器(RCC_CFGR)
2.5.4 APB2外设复位寄存器 (RCC_APB2RSTR)
2.5.5 APB1外设复位寄存器 (RCC_APB1RSTR)
2.5.6 AHB外设时钟使能寄存器 (RCC_AHBENR)
2.5.7 APB2外设时钟使能寄存器 (RCC_APB2ENR)
2.5.8 APB1外设时钟使能寄存器 (RCC_APB1ENR)
2.5.9 控制/状态寄存器 (RCC_CSR)
第3章Keil软件与寄存器方式编程闪烁点亮LED
3.1 Keil MDK软件和芯片包的安装
3.1.1 安装Keil MDK5软件
3.1.2 安装芯片包
3.1.3 软件的启动
3.2 创建工程并导入程序文件
3.2.1 创建项目文件夹
3.2.2 查找并复制启动文件
3.2.3 新建工程
3.2.4 新建程序文件
3.2.5 将程序文件导入工程
3.3用寄存器方式编写闪烁点亮LED的程序
3.3.1 头文件程序的编写
3.3.2 头文件的程序代码说明
3.3.3 主程序文件(main.c)的编写
3.3.4 主程序的程序代码说明
3.3.5启动文件说明
3.3.6 编译程序
第4章 固件库与库函数方式编程闪烁点亮LED
4.1 STM32固件库介绍
4.1.1 固件库的组成
4.1.2 固件库一些重要文件说明
4.1.3 固件库帮助文件的使用
4.2 库函数方式编程模板的创建
4.2.1 创建模板文件夹并拷贝需要的文件
4.2.2 创建工程
4.2.3 配置工程
4.2.4 编写主程序模板
4.3 库函数方式闪烁点亮LED工程的创建与编程
4.3.1 利用库函数方式编程模板创建工程
4.3.2 在工程中新建一些文件
4.3.3 程序的编写与说明
4.4位段(bit-band)访问方式编程闪烁点亮LED
4.4.1 位段区与位段别名区
4.4.2 位段区字节的位的别名地址计算
4.4.3 新建工程和程序文件
4.4.4程序的编写与说明
第5章 按键控制LED和蜂鸣器的电路与编程实例
5.1按键、LED、蜂鸣器及相关电路
5.1.1按键开关产生的抖动及解决方法
5.1.2发光二极管(LED)
5.1.3 蜂鸣器
5.2按键输入控制LED和蜂鸣器的电路与程序说明
5.2.1电路及控制功能
5.2.2 创建按键输入控制LED和蜂鸣器的工程
5.2.3 LED端口配置程序及说明
5.2.4 蜂鸣器端口配置程序及说明
5.2.5 按键端口配置、检测程序及说明
5.2.6 主程序文件及说明
第6章 中断的使用与编程实例
6.1 中断基础知识
6.1.1 什么是中断
6.1.2中断源与中断优先级
6.2 外部中断/事件(EXTI)介绍
6.2.1外部中断/事件控制器(EXTI)的组成框图及说明
6.2.2 外部中断/事件线路的分配
6.2.3 外部中断的编程使用步骤
6.3 按键触发中断控制LED和蜂鸣器的编程与说明
6.3.1 创建按键触发中断控制LED和蜂鸣器的工程
6.3.2 中断程序及说明
6.3.3 主程序及说明
第7章 定时器的使用与编程实例
7.1 SysTick定时器(系统定时器)
7.1.1 SysTick定时器的寄存器
7.1.2 SysTick定时器的编程使用步骤
7.1.3 SysTick定时器延时闪烁点亮LED的编程实例
7.1.4更换输出引脚时的程序改动
7.2 通用定时器
7.2.1 通用定时器的功能与组成
7.2.2 通用定时器的编程使用步骤
7.2.3 通用定时器中断闪烁点亮LED的编程实例
7.3 定时器PWM输出功能的使用与编程实例
7.3.1 PWM基本原理
7.3.2 定时器的PWM输出功能
7.3.3定时器PWM输出功能的编程使用步骤
7.3.4定时器PWM输出无级调节LED亮度的编程实例
第8章 USART串口通信与编程实例
8.1串行通信基础知识
8.1.1 并行通信与串行通信
8.1.2 串行通信的两种方式
8.1.3 串行通信的数据传送方向
8.2 USART串口通信介绍
8.2.1 USART串口结构及说明
8.2.2 USART中断控制
8.2.3 USART串口通信的编程使用步骤
8.3 单片机USART串口与其他设备的连接通信电路
8.3.1带有USART串口的两台设备的连接通信电路
8.3.2 单片机USART串口与计算机RS232C口的连接通信电路
8.3.3 单片机USART串口使用CH340芯片与计算机USB口连接的通信电路与驱动安装
8.4 单片机USART串口与计算机通信收发数据的编程实例
8.4.1 编程实现的功能
8.4.2创建工程
8.4.3配置USART1串口的端口、参数、工作模式和中断通道的程序及说明
8.4.4主程序及说明
8.4.5 计算机与单片机通信收发数据测试
8.5 用USART串口输出printf函数指定格式的数据
8.5.1 printf函数介绍
8.5.2 printf函数输出重定向为USART串口
8.5.3 用USART串口输出printf函数指定格式数据的工程与程序说明
8.5.4直观查看printf函数往USART串口输出的数据
第9章 ADC(模数转换器)的使用与编程实例
9.1 ADC基本原理与电路
9.1.1 ADC基本原理
9.1.2 ADC电路
9.2 单片机ADC的结构与使用
9.2.1 ADC的结构与工作过程
9.2.2 ADC的输入通道与分组
9.2.3 ADC的启动与触发源选择
9.2.4 ADC的转换模式
9.2.5 ADC_CLK时钟与通道采样时间
9.2.6 数据寄存器与数据对齐方式
9.2.7 模拟看门狗(上限值和下限值)设置
9.2.8 ADC的编程使用步骤
9.3 用ADC检测电压并与计算机通信显示电压值的编程实例
9.3.1 ADC检测电压并与计算机通信的电路及说明
9.3.2创建工程
9.3.3配置USART1串口的程序及说明
9.3.4配置ADC的程序及说明
9.3.5主程序及说明
9.3.6 查看ADC转换的电压值
9.4单片机内部温度传感器的使用与测温编程实例
9.4.1单片机内部温度传感器及温度检测电路
9.4.2 单片机内部温度传感器检测温度并通信显示温度值的编程实例
9.4.3查看内部温度传感器检测的芯片温度
第10章 DAC(数模转换器)的使用与编程实例
10.1 DA转换原理与过程
10.1.1 DA转换基本原理
10.1.2 DA转换过程
10.2 单片机DAC的结构与使用
10.2.1 DAC的结构与工作过程
10.2.2 DAC_CR控制寄存器说明
10.2.3 DAC使用的编程步骤
10.3 DAC转换数据并通信显示模拟电压值的编程实例
10.3.1 DAC转换数据并通信显示模拟电压值的电路及说明
10.3.2创建工程
10.3.3配置DAC的程序及说明
10.3.4主程序及说明
10.3.5 查看DA值与对应的模拟电压
第11章 光敏传感器测光与DS18B20测温的电路与编程实例
11.1 光敏传感器的使用与测光编程实例
11.1.1光敏传感器
11.1.2 光敏电阻器检测亮度控制LED亮灭并与计算机通信的电路
11.1.3 光敏电阻器检测亮度控制LED亮灭并通信显示亮度值的程序及说明
11.2 DS18B20温度传感器的使用与测温编程实例
11.2.1 DS18B20数字温度传感器
11.2.2 DS18B20检测温度控制LED亮灭并与计算机通信的电路
11.2.3 DS18B20检测温度控制LED亮灭并通信显示温度值的程序及说明
第12章 红外线遥控与RTC实时时钟的使用与编程实例
12.1 红外线遥控收发装置与遥控编码方式
12.1.1 红外线与可见光
12.1.2红外线发射器与红外线发光二极管
12.1.3红外线光敏二极管与红外线接收器
12.1.4 红外遥控的编码方式
12.2 红外遥控LED亮灭并通信显示接收码的电路与编程实例
12.2.1 红外遥控LED亮灭并通信显示接收码的电路
12.2.2 红外遥控LED亮灭并通信显示接收码的程序及说明
12.3 RTC(实时时钟)的使用与编程实例
12.3.1 RTC的结构与工作原理
12.3.2 RTC使用的编程步骤
12.3.3 RTC控制LED亮灭并通信显示时间的电路
12.3.4 RTC控制LED亮灭并通信显示时间的程序及说明
第13章 RS485通信与CAN通信的原理与编程实例
13.1 RS485通信基础
13.1.1 RS232、RS422和RS485通信标准的比较
13.1.2 RS485设备的通信连接
13.1.3 单片机TTL转RS485电路
13.1.4 RS232/RS485转换器与USB/RS485转换器
13.2 单片机与计算机RS485通信的电路与编程实例
13.2.1单片机与计算机RS485通信的电路
13.2.2 单片机与计算机RS485通信的程序及说明
13.3 CAN(控制器局域网络)通信基础
13.3.1 CAN 协议的特点
13.3.2 CAN协议的通信连接与电平规定
13.3.3 CAN协议的通信帧与数据帧
13.3.4 CAN的位时序与位采样
13.3.5多节点同时发送的优先仲裁
13.4 STM32单片机的CAN
13.4.1 特点
13.4.2 CAN组成及说明
13.4.3工作模式与相关寄存器
13.4.4测试模式与相关寄存器
13.4.5 位时序与波特率的计算
13.4.6 标识符过滤(报文选择)
13.4.7 CAN中断
13.4.8 CAN的编程使用步骤
13.5 按键控制CAN通信工作模式和数据发送的电路与编程实例
13.5.1按键控制CAN通信工作模式和数据发送的电路
13.5.2按键控制CAN通信的工作模式和数据发送的程序及说明
13.5.3 用串口调试助手查看CAN通信的工作模式和收发的数据
第14章 FSMC(存储器控制器)与液晶显示屏的使用与编程实例
14.1 FSMC的结构与使用
14.1.1 FSMC结构框图与说明
14.1.2 FSMC连接管理的外部存储器地址分配
14.1.3 FSMC连接NOR/PSRAM的引脚信号
14.1.4 FSMC访问NOR/PSRAM的模式和时序
14.2 液晶显示屏(TFT-LCD)结构与显示原理
14.2.1 液晶、偏光片与光通量控制
14.2.2单色液晶显示屏的显示电路及原理
14.2.3彩色液晶显示屏的显示电路及原理
14.2.4彩色滤光片的排列方式
14.2.5彩色液晶显示屏的结构
14.3 液晶显示屏的通信接口、读写时序与驱动芯片操作指令
14.3.1 一种3.5寸液晶显示屏介绍
14.3.2 液晶显示屏的通信接口与读写时序
14.3.3 LCD驱动芯片IL9341的显存(GRAM)
14.3.4 IL9341芯片的常用操作指令
14.4 FSMC控制液晶屏显示图像的电路与编程实例
14.4.1 STM32单片机连接液晶显示屏的电路
14.4.2创建FSMC控制液晶屏显示图像的工程
14.4.3 提取图像的像素颜色数据
14.4.4 配置FSMC和读写LCD控制器的程序及说明
14.4.5 主程序及说明
14.4.6查看程序运行时液晶屏显示的图像