普中 STM32F1xx 开发攻略
www.prechin.cn
普中 STM32F1xx 开发攻略
开源共享
携手共进
深圳普中科技有限公司
官方网站:www.prechin.cn
技术论坛:www.prechin.net
技术 QQ:2489019400
咨询电话:0755-61139052
普中 STM32F1xx 开发攻略
www.prechin.cn
目录
普中 STM32F1xx 开发攻略.................................................................................................................1
目录..................................................................................................................................................... 2
第 1 章 如何使用本攻略...................................................................................................................1
第 2 章 开发板功能及使用介绍.......................................................................................................4
2.1 开发板功能介绍..................................................................................................................5
2.1.1 PZ6806L 开发板......................................................................................................... 5
2.1.2 PZ6806D 开发板........................................................................................................ 7
第 3 章 STM32 介绍..........................................................................................................................13
3.1 STM32 是什么.....................................................................................................................14
3.2 STM32 与 ARM 的关系.......................................................................................................14
3.3 STM32F103ZET6 介绍.........................................................................................................14
3.4 STM32 能做什么.................................................................................................................20
3.5 STM32 学习方法.................................................................................................................22
第 4 章 KEIL5 软件安装....................................................................................................................24
4.1 KEIL5 软件获取................................................................................................................... 25
4.2 KEIL5 软件安装................................................................................................................... 25
4.3 安装 STM32 芯片包.......................................................................................................... 29
第 5 章 存储器与寄存器.................................................................................................................33
5.1 存储器映射........................................................................................................................34
5.1.1 存储器映射.............................................................................................................34
5.1.2 存储器区域划分.....................................................................................................35
5.2 什么是寄存器和寄存器映射........................................................................................... 36
5.3 如何访问 STM32 寄存器内容.......................................................................................... 37
5.3.1 STM32 外设地址映射............................................................................................. 37
5.3.2 使用 C 语言封装寄存器........................................................................................ 40
第 6 章 寄存器模板创建.................................................................................................................45
6.1 获取工程模板的基础文件.................................................................................................46
6.2 创建寄存器工程.................................................................................................................46
6.2.1 新建工程..................................................................................................................46
6.2.2 选择 CPU 型号.........................................................................................................47
6.2.3 给工程添加文件......................................................................................................49
6.2.4 配置魔术棒选项卡..................................................................................................50
课后作业...................................................................................................................................54
第 7 章 使用寄存器点亮第一个 LED............................................................................................. 55
7.1 STM32 GPIO 介绍............................................................................................................... 56
7.1.1 GPIO 概念................................................................................................................ 56
7.1.2 GPIO 结构框图........................................................................................................ 58
7.1.3 GPIO 工作模式........................................................................................................ 62
7.2 硬件设计............................................................................................................................63
7.4 实验现象............................................................................................................................71
普中 STM32F1xx 开发攻略
www.prechin.cn
课后作业...................................................................................................................................71
第 8 章 STM32 固件库介绍............................................................................................................ 73
8.1 CMSIS 标准..........................................................................................................................74
8.2 库目录及文件介绍............................................................................................................75
8.2.1 文件夹介绍.............................................................................................................75
8.2.2 文件介绍.................................................................................................................76
8.3 库帮助文档使用................................................................................................................78
课后作业...................................................................................................................................81
第 9 章 库函数模板创建.................................................................................................................82
9.1 固件库的获取....................................................................................................................83
9.2 创建库函数工程................................................................................................................83
9.2.1 新建工程.................................................................................................................83
9.2.2 选择 CPU.................................................................................................................86
9.2.3 给工程添加文件.....................................................................................................88
9.2.4 配置魔术棒选项卡................................................................................................ 91
9.3 启动文件介绍....................................................................................................................96
9.3.1 汇编指令.................................................................................................................97
9.3.2 堆栈.......................................................................................................................101
9.3.3 复位程序...............................................................................................................102
课后作业.................................................................................................................................103
第 10 章 使用库函数点亮一个 LED............................................................................................. 104
10.1 硬件设计........................................................................................................................105
10.2 软件设计........................................................................................................................105
10.2.1 LED 初始化函数.................................................................................................. 106
10.2.2 主函数.................................................................................................................111
10.3 实验现象........................................................................................................................113
课后作业.................................................................................................................................113
第 11 章 STM32 时钟系统............................................................................................................ 114
11.1 STM32 时钟树................................................................................................................ 115
11.2 时钟配置函数................................................................................................................118
11.2.1 时钟初始化配置函数........................................................................................ 118
11.2.2 时钟使能配置函数............................................................................................ 122
11.3 自定义系统时钟............................................................................................................124
11.4 实验现象........................................................................................................................127
课后作业.................................................................................................................................127
第 12 章 STM32 位带操作............................................................................................................ 128
12.1 位带操作介绍................................................................................................................129
12.1.1 位带操作.............................................................................................................129
12.1.2 位带区与位带别名区地址转换........................................................................ 130
12.1.3 位带操作的优点................................................................................................ 131
12.2 GPIO 位带操作............................................................................................................... 132
12.3 软件设计........................................................................................................................133
12.4 实验现象........................................................................................................................137
课后作业.................................................................................................................................137
普中 STM32F1xx 开发攻略
www.prechin.cn
第 13 章 SysTick 系统定时器........................................................................................................ 138
13.1 SysTick 定时器介绍........................................................................................................ 139
13.2 SysTick 定时器操作........................................................................................................ 139
13.2.1 SysTick 定时器寄存器.........................................................................................139
(1)CTRL 寄存器..........................................................................................................139
(2)LOAD 寄存器..........................................................................................................140
(3)VAL 寄存器............................................................................................................140
(4)CALIB 寄存器........................................................................................................140
13.2.2 SysTick 定时器操作步骤.....................................................................................140
13.3.1 SysTick_Init()函数................................................................................................ 141
13.3.2 delay_us()函数.....................................................................................................142
13.3.3 delay_ms()函数....................................................................................................143
13.3.4 主函数.................................................................................................................144
13.4 实验现象........................................................................................................................145
课后作业.................................................................................................................................145
第 14 章 蜂鸣器实验.....................................................................................................................146
14.1 蜂鸣器介绍....................................................................................................................147
14.2 硬件设计........................................................................................................................148
14.3 软件设计........................................................................................................................149
14.3.1 蜂鸣器初始化函数............................................................................................ 149
14.3.2 主函数.................................................................................................................151
14.4 实验现象........................................................................................................................152
课后作业.................................................................................................................................153
第 15 章 数码管显示实验.............................................................................................................154
15.1 数码管介绍....................................................................................................................155
14.2 硬件设计........................................................................................................................156
15.3.1 数码管初始化函数............................................................................................ 156
15.3.2 主函数.................................................................................................................158
15.4 实验现象........................................................................................................................159
课后作业.................................................................................................................................159
第 16 章 按键控制实验.................................................................................................................160
16.1 按键介绍........................................................................................................................161
16.2 硬件设计........................................................................................................................162
16.3.1 按键初始化函数................................................................................................ 163
16.3.2 按键检测函数.................................................................................................... 166
16.3.3 主函数.................................................................................................................168
16.4 实验现象........................................................................................................................169
课后作业.................................................................................................................................170
第 17 章 STM32 中断系统............................................................................................................ 171
17.1 中断介绍........................................................................................................................172
17.1.1 中断概念.............................................................................................................172
17.1.2 NVIC 介绍.............................................................................................................174
17.1.3 中断优先级.........................................................................................................175
17.2 中断配置........................................................................................................................177
普中 STM32F1xx 开发攻略
www.prechin.cn
课后作业.................................................................................................................................179
第 18 章 外部中断实验.................................................................................................................180
18.1 外部中断介绍................................................................................................................181
18.1.1 EXTI 简介..............................................................................................................181
18.1.2 EXTI 结构框图......................................................................................................181
18.1.3 外部中断/事件线映射........................................................................................183
18.2 EXTI 配置步骤.................................................................................................................184
18.3 硬件设计........................................................................................................................187
18.4 软件设计........................................................................................................................188
18.4.1 EXTI 初始化函数..............................................................................................188
18.4.2 EXTI 中断函数......................................................................................................192
18.4.3 主函数.................................................................................................................193
18.5 实验现象........................................................................................................................195
课后作业.................................................................................................................................195
第 19 章 定时器中断实验.............................................................................................................196
19.1 定时器介绍....................................................................................................................197
19.1.1 通用定时器简介................................................................................................ 197
19.1.2 通用定时器结构框图........................................................................................ 198
19.2 通用定时器配置步骤....................................................................................................203
19.3 硬件设计........................................................................................................................206
19.4 软件设计........................................................................................................................207
19.4.1 TIM4 初始化函数................................................................................................ 207
19.4.2 TIM4 中断函数.................................................................................................... 209
19.4.3 主函数.................................................................................................................210
19.5 实验现象........................................................................................................................212
课后作业.................................................................................................................................212
第 20 章 PWM 呼吸灯实验...........................................................................................................213
20.1 PWM 简介.......................................................................................................................214
20.1.1 STM32F1 PWM 介绍........................................................................................... 215
20.2 通用定时器 PWM 输出配置步骤................................................................................ 217
20.3 硬件设计........................................................................................................................222
20.4 软件设计........................................................................................................................222
20.4.1 TIM3 通道 1 的 PWM 初始化函数.....................................................................222
20.4.2 主函数.................................................................................................................225
20.5 实验现象........................................................................................................................227
课后作业.................................................................................................................................227
第 21 章 USART 串口通信实验.....................................................................................................228
21.1 通信的基本概念............................................................................................................229
21.1.1 串行通信与并行通信........................................................................................ 229
21.1.2 异步通信与同步通信........................................................................................ 230
21.1.3 单工、半双工与全双工通信............................................................................ 231
21.1.4 通信速率.............................................................................................................232
21.2 STM32F1 的 USART 介绍................................................................................................232
21.2.1 串口通信简介.................................................................................................... 232
普中 STM32F1xx 开发攻略
www.prechin.cn
21.2.2 USART 简介..........................................................................................................235
21.2.3 USART 结构框图..................................................................................................236
21.3 USART 串口通信配置步骤.............................................................................................239
21.4 硬件设计........................................................................................................................245
21.5 软件设计........................................................................................................................248
21.5.1 USART1 初始化函数............................................................................................248
21.5.2 USART1 中断函数................................................................................................251
21.5.3 主函数.................................................................................................................252
21.6 实验现象........................................................................................................................253
课后作业.................................................................................................................................254
第 22 章 printf 重定向...................................................................................................................255
22.1 printf 重定向介绍...........................................................................................................256
22.1.1 printf 重定向简介............................................................................................... 256
22.1.2 printf 函数格式....................................................................................................256
22.2 硬件设计........................................................................................................................257
22.3 软件设计........................................................................................................................258
22.3.1 USART1 初始化函数............................................................................................258
22.3.2 printf 重定向函数............................................................................................... 258
22.3.3 主函数.................................................................................................................258
22.4 实验现象........................................................................................................................260
课后作业.................................................................................................................................261
第 23 章 独立看门狗(IWDG)实验...........................................................................................262
23.1 IWDG 介绍...................................................................................................................... 263
23.1.1 IWDG 简介........................................................................................................... 263
23.1.2 IWDG 结构框图...................................................................................................263
23.2 IWDG 配置步骤.............................................................................................................. 265
23.3 硬件设计........................................................................................................................266
23.4 软件设计........................................................................................................................266
23.4.1 IWDG 初始化函数...............................................................................................267
23.4.2 主函数.................................................................................................................268
23.5 实验现象........................................................................................................................270
课后作业.................................................................................................................................270
第 24 章 窗口看门狗(WWDG)实验........................................................................................ 271
24.1 WWDG 介绍....................................................................................................................272
24.1.1 WWDG 简介.........................................................................................................272
24.1.2 WWDG 结构框图................................................................................................ 273
24.2 WWDG 配置步骤............................................................................................................275
24.3 硬件设计........................................................................................................................276
24.4 软件设计........................................................................................................................276
24.4.1 WWDG 初始化函数............................................................................................ 277
24.4.2 窗口看门狗中断函数........................................................................................ 278
24.4.3 主函数.................................................................................................................279
24.5 实验现象........................................................................................................................280
课后作业.................................................................................................................................280
普中 STM32F1xx 开发攻略
www.prechin.cn
第 25 章 输入捕获实验.................................................................................................................281
25.1 输入捕获介绍................................................................................................................282
25.1.1 输入捕获简介.................................................................................................... 282
25.2 输入捕获配置步骤............................................................................................... 283
25.3 硬件设计........................................................................................................................287
25.4 软件设计........................................................................................................................287
25.4.1 TIM5 的 CH1 初始化函数................................................................................... 288
25.4.2 TIM5 中断函数.................................................................................................... 290
25.4.3 主函数.................................................................................................................293
25.5 实验现象........................................................................................................................295
课后作业.................................................................................................................................295
第 26 章 电容触摸按键实验.........................................................................................................296
26.1 电容触摸按键介绍........................................................................................................297
26.2 硬件设计........................................................................................................................298
26.3 软件设计........................................................................................................................299
26.3.1 TIM5 的 CH2 初始化函数................................................................................... 300
26.3.2 高电平捕获函数................................................................................................ 302
26.3.3 电容触摸按键初始化函数................................................................................ 303
26.3.4 电容触摸按键检测函数.................................................................................... 305
26.3.5 主函数.................................................................................................................307
26.4 实验现象........................................................................................................................308
课后作业.................................................................................................................................309
第 27 章 待机唤醒实验.................................................................................................................310
27.1 STM32 待机模式介绍.................................................................................................... 311
27.1.1 STM32 低功耗模式介绍..................................................................................... 311
27.2 待机模式配置步骤............................................................................................... 313
27.3 硬件设计........................................................................................................................314
27.4 软件设计........................................................................................................................314
27.4.1 待机模式配置函数............................................................................................ 315
27.4.2 主函数.................................................................................................................316
27.5 实验现象........................................................................................................................317
课后作业.................................................................................................................................318
第 28 章 ADC 模数转换实验.........................................................................................................319
28.1 STM32F1 ADC 介绍.........................................................................................................320
28.1.1 STM32F1 ADC 简介..............................................................................................320
28.1.2 STM32F1 ADC 结构框图......................................................................................321
28.2 STM32F1 ADC 配置步骤.................................................................................................327
28.3 硬件设计........................................................................................................................330
28.4 软件设计........................................................................................................................332
28.4.1 ADC1 初始化函数................................................................................................332
28.4.2 获取 ADC1_IN1 转换值函数..............................................................................334
28.4.3 主函数.................................................................................................................335
28.5 实验现象........................................................................................................................337
课后作业.................................................................................................................................338
普中 STM32F1xx 开发攻略
www.prechin.cn
第 29 章 内部温度传感器实验.....................................................................................................339
29.1 STM32F1 内部温度传感器介绍.................................................................................... 340
29.1.1 STM32F1 内部温度传感器简介......................................................................... 340
29.2 内部温度传感器配置步骤................................................................................... 341
29.3 硬件设计........................................................................................................................341
29.4 软件设计........................................................................................................................341
29.4.1 内部温度传感器初始化函数............................................................................ 342
29.4.2 温度读取函数.................................................................................................... 344
29.4.3 主函数.................................................................................................................345
29.4 实验现象........................................................................................................................346
课后作业.................................................................................................................................347
第 30 章 DAC 数模转换实验.........................................................................................................348
30.1 STM32F1 DAC 介绍.........................................................................................................349
30.1.1 STM32F1 DAC 简介..............................................................................................349
30.1.2 STM32F1 DAC 结构框图......................................................................................350
30.2 STM32F1 DAC 配置步骤.........................................................................................354
30.3 硬件设计........................................................................................................................357
30.4 软件设计........................................................................................................................358
30.4.1 DAC 通道 1 初始化函数......................................................................................359
30.4.2 主函数.................................................................................................................360
30.5 实验现象........................................................................................................................363
课后作业.................................................................................................................................364
第 31 章 DMA 实验........................................................................................................................365
31.1 STM32F1 DMA 介绍....................................................................................................... 366
31.1.1 DMA 简介............................................................................................................ 366
31.1.2 DMA 结构框图.................................................................................................... 367
31.1.3 DMA 数据配置.................................................................................................... 369
31.2 DMA 配置步骤....................................................................................................... 371
31.3 硬件设计........................................................................................................................375
31.4 软件设计........................................................................................................................376
31.4.1 DMA 初始化函数................................................................................................ 376
31.4.2 开启 DMA 传输函数.......................................................................................... 378
31.4.3 主函数.................................................................................................................379
31.5 实验现象........................................................................................................................382
课后作业.................................................................................................................................383
第 32 章 RTC 实时时钟实验......................................................................................................... 384
32.1 STM32F1 RTC 介绍..........................................................................................................385
32.1.1 RTC 简介...............................................................................................................385
32.1.2 RTC 结构框图...................................................................................................... 385
32.2 RTC 配置步骤..................................................................................................................387
32.3 硬件设计........................................................................................................................390
32.4 软件设计........................................................................................................................391
32.4.1 RTC 初始化函数.................................................................................................. 391
32.4.2 RTC 设置日期时间函数...................................................................................... 394