前言
为什么要写这本书
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和WDGT/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/GD32F30x_Firmware_Library下载。配套的BluePill开发板资料可从https://oshwhub.com/spadger/bluepill下载。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱echo.xjtu@gmail.com或者renbaohong.hi@163.com,期待能够得到你的真挚反馈。
致谢
首先要感谢兆易创新公司推出了GD32这样好用的MCU芯片,同时提供多款MCU芯片产品,让国内的相关企业在面对国外芯片封锁时不再恐慌。
感谢映时科技康立新、李炜在本书编写过程中所做的组织和督促工作,感谢映时科技胡工、捷士盟朱工对书稿提出的宝贵意见。
谨以此书献给众多使用GD32 MCU的电子爱好者们!