描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111719052
这是一本兆易创新高工、芯片综合服务商映时科技及一线从业者共同撰写的GD32 MCU重磅指南,得到了兆易创新产品市场总监及产业界、技术圈、高校10余名专家鼎力推荐。书中从原理和实践两个角度解读GD32 MCU,通过该书读者可以深度理解GD32 MCU工作原理,并快速上手开发。
这是一本从原理和实践两个层面解读GD32 MCU原理及标准库开发的专业技术书。本书内容均来自兆易创新内部及周边一线使用的企业,主要面向初中及人员,解决其在实际工作中入门、使用的问题。
全书共分为7章,首先分析了MCU的基本情况,然后聚焦于GD32,分别介绍了其产品形态、选型技巧,然后从原理和实践两个维度对入门知识、内核、存储器、电源管理、时钟系统、基础外设、模拟外设、通信外设进行深入解读。
序
赞誉
前言
第1章 GD32 MCU概述1
1.1 GigaDevice公司概述1
1.2 GD32 MCU发展历程及典型应用2
1.2.1 GD32 MCU发展历程2
1.2.2 GD32 MCU典型应用6
1.3 GD32 MCU产品家族介绍8
1.4 GD32 MCU应用选型9
1.4.1 GD32 MCU型号解码9
1.4.2 GD32 MCU选型方法简介11
1.5 本章小结14
第2章 GD32 MCU快速入门与开发
平台搭建15
2.1 开发资料和软件开发平台15
2.1.1 Keil MDK开发环境介绍16
2.1.2 IAR开发环境介绍28
2.2 硬件开发平台介绍34
2.2.1 BluePill开发板硬件平台介绍34
2.2.2 GD32官方开发板介绍40
2.3 烧录调试工具介绍41
2.3.1 GD-Link烧录调试41
2.3.2 JLink烧录调试48
2.4 GD32 MCU固件库架构及
使用介绍53
2.5 本章小结55
第3章 GD32 MCU系统架构、内核及存储器系统56
3.1 GD32 MCU系统架构介绍56
3.2 GD32 MCU内核介绍58
3.3 GD32 MCU NVIC与中断系统61
3.3.1 NVIC概述61
3.3.2 中断响应序列62
3.3.3 中断配置62
3.4 GD32 MCU存储器系统64
3.4.1 存储器架构64
3.4.2 Flash操作说明69
3.5 本章小结73
第4章 GD32 MCU电源管理系统、复位和时钟系统74
4.1 GD32电源管理系统74
4.1.1 PMU简介74
4.1.2 固件库中PMU相关的
主要API78
4.1.3 实例:深度睡眠进入和退出79
4.1.4 实例:待机模式进入和退出82
4.1.5 实例:低压检测器的使用83
4.2 GD32复位和时钟系统84
4.2.1 GD32中的复位和时钟简介85
4.2.2 固件库中RCU相关的
主要API87
4.2.3 实例:时钟设置88
4.2.4 实例:PA8输出时钟91
4.3 本章小结94
第5章 GD32 MCU基础外设95
5.1 通用IO端口95
5.1.1 GD32的GPIO简介96
5.1.2 固件库中GPIO相关的
主要API97
5.1.3 实例:用GPIO点亮流水灯99
5.1.4 实例:以查询方式实现
按键输入101
5.2 外部中断105
5.2.1 GD32的EXTI简介105
5.2.2 固件库中EXTI相关的
主要API106
5.2.3 实例:以中断方式实现
按键输入107
5.3 直接内存存取109
5.3.1 GD32的DMA简介110
5.3.2 固件库中与DMA相关的
主要API110
5.3.3 实例:使用DMA在SRAM中
搬运数据112
5.3.4 实例:使用DMA从Flash到SRAM搬运数据116
5.3.5 实例:使用DMA操作
GPIO118
5.4 定时器123
5.4.1 GD32定时器的分类和介绍124
5.4.2 固件库中与定时器相关的
主要API127
5.4.3 实例:使用定时器软件延时
测量运行时间128
5.4.4 实例:使用定时器输出
PWM131
5.4.5 使用定时器捕获功能测量
外部信号频率134
5.4.6 定时器级联实验138
5.5 实时时钟144
5.5.1 GD32的RTC简介144
5.5.2 固件库中RTC相关的
主要API145
5.5.3 实例:RTC日历146
5.5.4 实例:RTC闹钟唤醒
DeepSleep154
5.6 看门狗定时器158
5.6.1 GD32的看门狗定时器简介158
5.6.2 固件库中看门狗相关的
主要API161
5.6.3 实例:独立看门狗定时器
设置162
5.6.4 实例:窗口看门狗定时器
设置164
5.7 本章小结167
第6章 GD32 MCU模拟外设168
6.1 ADC168
6.1.1 GD32的ADC简介168
6.1.2 固件库中与ADC相关的
主要API170
6.1.3 实现ADC单通道电压采集171
6.1.4 实例:内部参考电压的用法176
6.1.5 实现ADC DMA多通道
电压采集180
6.1.6 实例:双ADC同步触发185
6.2 DAC191
6.2.1 GD32的DAC简介191
6.2.2 固件库中与DAC相关的
主要API192
6.2.3 使用DAC输出固定电压193
6.2.4 使用DAC实现一个正弦
信号发生器194
6.3 本章小结198
第7章 GD32 MCU基础通信
外设200
7.1 通用同步异步收发器200
7.1.1 异步串口简介200
7.1.2 GD32的USART模块介绍202
7.1.3 固件库中与USART相关的
主要API202
7.1.4 实例:printf函数重定向204
7.1.5 实例:半双工串口收发206
7.1.6 实例:DMA串口收发210
7.1.7 实例:串口接收超时214
7.1.8 实例:以中断方式进行串口
收发217
7.1.9 实例:串口的同步模式219
7.1.10 使用串口实现一个命令
解释器224
7.2 内部集成电路总线接口230
7.2.1 I2C接口简介230
7.2.2 GD32 I2C的主要功能231
7.2.3 I2C接口的主要API232
7.2.4 实例:I2C主从通信234
7.2.5 实例:I2C接口读写
EEPROM247
7.3 同步串行外设接口255
7.3.1 SPI简介255
7.3.2 GD32 SPI的主要功能257
7.3.3 SPI的主要API257
7.3.4 实例:SPI以查询方式进行
全双工通信259
7.3.5 实例:SPI使用DMA进行
全双工通信265
7.3.6 实例:SPI半双工主从通信273
7.3.7 实例:SPI读写GD25系列
SPI Flash278
7.4 本章小结287
第8章 GD32 MCU高级通信
外设289
8.1 CAN总线289
8.1.1 CAN总线基础知识289
8.1.2 GD32的CAN接口
主要功能294
8.1.3 CAN接口的主要API295
8.1.4 实例:回环模式收发296
8.1.5 发送特定ID的数据帧实验303
8.1.6 CAN数据帧的接收实验309
8.1.7 使用过滤器接收特定的
数据帧312
8.2 USBD317
8.2.1 USB通信基础知识317
8.2.2 USBD设备固件库架构344
8.2.3 USBD设备固件库分层文件及
库函数说明34
为什么要写这本书
MCU即微控制器,国人可能更多称其为单片机,在嵌入式系统中一般用于信号处理及控制。时至今日,MCU已广泛应用于消费、工业、汽车、家电、物联网等领域,小小的身材却发挥着巨大的作用。根据IC Insights的数据,2022年全球MCU市场规模将有望突破200亿美元,预计未来将以超过6%的年均复合增长率保持稳定增长。国内MCU市场随着AI、IoT、光伏、新能源汽车等行业发展快速放量,需求量及增长量将领跑全球,但目前国外芯片占据国内市场的主要地位,MCU国产化需进一步提升。
近年来,国内涌现一批优秀的MCU厂商,比如兆易创新、华大半导体、灵动微等,也出现了一批优秀的产品,其中兆易创新的GD32 MCU引人注目。GD32 MCU是国内最早推出的以Cortex-M3/M4/M23/M33为内核的MCU,其中包括全球范围内首颗基于RISC-V内核的通用MCU,目前具有30多个系列共400余个产品型号。截至本书完稿时,GD32 MCU已累计出货超10亿颗。GD32 MCU作为国产芯片,比国外芯片具有更强的供货保证,不会被“卡脖子”。
在开始使用GD32 MCU之前,笔者已经使用过市面上的许多MCU,包括8位的8051、AVR、STM8,16位的MSP430,32位的C28x、STM32等。早期广泛使用的8位MCU外设比较简单,直接使用寄存器操作即可。32位MCU的功能比8位MCU的功能更强大,但随之而来的是寄存器数量大大增加,继续使用寄存器则开发难度大大增加,对初学者尤其不友好。因而,GD32 MCU在推出伊始即推出了配套固件库,该固件库将寄存器的操作封装成一个个用C语言编写的API库函数,代码可读性也很高。经过长期的工程实践,笔者发现GD32的这套固件库质量非常高,是一套设计优美的API,它的命名采用全小写加下划线的方式,熟悉Linux内核的用户会觉得很亲切;在寄存器定义方面更多地使用宏定义,大多数API函数都短小精悍,生成的代码尺寸小巧,运行效率高。
目前网上关于GD32 MCU的开发资料以及配套的教学书籍还较少,开发者不得不阅读芯片用户手册、数据手册以及固件库代码,而用户手册都是使用寄存器来描述的,且目前市面上还没有专门介绍GD32固件库的书籍,这给广大初学者在学习方面带来了一定的困难。为全面系统地介绍GD32 MCU原理以及固件库的使用,降低GD32 MCU开发者的学习及使用门槛,笔者特撰写了本书。
目前MCU国产化如火如荼,兆易创新也在不断推出新的GD32 MCU型号,GD32 MCU固件库也在持续更新中,笔者希望本书能降低一些GD32 MCU的入门门槛,为MCU国产化进程尽绵薄之力。
读者对象
希望学习MCU开发的学生。
希望切换到国产MCU的电子工程师。
使用GD32 MCU的DIY创客。
使用MCU进行开发的电子爱好者。
希望实现MCU国产化的公司和研究所。
使用GD32 MCU开发产品的人员。
开设相关课程的高等院校师生。
本书特色
本书聚焦在GD32 MCU基本原理和固件库上,重点在于对固件库API的介绍,并没有过多介绍GD32 MCU寄存器,对这类内容有兴趣的读者可以阅读相关MCU的用户手册。
在写作方面,本书力求做到通俗易懂,以降低用户入门门槛,并使之成为一本有趣的书,一本读者读起来不会犯困的书。
本书提供了大量实例代码,这些代码都可以直接编译运行,其中很多是经过实际工程验证的。这些代码都在Github和Gitee网站上开源,读者可以随时免费获取。
为了便于读者学习,笔者还设计了一款低成本开发板BluePill作为本书的配套开发板,所有实例代码都在该开发板上验证过了。该开发板以开源形式提供,读者可以直接购买成品开发板,也可以获取PCB设计资料,然后利用嘉立创网站的免费打样功能自行打样制作开发板。
如何阅读本书
本书共分为8章:
第1章对GD32 MCU进行概述,包括对兆易创新公司进行概述,介绍GD32 MCU的发展历程、产品家族和应用选型。
第2章介绍GD32 MCU快速入门与开发平台搭建的方法,包括对软硬件开发平台、调试工具、GD32 MCU固件库架构及使用的介绍。
第3章介绍GD32 MCU系统架构、内核及存储器系统。
第4章介绍GD32 MCU的电源管理系统及复位、时钟系统。
第5章介绍GD32 MCU的基础外设,包括GPIO、EXTI、DMA、TIMER、RTC和FWDGT/WWDGT。
第6章介绍GD32 MCU的模拟外设,包括ADC和DAC。
第7章介绍GD32 MCU的基础通信外设,包括USART、I2C和SPI。
第8章介绍GD32 MCU的高级通信外设,包括CAN和USBD。
其中第1~3章偏重理论,通用性强。第4~8章偏重实践,主要以实例来讲解工程应用。如果你是一名经验丰富的资深用户,对GD32 MCU已经有了一定的了解,可以从第4章开始阅读。如果你是一名初学者,请从第1章开始阅读。
勘误和支持
除封面署名的作者外,参加本书撰写工作的还有康立新、李炜。由于笔者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。你可以在本书配套例程的Github仓库https://github.com/xjtuecho/GD32F30x_Firmware_Library中提交Issues或者Pull Requests。书中的配套例程除了可以从上面的Github地址下载外,还可以从https://gitee.com/xjtuecho/GD32
评论
还没有评论。