《STM32F0系列ARM Cortex-M0核微控制器开发与应用》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:喻金钱,喻斌,袁芳编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302374312
  • 页数:412 页
图书介绍:本书在编写过程中,强调实用,易用和有用。共分为三大部分,第一部分,介绍开发平台和实验平台,是后面学习的基础;第二部分,介绍STM32F05x芯片的各个功能模块的特点、库函数,然后用具体的实例详细介绍如何来用这些库函数来实现功能模块的不同应用;第三部分,基于STM32F05x常用系统设计的实例应用。

第1章 STM32F051xx系列芯片简介 1

1.1 STM32F051xx系列芯片功能简介 1

1.2 功能概述 3

1.2.1 内核 3

1.2.2 存储器 3

1.2.3 循环冗余校验计算单元(CRC) 3

1.2.4 直接存储器访问控制器(DMA) 3

1.2.5 向量嵌套中断控制器(NVIC) 4

1.2.6 扩展中断/事件控制器(EXTI) 4

1.2.7 时钟和启动 4

1.2.8 引导模式 4

1.2.9 电源管理 5

1.2.10 低功耗模式 5

1.2.11 实时时钟(RTC)和后备寄存器 6

1.2.12 定时器 6

1.2.13 看门狗 8

1.2.14 SysTick定时器 8

1.2.15 两线串行接口I2C 8

1.2.16 通用同步/异步收发器(USART) 9

1.2.17 高清晰度多媒体接口(HDMI)——消费电子控制(CEC) 9

1.2.18 通用输入/输出端口(GPIO) 9

1.2.19 触摸传感控制器(TSC) 9

1.2.20 模数转换器(ADC) 9

1.2.21 数模转换器(DAC) 10

1.2.22 快速比较器 10

1.2.23 两线串行调试端口(SW-DP) 10

第2章 开发板硬件结构 11

2.1 电路原理图 11

2.2 原理图说明 13

2.2.1 电源电路 13

2.2.2 系统复位电路 14

2.2.3 时钟电路 14

2.2.4 JTAG接口电路 15

2.2.5 串口电路 15

2.2.6 键盘电路 15

2.2.7 LED灯电路 16

2.2.8 I2C接口电路 17

2.2.9 ADC电路 18

2.2.10 SPI接口电路 18

2.3 开发板元器件布局图 19

第3章 编译开发环境的建立 21

3.1 下载和安装EWARM 21

3.2 IDE界面简介 23

3.3 生成一个新项目 24

3.3.1 建立项目文件目录并复制文件 24

3.3.2 生成新的工作区 25

3.3.3 生成新项目 25

3.3.4 给项目添加文件 27

3.4 配置项目选项 28

3.4.1 通用选项设置(General Options) 28

3.4.2 C/C++编译器选项设置(C/C++ Compiler) 29

3.4.3 Assembler选项设置(Assembler) 30

3.4.4 Output Converter选项设置 30

3.4.5 Debugger选项设置 31

3.5 串口调试助手介绍 31

第4章 通用和复用I/O口 33

4.1 GPIO功能描述 33

4.1.1 GPIO主要特性 33

4.1.2 GPIO主要功能 33

4.1.3 通用I/O口 34

4.1.4 I/O引脚的复用功能和重映射 34

4.1.5 I/O端口控制寄存器 35

4.1.6 I/O端口数据寄存器 35

4.1.7 I/O数据位处理 35

4.1.8 GPIO口锁定 36

4.1.9 I/O口复用功能 36

4.1.10 外部中断和唤醒 36

4.1.11 输入配置 36

4.1.12 输出配置 36

4.1.13 模拟输入配置 37

4.2 GPIO库函数 37

4.2.1 函数GPIO_eInit 38

4.2.2 函数GPIO_Init 38

4.2.3 函数GPIO_PinLockConfig 39

4.2.4 函数GPIO_ReadInputDataBit 40

4.2.5 函数GPIO_ReadInputData 40

4.2.6 函数GPIO_ReadOutputDataBit 41

4.2.7 函数GPIO_ReadOutputData 41

4.2.8 函数GPIO_SetBits 41

4.2.9 函数GPIO_ResetBits 42

4.2.10 函数GPIO_WriteBit 42

4.2.11 函数GPIO_Write 43

4.2.12 函数GPIO_PinAFConfig 43

4.3 位运算 45

4.3.1 移位运算 45

4.3.2 按位“与”运算(&) 47

4.3.3 按位“或”运算(|) 48

4.3.4 取反运算(~) 49

4.3.5 异或运算符(^) 49

4.4 I/O口输出实例1——控制LED灯 49

4.4.1 实例目的和要求 49

4.4.2 硬件基础 50

4.4.3 软件结构 50

4.4.4 实例代码 50

4.4.5 编译下载 59

4.5 I/O口输出实例2——流水灯 60

4.5.1 实例要求 60

4.5.2 硬件基础 60

4.5.3 软件结构 61

4.5.4 实例代码 61

4.5.5 编译下载 63

4.6 I/O口输入实例1——按键输入1 64

4.6.1 实例要求 64

4.6.2 硬件基础 64

4.6.3 软件结构 64

4.6.4 实例代码 65

4.6.5 编译下载和调试 67

4.7 I/O口输入实例2——按键输入2 69

4.7.1 实例要求 69

4.7.2 硬件基础 69

4.7.3 软件结构 69

4.7.4 实例代码 70

第5章 USART串口的一般应用 73

5.1 USART功能描述 73

5.1.1 USART主要功能 73

5.1.2 USART扩展功能 74

5.1.3 USART不同工作模式 74

5.1.4 发送器 75

5.1.5 接收器 76

5.1.6 分数比特率的产生 77

5.1.7 自动比特率检测 77

5.1.8 多机通信 78

5.1.9 USART同步模式 79

5.1.10 单线半双工模式 80

5.1.11 智能卡模式 81

5.1.12 IrDA SIR ENDEC功能模块 82

5.1.13 用DMA实现连续通信 84

5.1.14 USART中断 85

5.2 USART串口库函数 85

5.2.1 函数USART_Init 85

5.2.2 函数USART_Cmd 87

5.2.3 函数USART_ITConfig 88

5.2.4 函数USART_SendData 89

5.2.5 函数USART_ReceiveData 89

5.2.6 函数USART_GetFlagStatus 89

5.2.7 函数USART_ClearFlag 90

5.2.8 函数USART_GetITStatus 91

5.2.9 函数USART_ClearITPendingBit 92

5.3 USART通信实例1——串口发送数据 92

5.3.1 实例要求 92

5.3.2 硬件基础 92

5.3.3 软件结构 93

5.3.4 实例代码 95

5.3.5 编译下载和调试 97

5.4 USART通信实例2——中断接收数据 98

5.4.1 实例要求 98

5.4.2 硬件基础 98

5.4.3 软件结构 99

5.4.4 实例代码 99

5.4.5 编译下载和调试 101

5.5 使用队列收发数据实例 101

第6章 系统定时器 104

6.1 系统定时器概述 104

6.2 库函数介绍 104

6.3 系统定时器实例——节拍定时器实例 105

6.3.1 实例要求 105

6.3.2 软件结构 105

6.3.3 实例代码 105

6.3.4 编译下载和调试 106

6.4 有实际应用意义的键盘实例 106

6.4.1 实例要求 106

6.4.2 软件结构 107

6.4.3 实例代码 107

6.4.4 编译下载和调试 109

第7章 中断和事件 113

7.1 中断和事件概述 113

7.1.1 嵌套向量中断控制器(NVIC) 113

7.1.2 外部中断和事件控制器(EXTI) 114

7.2 库函数介绍 117

7.2.1 函数NVIC_Init 117

7.2.2 函数EXTI_DeInit 119

7.2.3 函数EXTI_Init 119

7.2.4 函数EXTI_GenerateSWInterrupt 121

7.2.5 函数EXTI_GetFlagStatus 121

7.2.6 函数EXTI_ClearFlag 121

7.2.7 函数EXTI_GetITStatus 122

7.3 外部中断实例 122

7.3.1 实例目的 122

7.3.2 实例要求 122

7.3.3 硬件基础 123

7.3.4 软件结构 123

7.3.5 实例代码 125

7.3.6 编译下载和调试 127

7.4 中断嵌套实例 127

7.4.1 实例目的 127

7.4.2 实例要求 127

7.4.3 硬件基础 127

7.4.4 软件结构 127

7.4.5 实例代码 127

7.4.6 编译下载和调试 130

第8章 实时时钟(RTC) 131

8.1 实时时钟简介 131

8.1.1 RTC主要特性 131

8.1.2 RTC功能模块 131

8.1.3 时钟和预分频器 132

8.1.4 实时时钟和日历 133

8.1.5 可编程报警 133

8.1.6 RTC初始化及配置 133

8.1.7 读日历寄存器 135

8.1.8 复位过程 136

8.1.9 RTC同步 136

8.1.10 RTC参考时钟检测 136

8.1.11 RTC平滑数字校准 137

8.1.12 时间戳功能 138

8.1.13 侵入检测 139

8.1.14 校准时钟输出 140

8.1.15 报警输出 141

8.1.16 RTC低功耗模式 141

8.1.17 RTC中断 141

8.2 RTC实时时钟库函数介绍 142

8.2.1 函数RTC_Init 142

8.2.2 函数RTC_SetTime 143

8.2.3 函数RTC_GetTime 144

8.2.4 函数RTC_GetSubSecond 144

8.2.5 函数RTC_SetDate 144

8.2.6 函数RTC_SetAlarm 145

8.2.7 函数RTC_ITConfig 146

8.3 实时时钟实例——万年历 147

8.3.1 实例目的 147

8.3.2 实例要求 147

8.3.3 硬件基础 147

8.3.4 软件结构 147

8.3.5 实例代码 149

8.3.6 编译下载和调试 153

第9章 通用SPI的一般应用 154

9.1 SPI简介 154

9.1.1 SPI特征 154

9.1.2 SPI引脚描述 155

9.1.3 数据传输模式 156

9.1.4 SPI从模式 157

9.1.5 SPI主模式 158

9.1.6 状态标志 158

9.1.7 利用DMA的SPI通信 159

9.1.8 SPI中断 159

9.2 SPI库函数介绍 159

9.2.1 函数SPI_Init 160

9.2.2 函数SPI_Cmd 162

9.2.3 函数SPI_I2S_ITConfig 163

9.2.4 函数SPI_I2S_DMACmd 163

9.2.5 函数SPI_SendData8 164

9.2.6 函数SPI_ReceiveData8 164

9.2.7 函数SPI_I2S_GetFlagStatus 165

9.2.8 函数SPI_I2S_ClearFlag 165

9.2.9 函数SPI_I2S_GetITStatus 166

9.3 SPI通信实例——发送数据 166

9.3.1 实例要求 166

9.3.2 硬件基础 166

9.3.3 软件结构 167

9.3.4 实例代码 168

9.3.5 编译下载和调试 172

第10章 I2C接口的一般应用 173

10.1 I2C简介 173

10.1.1 I2C主要特点 173

10.1.2 I2C功能描述 173

10.2 I2C库函数 183

10.2.1 函数I2C_DeInit 183

10.2.2 函数I2C_Init 184

10.2.3 函数I2C_Cmd 185

10.2.4 函数I2C_GenerateSTART 186

10.2.5 函数I2C_GenerateSTOP 186

10.2.6 函数I2C_AcknowledgeConfig 186

10.2.7 函数I2C_OwnAddress2Config 187

10.2.8 函数I2C_DualAddressCmd 187

10.2.9 函数I2C_GeneralCallCmd 188

10.2.10 函数I2C_ITConfig 188

10.2.11 函数I2C_SendData 189

10.2.12 函数I2C_ReceiveData 189

10.2.13 函数I2C_Send7bitAddress 190

10.2.14 函数I2C_ReadRegister 191

10.2.15 函数I2C_SoftwareResetCmd 191

10.2.16 函数I2C_TransferHandling 192

10.2.17 函数I2C_GetFlagStatus 193

10.3 I2C读写24C02实例 194

10.3.1 实例要求 194

10.3.2 硬件基础 194

10.3.3 24C02器件介绍 194

10.3.4 软件结构 196

10.3.5 实例代码 197

10.3.6 编译下载和调试 200

第11章 ADC的一般应用 201

11.1 ADC功能介绍 201

11.1.1 ADC主要特性 201

11.1.2 ADC引脚和内部信号 202

11.1.3 ADC功能描述 202

11.1.4 转换的外部触发和触发极性(EXTSEL、EXTEN) 206

11.1.5 数据对齐 208

11.1.6 低功耗特性 210

11.1.7 模拟窗口看门狗(AWDEN、AWDSGL、AWDCH、AWD_HTR/LTR、AWD) 211

11.1.8 温度传感器 212

11.1.9 电池电压监测 213

11.1.10 ADC中断 213

11.2 实现ADC最佳精度 213

11.2.1 ADC模块自身相关的误差 213

11.2.2 与环境相关的ADC误差 216

11.2.3 如何减小与外部环境相关的ADC误差 219

11.3 ADC库函数 226

11.3.1 函数ADC_DeInit 226

11.3.2 函数ADC_Init 226

11.3.3 函数ADC_Cmd 228

11.3.4 函数ADC_DMACmd 228

11.3.5 函数ADC_ITConfig 229

11.3.6 函数ADC_GetCalibrationFactor 230

11.3.7 函数ADC_StartOfConversion 230

11.3.8 函数ADC_ChannelConfig 230

11.3.9 函数ADC_StructInit 232

11.3.10 函数ADC_AnalogWatchdogCmd 232

11.3.11 函数ADC_AnalogWatchdogThresholdsConfig 233

11.3.12 函数ADC_AnalogWatchdogSingleChannelCmd 233

11.3.13 函数ADC_AnalogWatchdogSingleChannelConfig 234

11.3.14 函数ADC_TempSensorCmd 235

11.3.15 函数ADC_VrefintCmd 235

11.3.16 函数ADC_VbatCmd 236

11.3.17 函数ADC_GetConversionValue 236

11.3.18 函数ADC_DMACmd 237

11.3.19 函数ADC_DMARequestModeConfig 237

11.3.20 函数ADC_GetFlagStatus 238

11.3.21 函数ADC_GetITStatus 238

11.3.22 函数ADC_ClearITPendingBit 239

11.4 ADC数据采集实例1——单通道数据采集 239

11.4.1 实例要求 239

11.4.2 硬件基础 239

11.4.3 软件结构 240

11.4.4 实例代码 243

11.4.5 编译下载和调试 246

11.5 ADC数据采集实例2——周围温度采集 246

11.5.1 实例要求 246

11.5.2 硬件基础 247

11.5.3 软件结构 247

11.5.4 实例代码 247

11.5.5 编译下载和调试 250

第12章 嵌入式闪存的基本操作 251

12.1 嵌入式闪存介绍 251

12.1.1 闪存主要特性 251

12.1.2 闪存模块组织 251

12.1.3 读保护 252

12.1.4 FLASH写和擦除操作 253

12.1.5 存储保护 255

12.1.6 写保护 256

12.2 FLASH固件库函数 257

12.2.1 函数FLASH_SetLatency 257

12.2.2 函数FLASH_PrefetchBufferCmd 258

12.2.3 函数FLASH_Unlock 258

12.2.4 函数FLASH_Lock 259

12.2.5 函数FLASH_ErasePage 259

12.2.6 函数FLASH_EraseAllPages 259

12.2.7 函数FLASH_ProgramWord 260

12.2.8 函数FLASH_ProgramHalfWord 260

12.3 FLASH读写实例 261

12.3.1 实例要求 261

12.3.2 硬件基础 261

12.3.3 软件结构 261

12.3.4 实例代码 262

12.3.5 编译下载和调试 264

第13章 定时器的一般应用 265

13.1 定时器功能介绍 265

13.1.1 定时器主要功能 265

13.1.2 定时器功能描述 266

13.1.3 调试模式 281

13.2 定时器固件库 282

13.2.1 函数TIM_DeInit 282

13.2.2 函数TIM_TimeBaseInit 282

13.2.3 函数TIM_OC1Init 284

13.2.4 函数TIM_OC2Init 286

13.2.5 函数TIM_OC3Init 286

13.2.6 函数TIM1_OC4Init 287

13.2.7 函数TIM_ICInit function 288

13.2.8 函数TIM_BDTRConfig 289

13.2.9 函数TIM_Cmd 291

13.2.10 函数TIM_CtrlPWMOutputs 292

13.2.11 函数TIM_ITConfig 292

13.2.12 函数TIM_SelectInputTrigger 293

13.2.13 函数TIM_EncoderInterfaceConfig 293

13.2.14 函数TIM_ARRPreloadConfig 294

13.2.15 函数TIM_CCPreloadControl 295

13.2.16 函数TIM_OC1PreloadConfig 295

13.2.17 函数TIM_OC2PreloadConfig 296

13.2.18 函数TIM_OC3PreloadConfig 296

13.2.19 函数TIM_OC4PreloadConfig 297

13.2.20 函数TIM_SelectOutputTrigger 297

13.2.21 函数TIM_SelectSlaveMode 298

13.2.22 函数TIM_SelectMasterSlaveMode 298

13.2.23 函数TIM_SetCounter 299

13.2.24 函数TIM_SetAutoreload 299

13.2.25 函数TIM_GetCounter 300

13.2.26 函数TIM_GetPrescaler 300

13.2.27 函数TIM_GetFlagStatus 301

13.2.28 函数TIM_ClearFlag 302

13.2.29 函数TIM_GetITStatus 302

13.2.30 函数TIM_ClearITPendingBit 302

13.3 TIME应用实例1——简单定时器应用 303

13.3.1 实例要求 303

13.3.2 硬件基础 303

13.3.3 软件结构 303

13.3.4 实例代码 306

13.3.5 编译下载和调试 309

13.4 TIME应用实例2——使用一个定时器产生4路不同占空比PWM 309

13.4.1 实例目的 309

13.4.2 实例要求 310

13.4.3 硬件基础 310

13.4.4 软件结构 310

13.4.5 实例代码 312

13.4.6 编译下载和调试 315

13.5 TIME应用实例3——使用定时器产生4路不同占空比和频率的PWM 315

13.5.1 实例目的 315

13.5.2 实例要求 315

13.5.3 硬件基础 315

13.5.4 软件结构 315

13.5.5 实例代码 319

13.5.6 编译下载和调试 324

第14章 独立看门狗和窗口看门狗定时器 325

14.1 独立看门狗一般特性介绍 325

14.1.1 独立看门狗(IWDG)主要功能 325

14.1.2 独立看门狗(IWDG)功能描述 325

14.2 窗口看门狗一般特性介绍 326

14.2.1 窗口看门狗(WWDG)主要特性 327

14.2.2 窗口看门狗(WWDG)功能描述 327

14.2.3 如何设置看门狗超时 328

14.2.4 调试模式 329

14.3 独立看门狗库函数介绍 329

14.3.1 函数IWDG_WriteAccessCmd 329

14.3.2 函数IWDG_SetPrescaler 329

14.3.3 函数IWDG_SetReload 330

14.3.4 函数IWDG_ReloadCounter 331

14.3.5 函数IWDG_Enable 331

14.4 窗口看门狗库函数介绍 331

14.4.1 函数WWDG_DeInit 331

14.4.2 函数WWDG_SetPrescaler 332

14.4.3 函数WWDG_SetWindowValue 332

14.4.4 函数WWDG_EnableIT 333

14.4.5 函数WWDG_SetCounter 333

14.4.6 函数WWDG_Enable 334

14.4.7 函数WWDG_GetFlagStatus 334

14.4.8 函数WWDG_ClearFlag 335

14.5 独立看门狗实例 335

14.5.1 实例目的 335

14.5.2 实例要求 335

14.5.3 硬件基础 336

14.5.4 软件结构 336

14.5.5 实例代码 336

14.5.6 编译下载和调试 338

14.6 窗口看门狗实例 338

14.6.1 实例目的 338

14.6.2 实例要求 338

14.6.3 硬件基础 338

14.6.4 软件结构 339

14.6.5 实例代码 339

14.6.6 编译下载和调试 341

14.7 本章小结 342

第15章 DAC的应用 343

15.1 DAC简介 343

15.1.1 DAC主要特性 343

15.1.2 使能DAC输出缓存 344

15.1.3 DAC数据格式 344

15.1.4 DAC转换 344

15.1.5 DAC输出电压 345

15.1.6 选择DAC触发 345

15.1.7 DMA请求 345

15.2 DAC外设库函数 346

15.2.1 函数DAC_DeInit 346

15.2.2 函数DAC_Init 346

15.2.3 函数DAC_Cmd 347

15.2.4 函数DAC_SetChannel1Data 348

15.2.5 函数DAC_ITConfig 348

15.3 DAC输出电压实例 349

15.3.1 实例要求 349

15.3.2 硬件基础 349

15.3.3 软件结构 349

15.3.4 实例代码 350

15.3.5 编译下载和调试 353

第16章 DMA的一般应用 354

16.1 DMA简介 354

16.1.1 DMA主要特性 354

16.1.2 DMA功能描述 354

16.2 DMA库函数 358

16.2.1 函数DMA_DeInit 358

16.2.2 函数DMA_Init 358

16.2.3 函数DMA_Cmd 361

16.2.4 函数DMA_GetCurrDataCounter 362

16.2.5 函数DMA_ITConfig 362

16.2.6 函数DMA_GetFlagStatus 363

16.2.7 函数DMA_ClearFlag 364

16.2.8 函数DMA_GetITStatus 364

16.2.9 函数DMA_ClearITPendingBit 365

16.3 DMA应用实例1——串口发送数据 365

16.3.1 实例要求 365

16.3.2 硬件基础 365

16.3.3 软件结构 366

16.3.4 实例代码 367

16.3.5 编译下载和调试 369

16.4 DMA应用实例2——DMA中断接收数据 369

16.4.1 实例要求 369

16.4.2 硬件基础 369

16.4.3 软件结构 369

16.4.4 实例代码 369

16.4.5 编译下载和调试 371

16.5 DMA应用实例3——使用SPI产生FM0编码 372

16.5.1 实例要求 372

16.5.2 FM0编码基础 372

16.5.3 编码算法 372

16.5.4 实例代码 373

16.5.5 编译下载和调试 377

16.6 DMA应用实例4——使用DMA采集多路电压 377

16.6.1 实例要求 377

16.6.2 硬件基础 378

16.6.3 软件结构 378

16.6.4 实例代码 378

16.6.5 编译下载和调试 382

第17章 串行FLASH数据储存方案 383

17.1 串行FLASH概述 383

17.1.1 SST25VF016B概述 383

17.1.2 SST25VF016B引脚说明 384

17.1.3 SST25VF016B接口电路 384

17.2 API软件包 385

17.2.1 软件包结构 385

17.2.2 SPI初始化 385

17.2.3 读数据API 388

17.2.4 写数据API 389

17.2.5 FLASH擦除API 391

17.2.6 读ID 393

17.3 FLASH数据读写实例 393

17.3.1 实例目的 394

17.3.2 实例要求 394

17.3.3 硬件基础 394

17.3.4 实例代码 394

17.3.5 编译下载和调试 396

第18章 LCD模块应用 397

18.1 LCD模块介绍 397

18.1.1 LCD屏性能特性 397

18.1.2 ILI9163C驱动芯SPI时序 398

18.1.3 ILI9163C寄存器介绍 399

18.2 LCD模块相关API函数集 399

18.2.1 SPI接口初始化 400

18.2.2 初始化LCD屏 402

18.2.3 LCD屏API软件函数集 402

18.3 LCD屏显示实例 410

18.3.1 实例目的 410

18.3.2 实例要求 410

18.3.3 硬件基础 410

18.3.4 软件结构 410

18.3.5 实例代码 410