【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》

news2025/1/16 14:40:55

开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics Corporation)) 联合发起的「 致敬未来的攻城狮计划 」的第 X 天,点击查看活动计划详情 (超链接:https://bbs.csdn.net/topics/613916237)!

首先非常感谢机械工业出版社的尹文敏老师,对本次活动计划的大力支持,我谨代表各位学员谢谢老师的书籍赞助。

以下是两本嵌入式书籍:《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》的详细介绍。

有感兴趣的朋友,欢迎找我购书,有特殊折扣优惠哦。


《RT-Thread设备驱动开发指南》

近年来国内芯片产业和物联网产业的快速崛起,行业发展迫切需要更多人才,尤其需要掌握嵌入式操作系统等底层技术的人才。随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需求越来越强烈,他们迫切地希望有一本可以指导他们在RT-Thread上开发驱动的指南。

为了解决开发者的燃眉之急,《RT-Thread设备驱动开发指南》来了!希望帮助RT-Thread的开发者掌握驱动开发的知识点,让开发者能够更简单、更方便地开发驱动,加速产品上市,让RT-Thread赋能更多行业,真正做到“积识成睿,慧泽百川”。

读者对象

  • 熟悉RT-Thread并想在其上开发设备驱动的人员

  • 嵌入式软硬件工程师、电子工程师、物联网开发工程师

  • 高等院校的计算机、电子、自动化、通信相关专业师生

  • 其他对嵌入式操作系统感兴趣的人员

如何阅读本书

本书要求读者具备RT-Thread基础知识,因此建议大家先学习《嵌入式实时操作系统:RT-Thread设计与实现》,再学习本书内容。使用过RT-Thread上的设备框架的读者的阅读体验会更佳。本书的每章都有配套示例代码,这些代码大多是仅供理解上下文参考的,不能真正运行,建议读者对照具体bsp目录下已有的驱动,并结合本书进行学习。

本书内容分为三篇:基础篇、进阶篇与高级篇。

基础篇(第1~11章) 第1章概述RT-Thread与设备框架;第2~11章介绍一些常用的设备驱动框架,包括PIN、I2C、SPI等,适合刚接触驱动开发的读者阅读。

进阶篇(第12~20章) 介绍稍复杂一些的外设驱动,如SDIO、触摸、显示、传感器、加解密设备等。

高级篇(第21~27章) 介绍一些复杂的驱动,如网络、音频、USBD(H)、CAN等,开发此类设备驱动要求开发者比较熟悉相应的外设协议。

本书更像是一本工具书,读者不需要一章一章地从头读到尾,读完前面几章内容,熟悉了驱动开发的基本流程之后,就可以根据自己的需要,选择对应的章节学习。

配套软件

本书是基于RT-Thread 4.1.0 编写的,读者在跟随本书学习驱动开发的时候,也需要选择对应的源码版本。

了解更多 

  • 本文来源:IT阅读排行榜,图片来源:原创

  • 责任编辑:王莹,部门领导:卢志坚

  • 发布人:尹文敏


《GD32 MCU原理及固件库开发指南》


时至今日,MCU已广泛应用于消费、工业、汽车、家电、物联网等领域,小小的身材却发挥着巨大的作用。根据IC Insights的数据,2022年全球MCU市场规模将有望突破200亿美元,预计未来将以超过6%的年均复合增长率保持稳定增长。国内MCU市场随着AI、IoT、光伏、新能源汽车等行业发展快速放量,需求量及增长量将领跑全球,但目前国外芯片占据国内市场的主要地位,MCU国产化需进一步提升。

32位MCU的功能比8位MCU的功能更强大,但随之而来的是寄存器数量大大增加,继续使用寄存器则开发难度大大增加,对初学者尤其不友好。因而,GD32 MCU在推出伊始即推出了配套固件库,该固件库将寄存器的操作封装成一个个用C语言编写的API库函数,代码可读性也很高。经过长期的工程实践,笔者发现GD32的这套固件库质量非常高,是一套设计优美的API,它的命名采用全小写加下划线的方式,熟悉Linux内核的用户会觉得很亲切;在寄存器定义方面更多地使用宏定义,大多数API函数都短小精悍,生成的代码尺寸小巧,运行效率高。

目前网上关于GD32 MCU的开发资料以及配套的教学书籍还较少,开发者不得不阅读芯片用户手册、数据手册以及固件库代码,而用户手册都是使用寄存器来描述的,且目前市面上还没有专门介绍GD32固件库的书籍,这给广大初学者在学习方面带来了一定的困难。为全面系统地介绍GD32 MCU原理以及固件库的使用,降低GD32 MCU开发者的学习及使用门槛,《GD32 MCU原理及固件库开发指南》应运而生。

读者对象

  • 希望学习MCU开发的学生。

  • 希望切换到国产MCU的电子工程师。

  • 使用GD32 MCU的DIY创客。

  • 使用MCU进行开发的电子爱好者。

  • 希望实现MCU国产化的公司和研究所。

  • 使用GD32 MCU开发产品的人员。

  • 开设相关课程的高等院校师生。

本书特色

兆易创新高工参与撰写,产业界、技术圈、高校10余名专家推荐;从原理和实践两个角度解读GD32 MCU,内含大量可直接运行的代码;配有专用低成本开发板,读者可免费获取PCB设计资料。

本书聚焦在GD32 MCU基本原理和固件库上,重点在于对固件库API的介绍,并没有过多介绍GD32 MCU寄存器,对这类内容有兴趣的读者可以阅读相关MCU的用户手册。

在写作方面,本书力求做到通俗易懂,以降低用户入门门槛,并使之成为一本有趣的书,一本读者读起来不会犯困的书。

本书提供了大量实例代码,这些代码都可以直接编译运行,其中很多是经过实际工程验证的。这些代码都在Github和Gitee网站上开源,读者可以随时免费获取。

为了便于读者学习,笔者还设计了一款低成本开发板BluePill作为本书的配套开发板,所有实例代码都在该开发板上验证过了。该开发板以开源形式提供,读者可以直接购买成品开发板,也可以获取PCB设计资料,然后利用嘉立创网站的免费打样功能自行打样制作开发板。

目录

目  录

赞誉

前言

第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设备固件库分层文件及

库函数说明346

8.2.4 实例:USBD模拟键盘

应用351

8.2.5 实例:USBD虚拟串口

应用373

8.2.6 实例:USBD模拟U盘

应用382

8.3 本章小结387

了解更多 

  • 本文来源:IT阅读排行榜,图片来源:原创

  • 责任编辑:王莹,部门领导:卢志坚

  • 发布人:尹文敏 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】每日一题:移除链表元素 [C语言实现]

👻内容专栏:《LeetCode刷题专栏》 🐨本文概括:203.移除链表元素 🐼本文作者:花 碟 🐸发布时间:2023.5.5 203. 移除链表元素 - 力扣(LeetCode) 题目&#xff…

微信小程序的生命周期

微信小程序的生命周期 1.什么是生命周期?2.生命周期的分类3.什么是生命周期函数?4.生命周期函数的分类5.应用生命周期函数6.页面周期函数 1.什么是生命周期? 生命周期(Life Cycle)是指一个对象从创建 -> 运行 ->…

Ant Design Pro---【02 UMI路由讲解】

在 Umi 中,应用都是单页应用,页面地址的跳转都是在浏览器端完成的,不会重新请求服务端获取 html,html 只在应用初始化时加载一次。所有页面由不同的组件构成,页面的切换其实就是不同组件的切换,你只需要在配…

设计模式——观察者模式(应用广,较难)

是什么? 又被称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,这个主题对象在状态变化时,会通知所有的观察者对象,使它们能够更新自己; 结构 抽象主题&…

复兴号列车司机室

复兴号上线有一段时间了,很多旅客都已经体验过,但是,司机室可能绝大多数人都没有机会一睹容颜,今天带你去司机室操纵台去探索一番。 按照上图的圈圈划分为操作台右侧(蓝色圈圈)、中部(红色圈圈…

从C到C++

目录 1、输入输出库与名字空间 2、输入输出流对象cin和cout 3、string字符串类 4、bool类型 5、自增自减--运算符&#xff08;必考&#xff09; 6、其他 1、输入输出库与名字空间 #include <iostream> using namespace std; 每次写代码先把这两个东西加上 <io…

共享内存实现进程间大数据的交换

引言   进程间的数据交换和共享是一种非常重要和实用的技术。大、中型软件的开发设计多是由众多程序设计人员的合作完成&#xff0c;通常一个程序设计人员只负责其中一个或几个模块的开发&#xff0c;这些模块可以是动态链接库也可以是应用程序或是其他形式的程序组件。这些独…

Java 面试必问的线程池原理总结

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;大能老师 | 慕课网讲师 Java 线程池原理总结 &#xff08;一&#xff09;什么是线程池 线程池做的工作主要是控制运行…

Arcgis进阶篇(4)——arcgis js api使用geoserver服务

1、geoserver安装方法 geoserver-2.19.x&#xff08;此版本支持jdk8.x&#xff09;的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1PkmmjHWWzbUA9fYfa110Ew?pwd8tvf 提取码&#xff1a;8tvf 经测试&#xff0c;最新版本的geoserver需要jdk11&#xff…

elasticsearch 使用的基础工具包及配置安装信息

前言:elasticsearch 工具在查询大量数据上面有明显的优势&#xff0c;但是具体的使用门槛相对较高&#xff0c;具体使用中不同版本使用上还有些差别&#xff0c;需要匹配上 spring boot elasticsearch 版本才能少出错 使用到的工具包&#xff0c;注意具体的版本 elasticsearc…

坚持伙伴优先,共创数据存储新生态

4 月 26 日&#xff0c;2023 阿里云合作伙伴大会上&#xff0c;阿里巴巴集团董事会主席兼 CEO、阿里云智能集团 CEO 张勇表示&#xff0c;阿里云的核心定位是一家云计算产品公司&#xff0c;生态是阿里云的根基。让被集成说到做到的核心&#xff0c;是要坚定走向“产品被集成”…

linux0.12-8-4-sys_call.s

[301页] 8-4 sys_call.s 程序 sys_call.s 程序简单总结&#xff1a; int 0x80 – _system_call int16 – 处理器错误中断 int7 – 设备不存在或协处理器不存在。 int32 – (int 0x20)时钟中断处理程序。 两个系统功能的底层接口&#xff0c;分别是 sys_execve 和 sys_fork 。…

​Prometheus集群编队开发套件升级上市

Prometheus集群编队开发套件是一个面向集群、多智能体相关研究方向的无人机二次开发平台&#xff0c;采用分布式集群算法。与传统无人机集群相比&#xff0c;分布式无人机集群更加灵活、可靠和高效&#xff0c;可应用于更加复杂及多样化的任务场景。 分布式集群科研平台&#x…

Linux 内存管理 pt.2

哈喽大家好我是咸鱼&#xff0c;在《Linux 内存管理 pt.1》中我们学习了什么是物理内存、虚拟内存&#xff0c;了解了内存映射、缺页异常等内容 那么今天我们来接着学习 Linux 内存管理中的多级页表和大页 多级页表&大页 在《Linux 内存管理 pt.1》中我们知道了内核为每…

【Vue】学习笔记-Vue CLI ref props mixin plugin scoped

ref 属性 ref被用来给元素或子组件注册引用信息(id的代替者) 应用在html标签上获取的真实的DOM元素&#xff0c;应用在组件标签上获取的组件实列对象vc使用方式 a. 打标识:或 b.获取&#xff1a;this.$refs.xxx <template><div><h1 v-text"msg" re…

MySQL 优化一MySQL优化步骤

目录 定位执行效率较低的 SQL 1&#xff09;慢查询 2&#xff09;processlist 定位执行效率较低的 SQL 定位执行效率比较慢的 SQL 语句&#xff0c;一般有三种方式 1、可以通过慢查询日志来定位哪些执行效率较低的 SQL 语句。 2、使用 show processlist 命令查看当前 MyS…

紧急下架,AI以假乱真学明星唱歌;哈佛法学院专家谈AI和版权法

几周前&#xff0c;一首据称由 Drake 和 The Weeknd 创作的新歌登陆 TikTok 和 Spotify&#xff0c;并迅速在互联网上像野火一样传播开来。“我袖子上的心”在嘻哈乐迷中获得了好评如潮和高度兴奋&#xff0c;这不仅是因为该曲目具有感染力的歌词和旋律&#xff0c;而且还因为对…

【云原生】云原生服务网格流量控制思考

文章目录 前言一、什么是流量控制&#xff1f;二、存在三种场景三、场景分析 前言 随着云原生技术的不断发展及应用&#xff0c;很多服务都已部署上云。 保障云上环境的稳定是重要的一环。 一个重要的影响稳定的场景就是突发大流量冲击。 面对该场景&#xff0c;较好的应对…

C#asp.net core学生信息管理系统

C#asp.net core学生信息管理系统 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net core架构和sql server数据库 功能模块&#xff1a; 首页登陆&#xff0c;分别为管理员&#xff08;学生管理 用户角色管理 授课信息管理&…

Linux_红帽8学习笔记分享_8(文件系统管理FS Management)

Linux_红帽8学习笔记分享_8&#xff08;文件系统管理FS Management&#xff09; 文章目录 Linux_红帽8学习笔记分享_8&#xff08;文件系统管理FS Management&#xff09;1.操作系统的两种启动模式: Legacy BIOS和UEFI1.1 Legacy BIOS1.2 UEFI 2.磁盘分区表的两种类型: MBR和GP…