内容简介
第1章 STM32F051xx系列芯片简介
1.1 STM32F051xx系列芯片功能简介
1.2 功能概述
1.2.1 内核
1.2.2 存储器
1.2.3 循环冗余校验计算单元(CRC)
1.2.4 直接存储器访问控制器(DMA)
1.2.5 向量嵌套中断控制器(NVIC)
1.2.6 扩展中断/事件控制器(EXTI)
1.2.7 时钟和启动
1.2.8 引导模式
1.2.9 电源管理
1.2.10 低功耗模式
1.2.11 实时时钟(RTC)和后备寄存器
1.2.12 定时器
1.2.13 看门狗
1.2.14 SysTick定时器
1.2.15 两线串行接口I2C
1.2.16 通用同步/异步收发器(USART)
1.2.17 高清晰度多媒体接口(HDMI)——消费电子控制(CEC)
1.2.18 通用输入/输出端口(GPIO)
1.2.19 触摸传感控制器(TSC)
1.2.20 模数转换器(ADC)
1.2.21 数模转换器(DAC)
1.2.22 快速比较器
1.2.23 两线串行调试端口(SW-DP)
第2章 开发板硬件结构
2.1 电路原理图
2.2 原理图说明
2.2.1 电源电路
2.2.2 系统复位电路
2.2.3 时钟电路
2.2.4 JTAG接口电路
2.2.5 串口电路
2.2.6 键盘电路
2.2.7 LED灯电路
2.2.8 I2C接口电路
2.2.9 ADC电路
2.2.10 SPI接口电路
2.3 开发板元器件布局图
第3章 编译开发环境的建立
3.1 下载和安装EWARM
3.2 IDE界面简介
3.3 生成一个新项目
3.3.1 建立项目文件目录并复制文件
3.3.2 生成新的工作区
3.3.3 生成新项目
3.3.4 给项目添加文件
3.4 配置项目选项
3.4.1 通用选项设置(General Options)
3.4.2 C/C++编译器选项设置(C/C++ Compiler)
3.4.3 Assembler选项设置(Assembler)
3.4.4 Output Converter选项设置
3.4.5 Debugger选项设置
3.5 串口调试助手介绍
第4章 通用和复用I/O口
4.1 GPIO功能描述
4.1.1 GPIO主要特性
4.1.2 GPIO主要功能
4.1.3 通用I/O口
4.1.4 I/O引脚的复用功能和重映射
4.1.5 I/O端口控制寄存器
4.1.6 I/O端口数据寄存器
4.1.7 I/O数据位处理
4.1.8 GPIO口锁定
4.1.9 I/O口复用功能
4.1.10 外部中断和唤醒
4.1.11 输入配置
4.1.12 输出配置
4.1.13 模拟输入配置
4.2 GPIO库函数
4.2.1 函数GPIO_eInit
4.2.2 函数GPIO_Init
4.2.3 函数GPIO_PinLockConfig
4.2.4 函数GPIO_ReadInputDataBit
4.2.5 函数GPIO_ReadInputData
4.2.6 函数GPIO_ReadOutputDataBit
4.2.7 函数GPIO_ReadOutputData
4.2.8 函数GPIO_SetBits
4.2.9 函数GPIO_ResetBits
4.2.10 函数GPIO_WriteBit
4.2.11 函数GPIO_Write
4.2.12 函数GPIO_PinAFConfig
4.3 位运算
4.3.1 移位运算
4.3.2 按位“与”运算(&)
4.3.3 按位“或”运算(|)
4.3.4 取反运算(~)
4.3.5 异或运算符(^)
4.4 I/O口输出实例1——控制LED灯
4.4.1 实例目的和要求
4.4.2 硬件基础
4.4.3 软件结构
4.4.4 实例代码
4.4.5 编译下载
4.5 I/O口输出实例2——流水灯
4.5.1 实例要求
4.5.2 硬件基础
4.5.3 软件结构
4.5.4 实例代码
4.5.5 编译下载
4.6 I/O口输入实例1——按键输入1
4.6.1 实例要求
4.6.2 硬件基础
4.6.3 软件结构
4.6.4 实例代码
4.6.5 编译下载和调试
4.7 I/O口输入实例2——按键输入2
4.7.1 实例要求
4.7.2 硬件基础
4.7.3 软件结构
4.7.4 实例代码
第5章 USART串口的一般应用
5.1 USART功能描述
5.1.1 USART主要功能
5.1.2 USART扩展功能
5.1.3 USART不同工作模式
5.1.4 发送器
5.1.5 接收器
5.1.6 分数比特率的产生
5.1.7 自动比特率检测
5.1.8 多机通信
5.1.9 USART同步模式
5.1.10 单线半双工模式
5.1.11 智能卡模式
5.1.12 IrDA SIR ENDEC功能模块
5.1.13 用DMA实现连续通信
5.1.14 USART中断
5.2 USART串口库函数
5.2.1 函数USART_Init
5.2.2 函数USART_Cmd
5.2.3 函数USART_ITConfig
5.2.4 函数USART_SendData
5.2.5 函数USART_ReceiveData
5.2.6 函数USART_GetFlagStatus
5.2.7 函数USART_ClearFlag
5.2.8 函数USART_GetITStatus
5.2.9 函数USART_ClearITPendingBit
5.3 USART通信实例1——串口发送数据
5.3.1 实例要求
5.3.2 硬件基础
5.3.3 软件结构
5.3.4 实例代码
5.3.5 编译下载和调试
5.4 USART通信实例2——中断接收数据
5.4.1 实例要求
5.4.2 硬件基础
5.4.3 软件结构
5.4.4 实例代码
5.4.5 编译下载和调试
5.5 使用队列收发数据实例
第6章 系统定时器
6.1 系统定时器概述
6.2 库函数介绍
6.3 系统定时器实例——节拍定时器实例
6.3.1 实例要求
6.3.2 软件结构
6.3.3 实例代码
6.3.4 编译下载和调试
6.4 有实际应用意义的键盘实例
6.4.1 实例要求
6.4.2 软件结构
6.4.3 实例代码
6.4.4 编译下载和调试
第7章 中断和事件
7.1 中断和事件概述
7.1.1 嵌套向量中断控制器(NVIC)
7.1.2 外部中断和事件控制器(EXTI)
7.2 库函数介绍
7.2.1 函数NVIC_Init
7.2.2 函数EXTI_DeInit
7.2.3 函数EXTI_Init
7.2.4 函数EXTI_GenerateSWInterrupt
7.2.5 函数EXTI_GetFlagStatus
7.2.6 函数EXTI_ClearFlag
7.2.7 函数EXTI_GetITStatus
7.3 外部中断实例
7.3.1 实例目的
7.3.2 实例要求
7.3.3 硬件基础
7.3.4 软件结构
7.3.5 实例代码
7.3.6 编译下载和调试
7.4 中断嵌套实例
7.4.1 实例目的
7.4.2 实例要求
7.4.3 硬件基础
7.4.4 软件结构
7.4.5 实例代码
7.4.6 编译下载和调试
第8章 实时时钟(RTC)
8.1 实时时钟简介
8.1.1 RTC主要特性
8.1.2 RTC功能模块
8.1.3 时钟和预分频器
8.1.4 实时时钟和日历
8.1.5 可编程报警
8.1.6 RTC初始化及配置
8.1.7 读日历寄存器
8.1.8 复位过程
8.1.9 RTC同步
8.1.10 RTC参考时钟检测
8.1.11 RTC平滑数字校准
8.1.12 时间戳功能
8.1.13 侵入检测
8.1.14 校准时钟输出
8.1.15 报警输出
8.1.16 RTC低功耗模式
8.1.17 RTC中断
8.2 RTC实时时钟库函数介绍
8.2.1 函数RTC_Init
8.2.2 函数RTC_SetTime
8.2.3 函数RTC_GetTime
8.2.4 函数RTC_GetSubSecond
8.2.5 函数RTC_SetDate
8.2.6 函数RTC_SetAlarm
8.2.7 函数RTC_ITConfig
8.3 实时时钟实例——万年历
8.3.1 实例目的
8.3.2 实例要求
8.3.3 硬件基础
8.3.4 软件结构
8.3.5 实例代码
8.3.6 编译下载和调试
第9章 通用SPI的一般应用
9.1 SPI简介
9.1.1 SPI特征
9.1.2 SPI引脚描述
9.1.3 数据传输模式
9.1.4 SPI从模式
9.1.5 SPI主模式
9.1.6 状态标志
9.1.7 利用DMA的SPI通信
9.1.8 SPI中断
9.2 SPI库函数介绍
9.2.1 函数SPI_Init
9.2.2 函数SPI_Cmd
9.2.3 函数SPI_I2S_ITConfig
9.2.4 函数SPI_I2S_DMACmd
9.2.5 函数SPI_SendData8
9.2.6 函数SPI_ReceiveData8
9.2.7 函数SPI_I2S_GetFlagStatus
9.2.8 函数SPI_I2S_ClearFlag
9.2.9 函数SPI_I2S_GetITStatus
9.3 SPI通信实例——发送数据
9.3.1 实例要求
9.3.2 硬件基础
9.3.3 软件结构
9.3.4 实例代码
9.3.5 编译下载和调试
第10章 I2C接口的一般应用
10.1 I2C简介
10.1.1 I2C主要特点
10.1.2 I2C功能描述
10.2 I2C库函数
10.2.1 函数I2C_DeInit
10.2.2 函数I2C_Init
10.2.3 函数I2C_Cmd
10.2.4 函数I2C_GenerateSTART
10.2.5 函数I2C_GenerateSTOP
10.2.6 函数I2C_AcknowledgeConfig
10.2.7 函数I2C_OwnAddress2Config
10.2.8 函数I2C_DualAddressCmd
10.2.9 函数I2C_GeneralCallCmd
10.2.10 函数I2C_ITConfig
10.2.11 函数I2C_SendData
10.2.12 函数I2C_ReceiveData
10.2.13 函数I2C_Send7bitAddress
10.2.14 函数I2C_ReadRegister
10.2.15 函数I2C_SoftwareResetCmd
10.2.16 函数I2C_TransferHandling
10.2.17 函数I2C_GetFlagStatus
10.3 I2C读写24C02实例
10.3.1 实例要求
10.3.2 硬件基础
10.3.3 24C02器件介绍
10.3.4 软件结构
10.3.5 实例代码
10.3.6 编译下载和调试
第11章 ADC的一般应用
11.1 ADC功能介绍
11.1.1 ADC主要特性
11.1.2 ADC引脚和内部信号
11.1.3 ADC功能描述
11.1.4 转换的外部触发和触发极性(EXTSEL、EXTEN)
11.1.5 数据对齐
11.1.6 低功耗特性
11.1.7 模拟窗口看门狗(AWDEN、AWDSGL、AWDCH、AWD_HTR/LTR、AWD)
11.1.8 温度传感器
11.1.9 电池电压监测
11.1.10 ADC中断
11.2 实现ADC最佳精度
11.2.1 ADC模块自身相关的误差
11.2.2 与环境相关的ADC误差
11.2.3 如何减小与外部环境相关的ADC误差
11.3 ADC库函数
11.3.1 函数ADC_DeInit
11.3.2 函数ADC_Init
11.3.3 函数ADC_Cmd
11.3.4 函数ADC_DMACmd
11.3.5 函数ADC_ITConfig
11.3.6 函数ADC_GetCalibrationFactor
11.3.7 函数ADC_StartOfConversion
11.3.8 函数ADC_ChannelConfig
11.3.9 函数ADC_StructInit
11.3.10 函数ADC_AnalogWatchdogCmd
11.3.11 函数ADC_AnalogWatchdogThresholdsConfig
11.3.12 函数ADC_AnalogWatchdogSingleChannelCmd
11.3.13 函数ADC_AnalogWatchdogSingleChannelConfig
11.3.14 函数ADC_TempSensorCmd
11.3.15 函数ADC_VrefintCmd
11.3.16 函数ADC_VbatCmd
11.3.17 函数ADC_GetConversionValue
11.3.18 函数ADC_DMACmd
11.3.19 函数ADC_DMARequestModeConfig
11.3.20 函数ADC_GetFlagStatus
11.3.21 函数ADC_GetITStatus
11.3.22 函数ADC_ClearITPendingBit
11.4 ADC数据采集实例1——单通道数据采集
11.4.1 实例要求
11.4.2 硬件基础
11.4.3 软件结构
11.4.4 实例代码
11.4.5 编译下载和调试
11.5 ADC数据采集实例2——周围温度采集
11.5.1 实例要求
11.5.2 硬件基础
11.5.3 软件结构
11.5.4 实例代码
11.5.5 编译下载和调试
第12章 嵌入式闪存的基本操作
12.1 嵌入式闪存介绍
12.1.1 闪存主要特性
12.1.2 闪存模块组织
12.1.3 读保护
12.1.4 FLASH写和擦除操作
12.1.5 存储保护
12.1.6 写保护
12.2 FLASH固件库函数
12.2.1 函数FLASH_SetLatency
12.2.2 函数FLASH_PrefetchBufferCmd
12.2.3 函数FLASH_Unlock
12.2.4 函数FLASH_Lock
12.2.5 函数FLASH_ErasePage
12.2.6 函数FLASH_EraseAllPages
12.2.7 函数FLASH_ProgramWord
12.2.8 函数FLASH_ProgramHalfWord
12.3 FLASH读写实例
12.3.1 实例要求
12.3.2 硬件基础
12.3.3 软件结构
12.3.4 实例代码
12.3.5 编译下载和调试
第13章 定时器的一般应用
13.1 定时器功能介绍
13.1.1 定时器主要功能
13.1.2 定时器功能描述
13.1.3 调试模式
13.2 定时器固件库
13.2.1 函数TIM_DeInit
13.2.2 函数TIM_TimeBaseInit
13.2.3 函数TIM_OC1Init
13.2.4 函数TIM_OC2Init
13.2.5 函数TIM_OC3Init
13.2.6 函数TIM1_OC4Init
13.2.7 函数TIM_ICInit function
13.2.8 函数TIM_BDTRConfig
13.2.9 函数TIM_Cmd
13.2.10 函数TIM_CtrlPWMOutputs
13.2.11 函数TIM_ITConfig
13.2.12 函数TIM_SelectInputTrigger
13.2.13 函数TIM_EncoderInterfaceConfig
13.2.14 函数TIM_ARRPreloadConfig
13.2.15 函数TIM_CCPreloadControl
13.2.16 函数TIM_OC1PreloadConfig
13.2.17 函数TIM_OC2PreloadConfig
13.2.18 函数TIM_OC3PreloadConfig
13.2.19 函数TIM_OC4PreloadConfig
13.2.20 函数TIM_SelectOutputTrigger
13.2.21 函数TIM_SelectSlaveMode
13.2.22 函数TIM_SelectMasterSlaveMode
13.2.23 函数TIM_SetCounter
13.2.24 函数TIM_SetAutoreload
13.2.25 函数TIM_GetCounter
13.2.26 函数TIM_GetPrescaler
13.2.27 函数TIM_GetFlagStatus
13.2.28 函数TIM_ClearFlag
13.2.29 函数TIM_GetITStatus
13.2.30 函数TIM_ClearITPendingBit
13.3 TIME应用实例1——简单定时器应用
13.3.1 实例要求
13.3.2 硬件基础
13.3.3 软件结构
13.3.4 实例代码
13.3.5 编译下载和调试
13.4 TIME应用实例2——使用一个定时器产生4路不同占空比PWM
13.4.1 实例目的
13.4.2 实例要求
13.4.3 硬件基础
13.4.4 软件结构
13.4.5 实例代码
13.4.6 编译下载和调试
13.5 TIME应用实例3——使用定时器产生4路不同占空比和频率的PWM
13.5.1 实例目的
13.5.2 实例要求
13.5.3 硬件基础
13.5.4 软件结构
13.5.5 实例代码
13.5.6 编译下载和调试
第14章 独立看门狗和窗口看门狗定时器
14.1 独立看门狗一般特性介绍
14.1.1 独立看门狗(IWDG)主要功能
14.1.2 独立看门狗(IWDG)功能描述
14.2 窗口看门狗一般特性介绍
14.2.1 窗口看门狗(WWDG)主要特性
14.2.2 窗口看门狗(WWDG)功能描述
14.2.3 如何设置看门狗超时
14.2.4 调试模式
14.3 独立看门狗库函数介绍
14.3.1 函数IWDG_WriteAccessCmd
14.3.2 函数IWDG_SetPrescaler
14.3.3 函数IWDG_SetReload
14.3.4 函数IWDG_ReloadCounter
14.3.5 函数IWDG_Enable
14.4 窗口看门狗库函数介绍
14.4.1 函数WWDG_DeInit
14.4.2 函数WWDG_SetPrescaler
14.4.3 函数WWDG_SetWindowValue
14.4.4 函数WWDG_EnableIT
14.4.5 函数WWDG_SetCounter
14.4.6 函数WWDG_Enable
14.4.7 函数WWDG_GetFlagStatus
14.4.8 函数WWDG_ClearFlag
14.5 独立看门狗实例
14.5.1 实例目的
14.5.2 实例要求
14.5.3 硬件基础
14.5.4 软件结构
14.5.5 实例代码
14.5.6 编译下载和调试
14.6 窗口看门狗实例
14.6.1 实例目的
14.6.2 实例要求
14.6.3 硬件基础
14.6.4 软件结构
14.6.5 实例代码
14.6.6 编译下载和调试
14.7 本章小结
第15章 DAC的应用
15.1 DAC简介
15.1.1 DAC主要特性
15.1.2 使能DAC输出缓存
15.1.3 DAC数据格式
15.1.4 DAC转换
15.1.5 DAC输出电压
15.1.6 选择DAC触发
15.1.7 DMA请求
15.2 DAC外设库函数
15.2.1 函数DAC_DeInit
15.2.2 函数DAC_Init
15.2.3 函数DAC_Cmd
15.2.4 函数DAC_SetChannel1Data
15.2.5 函数DAC_ITConfig
15.3 DAC输出电压实例
15.3.1 实例要求
15.3.2 硬件基础
15.3.3 软件结构
15.3.4 实例代码
15.3.5 编译下载和调试
第16章 DMA的一般应用
16.1 DMA简介
16.1.1 DMA主要特性
16.1.2 DMA功能描述
16.2 DMA库函数
16.2.1 函数DMA_DeInit
16.2.2 函数DMA_Init
16.2.3 函数DMA_Cmd
16.2.4 函数DMA_GetCurrDataCounter
16.2.5 函数DMA_ITConfig
16.2.6 函数DMA_GetFlagStatus
16.2.7 函数DMA_ClearFlag
16.2.8 函数DMA_GetITStatus
16.2.9 函数DMA_ClearITPendingBit
16.3 DMA应用实例1——串口发送数据
16.3.1 实例要求
16.3.2 硬件基础
16.3.3 软件结构
16.3.4 实例代码
16.3.5 编译下载和调试
16.4 DMA应用实例2——DMA中断接收数据
16.4.1 实例要求
16.4.2 硬件基础
16.4.3 软件结构
16.4.4 实例代码
16.4.5 编译下载和调试
16.5 DMA应用实例3——使用SPI产生FM0编码
16.5.1 实例要求
16.5.2 FM0编码基础
16.5.3 编码算法
16.5.4 实例代码
16.5.5 编译下载和调试
16.6 DMA应用实例4——使用DMA采集多路电压
16.6.1 实例要求
16.6.2 硬件基础
16.6.3 软件结构
16.6.4 实例代码
16.6.5 编译下载和调试
第17章 串行FLASH数据储存方案
17.1 串行FLASH概述
17.1.1 SST25VF016B概述
17.1.2 SST25VF016B引脚说明
17.1.3 SST25VF016B接口电路
17.2 API软件包
17.2.1 软件包结构
17.2.2 SPI初始化
17.2.3 读数据API
17.2.4 写数据API
17.2.5 FLASH擦除API
17.2.6 读ID
17.3 FLASH数据读写实例
17.3.1 实例目的
17.3.2 实例要求
17.3.3 硬件基础
17.3.4 实例代码
17.3.5 编译下载和调试
第18章 LCD模块应用
18.1 LCD模块介绍
18.1.1 LCD屏性能特性
18.1.2 ILI9163C驱动芯SPI时序
18.1.3 ILI9163C寄存器介绍
18.2 LCD模块相关API函数集
18.2.1 SPI接口初始化
18.2.2 初始化LCD屏
18.2.3 LCD屏API软件函数集
18.3 LCD屏显示实例
18.3.1 实例目的
18.3.2 实例要求
18.3.3 硬件基础
18.3.4 软件结构
18.3.5 实例代码