RISC-V嵌入式开发实践:基于CH32V307微控制器
作者:王宜怀 杨勇 施连敏
出版社:北京航空航天大学出版社
出版时间:2022-04-01
ISBN:9787512437531
定价:¥59.90
第1章 概 述 1
1.1 初识嵌入式系统 1
1.1.1 运行硬件系统 1
1.1.2 实践体系简介 3
1.1.3 编译、下载与运行第一个嵌入式程序 4
1.2 嵌入式系统的定义、发展简史、分类及特点 6
1.2.1 嵌入式系统的定义 6
1.2.2 嵌入式系统的由来及发展简史 7
1.2.3 嵌入式系统的分类 8
1.2.4 嵌入式系统的特点 9
1.3 嵌入式系统的学习困惑、知识体系及学习建议 10
1.3.1 嵌入式系统的学习困惑 10
1.3.2 嵌入式系统的知识体系 13
1.3.3 基础阶段的学习建议 14
1.4 微控制器与应用处理器简介 16
1.4.1 MCU简介 16
1.4.2 以 MCU为核心的嵌入式测控产品的基本组成 17
1.4.3 MAP简介 19
1.5 嵌入式系统常用术语 20
1.5.1 与硬件相关的术语 20
1.5.2 与通信相关的术语 21
1.5.3 与功能模块相关的术语 22
本章小结 23
习 题 24
第2章 RISC V架构微处理器 25
2.1 RISC V概述与青稞 V4F微处理器简介 25
2.1.1 RISC V概述 25
2.1.2 青稞 V4F微处理器内部结构概要 27
2.1.3 寄存器通用基础知识及相关基本概念 28
2.1.4 青稞 V4F微处理器的内部寄存器 29
2.2 寻址方式与机器码的获取方法 30
2.2.1 指令保留字简表与寻址方式 31
2.2.2 机器码的获取方法 32
2.3 RISC V基本指令分类解析 34
2.3.1 数据传送类指令 34
2.3.2 数据操作类指令 36
2.3.3 跳转类指令 37
2.3.4 CSR类指令 38
2.3.5 其他指令 39
2.4 汇编语言的基本语法 39
2.4.1 汇编语言的格式 39
2.4.2 常用伪指令简介 41
本章小结 43
习 题 44
第3章 存储器映像、中断源与硬件最小系统 45
3.1 CH32V307系列 MCU概述 45
3.1.1 CH32V307系列 MCU命名规则 45
3.1.2 CH32V307存储器映像 46
3.1.3 CH32V307中断源 47
3.2 CH32V307的引脚图与硬件最小系统 50
3.2.1 CH32V307的引脚图 50
3.2.2 CH32V307硬件最小系统原理图 52
3.3 由 MCU构建通用嵌入式计算机 54
3.3.1 嵌入式终端开发方式存在的问题与解决办法 55
3.3.2 提出GEC概念的时机、GEC的定义与特点 56
3.3.3 由CH32V307VCT6构成的GEC 57
本章小结 62
习 题 62
第4章 GPIO及程序框架 64
4.1 GPIO通用基础知识 64
4.1.1 GPIO概念 64
4.1.2 输出引脚的基本接法 64
4.1.3 上拉下拉电阻与输入引脚的基本接法 65
4.2 软件干预硬件的方法 66
4.2.1 GPIO构件 API 66
4.2.2 第一个C语言工程:控制小灯闪烁 68
4.3 认识工程框架 70
4.3.1 工程框架及所含文件简介 70
4.3.2 了解机器码文件及芯片执行流程 72
4.4 GPIO构件的制作过程 74
4.4.1 端口与GPIO模块———对外引脚与内部寄存器 74
4.4.2 GPIO基本编程步骤并点亮一盏小灯 77
4.4.3 GPIO构件的设计 78
4.5 第一个汇编语言工程:控制小灯闪烁 83
4.5.1 汇编工程文件的组织 83
4.5.2 汇编语言小灯测试工程主程序 84
4.6 实验一 熟悉实验开发环境及GPIO编程 88
本章小结 91
习 题 92
第5章 嵌入式硬件构件与底层驱动构件基本规范 93
5.1 嵌入式硬件构件 93
5.1.1 嵌入式硬件构件概念与嵌入式硬件构件分类 93
5.1.2 基于嵌入式硬件构件的电路原理图设计简明规则 94
5.2 嵌入式底层驱动构件的概念与层次模型 97
5.2.1 嵌入式底层驱动构件的概念 98
5.2.2 嵌入式硬件构件与软件构件结合的层次模型 98
5.2.3 嵌入式软件构件分类 99
5.3 底层驱动构件的封装规范 100
5.3.1 构件设计的基本思想与基本原则 100
5.3.2 编码风格基本规范 102
5.3.3 头文件的设计规范 105
5.3.4 源程序文件的设计规范 107
5.4 硬件构件及其驱动构件的复用与移植方法 108
5.4.1 硬件构件的复用与移植 108
5.4.2 驱动构件的移植 109
本章小结 110
习 题 111
第6章 串行通信模块及第一个中断程序结构 112
6.1 异步串行通信的通用基础知识 112
6.1.1 串行通信的基本概念 112
6.1.2 RS232和RS485总线标准 114
6.1.3 TTL USB串口 115
6.1.4 串行通信编程模型 116
6.2 基于构件的串行通信编程方法 117
6.2.1 CH32V307VCT6芯片的 UART对外引脚 117
6.2.2 UART构件API 118
6.2.3 UART构件API的发送测试方法 119
6.2.4 printf的设置方法与使用 120
6.3 UART构件的制作过程 121
6.3.1 UART寄存器概述 121
6.3.2 利用直接地址操作的串口发送打通程序 121
6.3.3 UART构件设计 125
6.4 中断机制及中断编程步骤 129
6.4.1 关于中断的通用基础知识 129
6.4.2 RISC V非内核模块中断编程结构 132
6.4.3 CH32V307VCT6中断编程步骤———以串口接收中断为例 134
6.5 实验二 串口通信及中断实验 137
本章小结 139
习 题 139
第7章 定时器相关模块 141
7.1 定时器的通用基础知识 141
7.2 CH32V307VCT6中的定时器 141
7.2.1 青稞 V4F内核中的系统定时器SysTick 142
7.2.2 实时时钟RTC模块 146
7.2.3 Timer模块的基本定时功能 149
7.3 脉宽调制 151
7.3.1 脉宽调制PWM 的通用基础知识 151
7.3.2 基于构件的PWM 编程方法 154
7.3.3 脉宽调制构件的制作过程 157
7.4 输入捕获与输出比较 162
7.4.1 输入捕获与输出比较的通用基础知识 162
7.4.2 基于构件的输入捕获和输出比较编程方法 162
7.5 实验三 定时器及PWM 实验 167
本章小结 168
习 题 169
第8章 Flash在线编程、ADC与DAC 170
8.1 Flash在线编程 170
8.1.1 Flash在线编程的通用基础知识 170
8.1.2 基于构件的Flash在线编程方法 171
8.1.3 Flash构件的制作过程 173
8.2 ADC 176
8.2.1 ADC的通用基础知识 176
8.2.2 基于构件的ADC编程方法 180
8.2.3 ADC构件的制作过程 183
8.3 DAC 186
8.3.1 DAC的通用基础知识 186
8.3.2 基于构件的DAC编程方法 187
8.4 实验四 ADC实验 189
本章小结 190
习 题 190
第9章 SPI、I2C与TSC模块 192
9.1 串行外设接口SPI模块 192
9.1.1 SPI的通用基础知识 192
9.1.2 基于构件的SPI通信编程方法 195
9.2 集成电路互联总线I2C模块 199
9.2.1 I2C的通用基础知识 199
9.2.2 基于构件的I2C通信编程方法 204
9.3 触摸感应控制器TSC模块 208
9.3.1 TSC的基本原理 208
9.3.2 基于构件的TSC编程方法 209
9.4 实验五 SPI通信实验 212
本章小结 214
习 题 214
第10章 DMA与CAN总线编程 216
10.1 CAN总线 216
10.1.1 CAN总线的通用基础知识 216
10.1.2 基于构件的CAN编程方法 220
10.2 DMA 223
10.2.1 DMA的通用基础知识 223
10.2.2 基于构件的DMA编程方法 225
本章小结 228
习 题 228
第11章 USB与嵌入式以太网模块 229
11.1 USB的通用基础知识 229
11.1.1 USB概述 229
11.1.2 与 USB相关的基本概念 232
11.1.3 USB通信协议 237
11.1.4 从设备的枚举看 USB数据传输 241
11.2 CH32V307的 USB模块应用编程方法 246
11.2.1 CH32V307的 USB模块简介 246
11.2.2 CH32V307作为 USB从机的编程方法 246
11.2.3 CH32V307作为 USB主机的编程方法 254
11.3 嵌入式以太网的通用基础知识 257
11.3.1 以太网的由来与协议模型 257
11.3.2 以太网中的主要物理设备 260
11.3.3 相关名词解释 262
11.4 CH32V307的以太网模块应用编程方法 265
11.4.1 CH32V307的以太网模块简介 265
11.4.2 以太网底层驱动构件 267
11.4.3 以太网测试实例 269
11.5 本章小结 284
习 题 284
第12章 系统时钟与其他功能模块 286
12.1 时钟系统 286
12.1.1 时钟系统概述 286
12.1.2 时钟模块寄存器概要 287
12.1.3 时钟模块编程实例 289
12.2 电源模块与复位模块 291
12.2.1 电源模块 291
12.2.2 复位模块 292
12.3 看门狗 292
12.3.1 独立看门狗 293
12.3.2 系统窗口看门狗 294
12.4 数字视频接口与安全数字输入/输出 296
12.4.1 数字视频接口 296
12.4.2 安全数字输入/输出 297
本章小结 298
习 题 298
第13章 应用案例 299
13.1 嵌入式系统稳定性问题 299
13.2 外接传感器及执行部件的编程方法 300
13.2.1 开关量输出类驱动构件 300
13.2.2 开关量输入类驱动构件 303
13.2.3 声音与加速度传感器驱动构件 305
13.3 实时操作系统的简明实例 306
13.3.1 无操作系统与实时操作系统 306
13.3.2 RTOS中常用的基本概念 307
13.3.3 线程的三要素、四种状态及三种基本形式 308
13.3.4 RTOS下的编程实例 311
13.4 嵌入式人工智能的简明实例 312
13.4.1 AHLGEORS简介 312
13.4.2 AHLGEORS的数据采集与训练过程 314
13.4.3 在通用嵌入式计算机GEC上进行的推理过程 315
13.5 沁恒 MCU的其他嵌入式实践资源简介 316
13.5.1 AHLGCH573 316
13.5.2 AHLGCH573GNBGIoT 317
13.5.3 AHLGCH573GCAT1 318
参考文献 320