第1部分 基础篇 2
第1章 开发板硬件结构 2
1.1电路原理图 2
1.2原理图说明 5
1.2.1 电源电路 5
1.2.2 系统复位电路 5
1.2.3 时钟电路 6
1.2.4 JTAG接口电路 6
1.2.5 串口电路 6
1.2.6 键盘电路 7
1.2.7 LED灯电路 8
1.2.8 12C接口电路 8
1.2.9 ADC电路 9
1.2.10 USB电路 10
1.2.11 CAN电路 10
1.2.12 语音采集和播放电路 10
1.2.13 SPI接口电路 11
1.2.14 电动机驱动板接口电路 13
1.3开发板元器件布局图 14
1.3.1跳线器说明 14
1.3.2硬件资源使用 19
第2章 编译开发环境的建立 21
2.1下载和安装EWARM 21
2.2IDE界面简介 24
2.3生成一个新项目 25
2.3.1建立项目文件目录,复制公共文件 25
2.3.2生成新的工作区 25
2.3.3生成新项目 26
2.3.4给项目添加文件 27
2.4修改应用文件 28
2.5配置项目选项 29
2.5.1通用选项设置 30
2.5.2 C/C﹢﹢编译器选项设置 30
2.5.3 Assembler选项设置 31
2.5.4 Output Converter选项设置 31
2.5.5 Linker选项设置 32
2.6 Flash Loader Demo下载器介绍 33
2.7力源STM32F的ISP下载器 36
2.8串口调试助手介绍 37
第2部分 应用篇 40
第3章 通用和复用功能I/O口 40
3.1概述 40
3.1.1通用I/O 40
3.1.2单独的位设置或位清除 41
3.1.3外部中断/唤醒线 41
3.1.4复用功能 41
3.1.5软件重新映射I/O复用功能 41
3.1.6 GPIO锁定机制 41
3.1.7输入配置 42
3.1.8输出配置 42
3.1.9复用功能配置 42
3.1.10模拟输入配置 43
3.2库函数 43
3.2.1函数GPIO-Init 43
3.2.2函数GPIO-SetBits 45
3.2.3函数GPIO-ResetBits 45
3.2.4函数GPIO-WriteBit 46
3.2.5函数GPIO-Write 46
3.2.6函数GPIO-ReadOutputDataBit 47
3.2.7函数GPIO-ReadOutputData 47
3.2.8函数GPIO-RcadInputDataBit 48
3.2.9函数GPIO-RcadInputData 48
3.3 I/O端口的外设映射 49
3.3.1将OSC32-IN/OSC32-OUT作为PC14/PC15端口 49
3.3.2将OSC-IN/OSC-OUT引脚作为PD0/PD1端口 49
3.3.3 CAN复用功能重映射 50
3.3.4 JTAG/SWD复用功能重映射 50
3.3.5 ADC复用功能重映射 51
3.3.6 定时器复用功能重映射 51
3.3.7 USART复用功能重映射 53
3.3.8 12C1复用功能重映射 53
3.3.9 SP11复用功能重映射 53
3.4位运算 54
3.4.1移位运算 54
3.4.2按位与运算 57
3.4.3按位或运算 57
3.4.4取反运算 58
3.4.5异或运算 58
3.5I/O口输出实例1——控制LED灯 59
3.5.1实例要求 59
3.5.2硬件基础 59
3.5.3软件结构 59
3.5.4实例代码 60
3.5.5编译下载和调试 68
3.6I/O口输出实例2——流水灯 68
3.6.1实例要求 68
3.6.2硬件基础 68
3.6.3软件结构 69
3.6.4实例代码 70
3.6.5编译下载和调试 71
3.7I/O口输入实例——按键输入1 72
3.7.1实例要求 72
3.7.2硬件基础 72
3.7.3软件结构 72
3.7.4实例代码 73
3.7.5编译下载和调试 75
3.81/O口输入实例——按键输入2 76
第4章USART串口的一般应用 79
4.1 USART介绍 79
4.1.1 USART主要特性 79
4.1.2 USART功能概述 80
4.1.3发送器 80
4.1.4接收器 82
4.1.5分数比特率的产生 83
4.1.6多处理器通信 84
4.1.7 LIN模式 84
4.1.8 USART同步模式 85
4.1.9单线半双工通信 87
4.1.10智能卡 87
4.1.11 IrDA SIR ENDEC功能块 89
4.1.12 USART中断请求 90
4.1.13 USART模式配置 91
4.2 USART串口库函数介绍 91
4.2.1函数USART-Init 91
4.2.2函数USART-Cmd 94
4.2.3函数USART-ITConfig 94
4.2.4函数USART-SendData 95
4.2.5函数USART-ReceiveData 95
4.2.6函数USART-GetFlagStatus 96
4.2.7函数USART-C1earFlag 97
4.2.8函数USART-GetITStatus 97
4.3不同型号芯片的USART串口复用重映射 98
4.3.1引脚为36的系列芯片和引脚为48和64,容量为32KB的芯片 98
4.3.2引脚为48的中容量芯片 99
4.3.3引脚为64的中容量芯片 99
4.3.4引脚为100的中容量芯片 100
4.3.5引脚为64的大容量芯片 101
4.3.6引脚为144的系列芯片和引脚为100的高容量芯片 102
4.4 USART通信实例1——串口发送数据 102
4.4.1实例要求 102
4.4.2硬件基础 103
4.4.3软件结构 103
4.4.4实例代码 106
4.4.5编译下载和调试 108
4.5 USART通信实例2——中断接收数据方式 109
4.5.1实例要求 109
4.5.2硬件基础 109
4.5.3软件结构 109
4.5.4实例代码 110
4.5.5编译下载和调试 112
4.6使用队列收发数据实例 112
第5章 系统时基定时器 115
5.1概述 115
5.2库函数介绍 115
5.2.1函数SysTick-CLKSourceConfig 115
5.2.2函数SysTick-SetReload 116
5.2.3函数SysTick-CounterCmd 116
5.2.4函数SysTick-ITConfig 117
5.2.5函数SysTick-GetCounter 117
5.3系统时基定时器实例1——嘀嗒实例 118
5.3.1实例要求 118
5.3.2软件结构 118
5.3.3实例代码 119
5.3.4编译下载和调试 120
5.4系统时基定时器实例2——有实际应用意义的键盘实例 120
5.4.1实例要求 120
5.4.2软件结构 120
5.4.3实例代码 121
5.4.4编译下载和调试 124
第6章 外部中断和中断控制器 127
6.1嵌套向量中断控制器 127
6.1.1概述 127
6.1.2中断和异常向量 127
6.1.3中断优先级介绍 129
6.2外部中断/事件控制器 131
6.2.1EXTI控制器的主要特征 131
6.2.2唤醒事件管理 131
6.2.3功能说明 132
6.2.4外部中断/事件线路映射 132
6.3 NVIC库函数介绍 133
6.3.1函数NVIC-DeInit 133
6.3.2函数NVIC-PriotyGroupConfig 134
6.3.3函数NVIC-Init 135
6.3.4函数NVIC-SetVectorTable 138
6.4外部中断控制器库函数介绍 138
6.4.1函数EXTI-DeInit 138
6.4.2函数EXTI-Init 139
6.4.3函数EXTI-GenerateSWInterrupt 141
6.4.4函数EXTI-GetFlagStatus 141
6.4.5函数EXTI-ClearFlag 141
6.4.6函数EXTI-GetITStatus 142
6.5外部中断实例 142
6.5.1实例目的 142
6.5.2实例要求 142
6.5.3硬件基础 143
6.5.4软件结构 143
6.5.5实例代码 144
6.5.6编译下载和调试 146
6.6中断嵌套实例 146
6.6.1实例目的 146
6.6.2实例要求 146
6.6.3硬件基础 146
6.6.4软件结构 146
6.6.5实例代码 148
6.6.6编译下载和调试 149
第7章 复位和系统时钟 151
7.1复位 151
7.1.1系统复位 151
7.1.2电源复位 152
7.1.3备份区域复位 152
7.2时钟 152
7.2.1 HSE时钟 153
7.2.2 HSI时钟 154
7.2.3 PLL 154
7.2.4 LSE时钟 155
7.2.5 LSI时钟 155
7.2.6系统时钟选择 156
7.2.7时钟安全系统 156
7.2.8 RTC时钟 156
7.2.9看门狗时钟 157
7.2.10时钟输出 157
7.3外设时钟 157
7.4 RCC库函数 158
7.4.1函数RCC-DeInit 158
7.4.2函数RCC-HSEConfig 158
7.4.3函数RCC-WaitForHSEStartUp 159
7.4.4函数RCC-PLLConfig 159
7.4.5函数RCC-PLLCmd 161
7.4.6函数RCC-SYSCLKConfig 161
7.4.7函数RCC-GetSYSCLKSource 162
7.4.8函数RCC-HCLKConfig 162
7.4.9函数RCC-PCLK1Config 163
7.4.10函数RCC-PCLK2Config 164
7.4.11函数RCC-USBCLKConfg 164
7.4.12函数RCC-ADCCLKConfig 165
7.4.13函数RCC-LSEConfig 165
7.4.14函数RCC-RTCCLKConfig 166
7.4.15函数RCC-RTCCLKCmd 167
7.4.16函数RCC-AHBPeriphClockCmd 167
7.4.17函数RCC-APB1PcriphClockCmd 168
7.4.18函数RCC-APB2PeriphClockCmd 169
7.4.19函数RCC-GetFlagStatus 170
7.5系统时钟的建立 171
7.5.1如何建立时钟 171
7.5.2实例代码 171
第8章 实时时钟和备份寄存器 173
8.1 RTC简介 173
8.1.1主要特性 173
8.1.2复位过程 173
8.1.3概述 173
8.1.4基本操作 174
8.1.5后备域和RTC供电 175
8.1.6低功耗模式下的自动唤醒 176
8.2 BKP简介 176
8.2.1 13KP特性 176
8.2.2 侵入检测 177
8.3 RTC实时时钟库函数介绍 177
8.3.1函数RTC-ITConfig 177
8.3.2函数RTC-EnterConfigMode 178
8.3.3函数RTC-ExitConfigMode 178
8.3.4函数RTC-GetCounter 179
8.3.5函数RTC-SetCountcr 179
8.3.6函数RTC-SetPrescaler 180
8.3.7函数RTC-SetAlarm 180
8.3.8函数RTC-WaitForLastTask 181
8.3.9函数RTC-WaitForSynchro 181
8.3.10函数RTC-GetFlagStatus 182
8.3.11函数RTC-ClearFlag 182
8.3.12函数RTC-GetITStatus 183
8.4 BKP后备域库函数介绍 183
8.4.1函数BKP-DeInit 183
8.4.2函数BKP-TamperPinLcvelConfig 184
8.4.3函数BKP-TamperPinCmd 184
8.4.4函数BKP-WriteBackupRegister 185
8.4.5函数BKP-ReadBackupRegister 186
8.4.6函数BKP-ClearlTPendingBit 186
8.5实时时钟实例——万年历 186
8.5.1实例目的 186
8.5.2实例要求 187
8.5.3硬件基础 187
8.5.4软件结构 187
8.5.5实例代码 188
8.5.6编译下载和调试 191
8.6在后备域中保存数据 192
8.6.1实例要求 192
8.6.2硬件基础 192
8.6.3软件结构 192
8.6.4实例代码 193
8.6.5编译下载和调试 194
第9章 通用SPI的一般应用 195
9.1SPI简介 195
9.1.1 SPI特征 195
9.1.2 SPI引脚描述 196
9.1.3 数据传输模式 197
9.1.4 SPI从模式 198
9.1.5SPI主模式 198
9.1.6状态标志 199
9.1.7利用DMA的SPI通信 200
9.1.8SPI中断 200
9.2 SPI库函数介绍 200
9.2.1函数SPI-DeInit 200
9.2.2函数SPI-Init 201
9.2.3函数SPI-Cmd 203
9.2.4函数SPI-ITConfig 204
9.2.5函数SPI-DMACmd 205
9.2.6函数SPI-ScndData 205
9.2.7函数SPI-ReceiveData 206
9.2.8函数SPI-GetFlagStatus 206
9.2.9函数SPI-CIearFlag 207
9.2.10函数SPI-GetITStatus 207
9.2.11函数SPI-ClearITPendingBit 208
9.3 SPI使用 208
9.3.1 SPI初始化 208
9.3.2 SPI主机发送/接收数据 210
9.3.3完整的初始化和收发数据代码 211
第10章12C接口的一般应用 213
10.1 I2C简介 213
10.2 12C功能描述 213
10.2.1模式选择 214
10.2.2通信流 214
10.2.3 12C从模式 214
10.2.4 12C主模式 216
10.2.5 错误条件 219
10.2.6 SDA/SCL线控制 219
10.2.7 SMBus 220
10.2.8 DMA请求 222
10.2.9 I2C中断请求 223
10.3 12C库函数介绍 225
10.3.1函数12C-DeInit 225
10.3.2函数12C-Init 225
10.3.3函数12C-Cmd 227
10.3.4函数12C-GenerateSTART 227
10.3.5函数12C-GenerateSTOP 228
10.3.6函数12C-AcknowledgeConfig 228
10.3.7函数12C-OwnAddress2Config 228
10.3.8函数12C-DualAddressCmd 229
10.3.9函数12C-GeneralCallCmd 229
10.3.10函数12C-ITConfig 230
10.3.11函数12C-SendData 230
10.3.12函数I2C-ReceiveData 231
10.3.13函数12C-Send7bitAddress 231
10.3.14函数12C-ReadRegister 232
10.3.15函数12C-SoftwarcResctCmd 233
10.3.16函数12C-GetLastEvent 233
10.3.17函数12C-CheckEvent 234
10.4 12C读写24C02 235
10.4.1实例要求 235
10.4.2硬件基础 235
10.4.324C02器件介绍 235
10.4.4软件结构 237
10.4.5实例代码 238
10.4.6编译下载和调试 241
第11章ADC的一般应用 243
11.1 ADC介绍 243
11.1.1 ADC主要特征 243
11.1.2 ADC功能描述 243
11.1.3校准 246
11.1.4数据对齐 247
11.1.5可编程的通道采样时间 247
11.1.6外部触发转换 247
11.1.7DMA请求 249
11.1.8双ADC模式 249
11.1.9温度传感器 250
11.1.10ADC中断 251
11.2实现ADC最佳精度 251
11.2.1ADC模块自身相关的误 251
11.2.2与环境相关的ADC误差 254
11.2.3如何减小与外部环境相关的ADC误差 257
11.3ADC库函数介绍 265
11.3.1函数ADC-Delnit 265
11.3.2函数ADC-Init 265
11.3.3函数ADC-Cmd 267
11.3.4函数ADC-DMACmd 267
11.3.5函数ADC-ITConfig 268
11.3.6函数ADC-ResetCalibration 268
11.3.7函数ADC-GetReset CalibrationStatus 269
11.3.8函数ADC-StartC alibration 269
11.3.9函数ADC-GetCalibrationStatus 270
11.3.10函数ADC-SoftwareStart ConvCmd 270
11.3.11函数ADC-DiscModeChannel CountConfig 270
11.3.12函数ADC-DiscModeCmd 271
11.3.13函数ADC-RegularChannel Config 271
11.3.14函数ADC-ExtemalTrig ConvConfig 273
11.3.15函数ADC-GetConversionValue 273
11.3.16函数ADC-GetDuelMode ConversionValuc 273
11.3.17函数ADC-AutoInjccted ConvCmd 274
11.3.18函数ADC-InjectedDisc ModeCmd 274
11.3.19函数ADC-ExtcmalTrigInjected ConvConfig 275
11.3.20函数ADC-ExtemalTrigInjected ConvCmd 276
11.3.21函数ADC-SoftwareStartInjected ConvCmd 276
11.3.22函数ADC-GetSoftwareStartInjected ConvStatus 276
11.3.23函数ADC-InjectedChannle Config 277
11.3.24函数ADC-InjectedSequencer LengthConfig 277
11.3.25函数ADC-SetInjectedOffset 278
11.3.26函数ADC-GetInjected ConvcrsionValue 279
11.3.27函数ADC-TampSensor VrefintCmd 279
11.3.28函数ADC-GetFIagStatus 279
11.3.29函数ADC-ClearFlag 280
11.4ADC数据采集实例1——单通道数据采集 281
11.4.1实例要求 281
11.4.2硬件基础 281
11.4.3软件结构 281
11.4.4实例代码 283
11.4.5编译下载和调试 287
11.5 ADC数据采集实例2——芯片温度采集 288
11.5.1实例要求 288
11.5.2硬件基础 288
11.5.3软件结构 288
11.5.4实例代码 288
11.5.5编译下载和调试 292
第12章 嵌入式闪存的基本操作 293
12.1嵌入式闪存介绍 293
12.1.1特性 293
12.1.2闪存模块组织 293
12.1.3读操作 294
12.1.4闪存编程和擦除控制器 295
12.2 FLASH固件库函数介绍 300
12.2.1函数FLASH-SetLatency 300
12.2.2函数FLASH-HalfCycle AccessCmd 301
12.2.3函数FLASH-PrefetchBuffeCmd 302
12.2.4函数FLASH-Unlock 302
12.2.5函数FLASH-Lock 303
12.2.6函数FLASH-ErasePage 303
12.2.7函数FLASH-EraseAllPages 303
12.2.8函数FLASH-EraseOptionBytes 304
12.2.9函数FLASH-PrograrnWord 304
12.2.10函数FLASH-ProgramHalfWord 305
12.2.11函数FLASH-ProgramOption ByteData 305
12.2.12函数FLASH-EnableWrite Protection 306
12.2.13函数FLASH-ReadOut Protection 307
12.2.14函数FLASH-UserOption ByteConfig 308
12.2.15函数FLASH-GetUser OptionByte 309
12.2.16函数FLASH-GetWriteProtection OptionByte 309
12.2.17函数FLASH-GetReadOut ProtectionStatus 310
12.2.18函数FLASH-GetPrefetch BufferStatus 310
12.2.19函数FLASH-ITConfig 311
12.2.20函数FLASH-GetFlagStatus 311
12.2.21函数FLASH-ClearFlag 312
12.2.22函数FLASH-GetStatus 313
12.2.23函数FLASH-WaitFor LastOperation 313
12.3 FLASH读写实例 314
12.3.1实例要求 314
12.3.2硬件基础 314
12.3.3软件结构 314
12.3.4实例代码 314
12.3.5编译下载和调试 316
第13章 定时器的一般应用 317
13.1定时器功能简介 317
13.1.1 TIMx主要功能 317
13.1.2 TIMx功能描述 318
13.2定时器固件库函数介绍 333
13.2.1函数TIM-DeInit 333
13.2.2函数TIM-TimeBaseInit 334
13.2.3函数TIM-OC1Init 335
13.2.4函数TIM-OC21nit 337
13.2.5函数TIM-OC31nit 338
13.2.6函数TIM-OC41nit 339
13.2.7函数TIM-ICInit 339
13.2.8函数TIM-BDTRConfig 341
13.2.9函数TIM-Cmd 343
13.2.10函数TIM-CtrPWMOutputs 343
13.2.11函数TIM-ITConfig 344
13.2.12函数TIM-SelectInputTrigger 345
13.2.13函数TIM-EncodcrInterface Config 345
13.2.14函数TIM-ARRPreloadConfig 346
13.2.15函数TIM-CCPreloadControl 347
13.2.16函数TIM-OCIPreloadConfig 347
13.2.17函数TIM-OC2PreloadConfig 348
13.2.18函数TIM-OC3PreloadConfig 348
13.2.19函数TIM-OC4PreloadConfig 349
13.2.20函数TIM-SelectOutputTrigger 349
13.2.21函数TIM-SelectSlaveMode 350
13.2.22函数TIM-SelectMaster SlaveMode 350
13.2.23函数TIM-SetCounter 351
13.2.24函数TIM-SetAutoreload 351
13.2.25函数TIM-GetCounter 352
13.2.26函数TIM-GetPrescaler 352
13.2.27函数TIM-GetFlagStatus 353
13.2.28函数TIM-ClearFlag 354
13.2.29函数TIM-GetITStatus 354
13.2.30函数TIM-ClearITPendingBit 354
13.3 TIME应用实例1——简单定时器应用 355
13.3.1实例要求 355
13.3.2硬件基础 355
13.3.3软件结构 355
13.3.4实例代码 360
13.3.5编译下载和调试 363
13.4 TIME应用实例2——使用一个定时器产生4路不同占空比的PWM 363
13.4.1实例目的 363
13.4.2实例要求 363
13.4.3硬件基础 363
13.4.4软件结构 363
13.4.5实例代码 366
13.4.6编译下载和调试 368
13.5 TIME应用实例3——使用定时器产生4路不同占空比和频率的PWM 368
13.5.1实例目的 368
13.5.2实例要求 368
13.5.3硬件基础 369
13.5.4软件结构 369
13.5.5实例代码 373
13.5.6编译下载和调试 375
13.6 TIME应用实例4——定时器同步 375
13.6.1实例目的 375
13.6.2实例要求 375
13.6.3软件结构 376
13.6.4实例代码 378
13.6.5编译下载和调试 381
第14章 独立看门狗和窗口看门狗定时器 382
14.1独立看门狗一般特性介绍 382
14.1.1 IWDG主要特性 382
14.1.2 IWDG功能描述 383
14.1.3硬件看门狗 383
14.1.4寄存器访问保护 383
14.2窗口看门狗一般特性介绍 383
14.2.1 WWDG主要特性 384
14.2.2 WWDG功能描述 384
14.3独立看门狗库函数介绍 385
14.3.1函数IWDG-WriteAccessCmd 386
14.3.2函数IWDG-SetPrescaler 386
14.3.3函数IWDG-SetRcload 387
14.3.4函数IWDG-RcloadCounter 387
14.3.5函数IWDG-Enable 388
14.4窗口看门狗库函数介绍 388
14.4.1函数WWDG-Delnit 388
14.4.2函数WWDG-SetPrescaler 388
14.4.3函数WWDG-SetWindow Value 389
14.4.4函数WWDG-EnableIT 390
14.4.5函数WWDG-SetCounter 390
14.4.6函数WWDG-Enable 390
14.4.7函数WWDG-GetFlagStatus 391
14.4.8函数WWDG-ClearFlag 391
14.5独立看门狗实例 392
14.5.1实例目的 392
14.5.2实例要求 392
14.5.3硬件基础 392
14.5.4软件结构 392
14.5.5实例代码 393
14.5.6编译下载和调试 394
14.6窗口看门狗实例 395
14.6.1实例目的 395
14.6.2实例要求 395
14.6.3硬件基础 395
14.6.4软件结构 395
14.6.5实例代码 396
14.6.6编译下载和调试 398
第15章 控制器局域网CAN的一般应用 400
15.1 CAN介绍 400
15.1.1 bxCAN主要特点 400
15.1.2总体描述 401
15.1.3 bxCAN工作模式 401
15.1.4 bxCAN发送处理 403
15.1.5时间触发通信模式 404
15.1.6接收管理 404
15.1.7标识符过滤 405
15.1.8报文存储 407
15.1.9出错管理 407
15.1.10位时间特性 408
15.1.11 bxCAN中断 408
15.2 bxCAN库函数介绍 409
15.2.1函数CAN-DcInit 409
15.2.2函数CAN-Init 409
15.2.3函数CAN-Filterlnit 411
15.2.4函数CAN-StructInit 413
15.2.5函数CAN-ITConfig 414
15.2.6函数CAN-Transmit 415
15.2.7函数CAN-TransmitStatus 416
15.2.8函数CAN-CancelTransmit 416
15.2.9函数CAN-FIFORelease 417
15.2.10函数CAN-MessagePending 417
15.2.11函数CAN-Receive 418
15.2.12函数CAN-Sleep 419
15.2.13函数CAN-WakeUp 419
15.2.14函数CAN-GetFlagStatus 420
15.2.15函数CAN-ClearFlag 420
15.2.16函数CAN-GetITStatus 421
15.2.17函数CAN-ClearITPendingBit 421
15.3 CAN收发数据实例 422
15.3.1实例目的 422
15.3.3硬件基础 422
15.3.4软件结构 423
15.3.5实例代码 424
15.3.6编译下载和调试 427
第3部分 提高篇 430
第16章GPS数据解析 430
16.1GPS数据协议解析 430
16.1.1 GPS概述 430
16.1.2 GPS介绍 430
16.1.3 GPS数据结构介绍 431
16.2 GPS数据解析实例 434
16.2.1实例要求 434
16.2.2硬件基础 434
16.2.3软件结构 434
16.2.4实例代码 435
第17章 串行Flash数据储存方案 450
17.1串行Flash概述 450
17.1.1 SST25VF016B概述 450
17.1.2 SST25VF016B引脚说明 451
17.1.3 SST25VF016B接口电路 451
17.2 API软件包 452
17.2.1 软件包结构 452
17.2.2 SPI初始化 452
17.2.3 读数据API 455
17.2.4 写数据API 456
17.2.5 Flash擦除API 457
17.2.6 读ID 459
17.3 Flash数据读写实例 459
17.3.1实例目的 460
17.3.2实例要求 460
17.3.3硬件基础 460
17.3.4实例代码 460
17.3.5编译下载和调试 463
第18章2.4G微功耗短距离无线模块应用 464
18.1微功耗短距离无线通信 464
18.1.1微功耗短距离无线通信概述 464
18.1.2短距离微功耗无线应用 464
18.2 2.4G无线模块介绍 465
18.2.1芯片的架构 465
18.2.2芯片主要特点 465
18.2.3功能概述 466
18.2.4寄存器介绍 470
18.3无线模块相关API函数集 471
18.3.1无线芯片的SPI接口 471
18.3.2复位 473
18.3.3无线模块功能API软件函数集 474
18.4数据发送/接收的时序 477
18.4.1数据发送/接收时序 477
18.4.2无线发送/接收数据API函数 478
18.5读无线芯片寄存器实例 479
18.5.1实例目的 479
18.5.2实例要求 479
18.5.3硬件基础 479
18.5.4软件结构 480
18.5.5实例代码 480
18.6双向无线数据收发实例 484
18.6.1实例目的 484
18.6.2实例要求 484
18.6.3硬件基础 485
18.6.4实例代码 485
18.6.5编译下载和调试 489
附录A IAR工程转MDK工程 490
附录B ARM处理器:选择ARM7还是Cortex-M3 492