打印

手把手教你国产化嵌入式(2)固件库移植

[复制链接]
470|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nbutjyy|  楼主 | 2024-8-21 23:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
文件介绍
上一小结我们已经成功安装keil 5编译器,并且载入了GD32F10x的板级支持包,完成了编译下载等任务,这节我们继续介绍一下官方提供的固件库的文件结构。
“Docs”文件夹里面存放的是本文件的说明介绍,方便我们更好去使用;
“Example”文件夹里面存放的是每个外设的参考例程;
“Firmware”文件夹里面存放的是固件库的核心文件;
“Template”文件夹里面存放的是官方的固件库移植示例;
“Utilities”文件夹里面存放的是一些第三方固件驱动。
新建工程
选择工程保存路径:
选择本项目配套代码的芯片GD32F103RCT6。
这里是在线添加库文件,我们本小结等会手动添加库文件,在这里我们点击右上角关闭。
添加组文件夹
在本工程新建的文件夹中添加6个组文件夹,用来存放
Doc工程说明.txt:程序说明文件,用于说明程序的功能和注意事项等
HARDWARE 用户自定义外设文件放在该文件夹中(本工程暂时用不到为空)
Libraries startup:startup_gd32f10x_hd.s(根据芯片Flash容量选择),CMSIS
Fwlib: GD32F10x_standard_peripheral\Source 文件夹下的全部 C 文件,即固件库
Project 工程存放目录
System 放置系统文件(本工程用不上暂时为空)
User    用户编写的文件:main.c:main 函数文件,暂时为空;gd32f10x_it.c:跟中断有关的函数都放这个文件,暂时为空
startup_gd32f10x_hd.s
启动文件, 系统上电后第一个运行的程序,由汇编语言编写,C编程用的比较 少, 可 暂 时 不 管, 这 个 文 件 从 固 件 库 里 面 拷 贝而 来, 由 官 方 提 供。
GD32f10x.h
用户手动新建,用于存放寄存器映射的代码,暂时为空。
main.c
用户手动新建,用于存放 main 函数,暂时为空。
CMSIS
添加从官方下载的固件库中GD32F10x_Firmware_Library_V2.2.4\Firnware\CMSIS\GD\GD32F10x\Source的system_gd32f10x.c文件
点击文件管理
添加组文件夹:
几个文件夹前面都有解释
下面三个文件需要包含在文件夹Libraries
CMSIS 中添加从官方下载的固件库中
路径修改前
GD32F10x_Firmware_Library_V2.2.4\Firmware\CMSIS\GD\GD32F10x\Source的system_gd32f10x.c文件
路径修改后
\Libraries\CMSIS\GD\GD32F10x\Source
STARTUP中添加从官方下载的固件库中
路径修改前
GD32F10x_Firmware_Library_V2.2.4\Firmware\CMSIS\GD\GD32F10x\Source\ARM的根据芯片容量选择对应的启动文件(这里我用的是GD32F103RCT6选择startup_gd32f10x_hd.s)
路径修改后
\Libraries\CMSIS\GD\GD32F10x\Source\ARM
FWLIB中添加从官方下载的固件库中
路径修改前
GD32F10x_Firmware_Library_V2.2.4\Firmware\GD32F10x_standard_peripheral\Source的全部C文件
路径修改后
\Libraries\GD32F10x_standard_peripheral\Source
USER中添加main.c和从官方下载的固件库中GD32F10x_Firmware_Library_V2.2.4\Template的gd32f10x_it.c、gd32f10x_it.h、gd32f10x_libopt.h文件
注意:新版本需要添加\GD32F10x_Firmware_Library_V2.2.4\Utilities
将Utilities加入到USER下并且在C++中包含!不然会报错。
Fatal Error[Pe1696]: cannot open sourcefile "stm32_eval.h"
USER中添加gd32f10x_libopt.h不然会报错。
error: #5: cannot open source input file"RTE_Components.h": No such file or directory
USER中添加systick.c不然缺少函数声明。

注意,以上所有文件需要放置在自己建的工程文件中,这样才能在工程移动的时候不会出现文件丢失的情况!
注意:启动文件并不是每个型号的单片机都添加“startup_gd32f10x_hd.s”这个文件是根据自己使用的单片机型号所决定
如果使用的是低密度的单片机,闪存在64-128KB的用md后缀的启动文件;
使用高密度的单片机,闪存在256-512KB的用hd后缀的启动文件;
使用超高密度的单片机,闪存在512-1024KB的用xd后缀的启动文件;使用互联型单片机的用cl后缀的启动文件。

配置魔术棒
Target 中勾选微库“Use MicroLib”,方便日后编写串口通信实验时使用C语言中出现的printf和scanf函数
在 Output 选项卡中把输出文件夹定位到我们工程目录下的“Objects”文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。
在 C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错找不到头文件。
在这个选项中添加宏,就相当于我们在文件中使用“#define”语句定义宏一样。
在编译器中添加宏的好处就是,只要用了这个模版,就不用源文件中修改代码。
GD32F10X_HD :告诉 GD32 标准库,我们使用的芯片类型是GD32
型号是大容量的,使 GD32 标准库根据我们选定的芯片型号来配置。

USE_STDPERIPH_DRIVER :让gd32f10x.h 包含 gd32f10x_libopt.h 这个头文件。
添加完毕后点击编译
0错误0警告
打开魔术棒中的Debug,选择ST-Link
找到芯片以后下载
添加后下载
本小结到此结束!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

11

帖子

1

粉丝