发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印
[通用型号]

HT32F52352新建库函数工程模板

[复制链接]
1091|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzmm|  楼主 | 2022-6-18 19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 eltonchang2001 于 2022-7-11 12:00 编辑

在官方的固件库 HT32_STD_5xxxx_FWLib_v014_4736 文件中,提供了很多的库文件,根据路径 example\GPIO\InputOutput 打开文件夹,第一次看到这样的画面


然后点击 _CreateProject.bat 生成项目工程,看到的界面如下(必须要在 HT32_STD_5xxxx_FWLib_v014_4736 文件夹里操作,否则批处理会提示文件不存在,因为文件引用那些不单独存在于某个文件夹)

我看着感觉挺懵逼的,不知道什么是什么,当然了,工程文件在 MDK_ARMv5 中,里面又是一番美景,好多文件啊,对于初次开发想要学习的我们来说有点杂了,先往下找到 Project_52352.uvprojx ,然后双击打开即可,一进去肯定是先编译工程啦



然后进入魔术棒,找到 C/C++ 一栏,进入头文件引用那里查看,所有用到的 h 文件都可以在这里看到




接着开始新建一个对应自己板子的工程,需要注意的是,以下路径、新建文件夹和文件的名称都不要带有中文、空格等特殊到不能再特殊的字符

在自己的学习文件夹新建一个工程文件夹,比如我的 TEMPLATE ,然后接着在里面分别新建文件夹 User、Config、Code、Library、Utilities 和 Doc 文件夹


Doc 用来放一些说明文档,一般文件格式为 XXX.TXT,一般习惯用 readme.txt ,进入 Doc 文件夹,新建 readme.txt 文件即可


User 用来存放 main.c 和 ht32f5xxxx_01_it.c,我们自行新建一个文件并命名为 main.c ,同时在 \example\GPIO\InputOutput 下找到 ht32f5xxxx_01_it.c 并复制到我们的工程文件夹中的 User 中



对于 Config 文件夹,其里面则可以放一些关于配置的文件,并且启动文件也放在里面,每个文件对应的路径如下:
ht32_board_config.h :\example\GPIO\InputOutput
ht32f5xxxx_conf.h :\example\GPIO\InputOutput
ht32f5xxxx_01_usbdconf.h :\example\GPIO\InputOutput
ht32_op.s :\example\GPIO\InputOutput\MDK_ARM
HT32F5xxxx_01_DebugSupport.ini :\example\GPIO\InputOutput\GNU_ARM
startup_ht32f5xxxx_01.s :\example\GPIO\InputOutput\MDK_ARMv5


Code 文件夹则存放 system_ht32f5xxxx_01.c 和 ht32_usbd_core.c,两者的路径分别为:\example\GPIO\InputOutput 和 \library\HT32_USBD_Library\src

在 Utilities 中,我们将下面的文件放入其中
ht32_board.c :\utilities
ebi_lcd.c :\utilities\common
i2c_eeprom.c :\utilities\common
spi_flash.c :\utilities\common
ht32_retarget.c :\library\HT32F5xxxx_Driverr\src
ht32_serial.c :\library\HT32F5xxxx_Driver\src


Library 用来存放 STM32 库里面的 inc 和 src 这两个文件,这两个文件包含了 芯片上的所有驱动;假如我只用 GPIO,我可以只用添加 stm32f10x_gpio.c 而其他的可以不用添加,这里全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢

将 \library\HT32F5xxxx_Driver 里的 src 文件夹和 inc 文件夹复制到工程目录的 Library 文件夹下即可,需要注意的是,我们只用到 src 中的某部分(23个),因为其他的我们使用不上,且有的官方并不提供相关的头文件,不是在工程目录中删除用不到 .c 文件,而是在 MDK 工程中右击进行 remove

此时进入 MDK 里,在工具栏 Project->New μVision Project,然后填写工程名称并保存到刚新建的工程文件夹里

选择合泰的芯片,HT32F52352 64LQFP,确认之后在弹出的下载 pack 的页面中不要理会,按 cancel 即可

把 Target 的名称改为 Template,如果我们建的工程是 LED 的就改为 LED,其实不改也可以,改了只是为了见名知义


增加文件项之后的样子


接下来就双击每个文件名,将刚才我们新建的工程目录下的文件分别对应 add 进来,此时会发现 User 文件夹下多了两个文件夹,Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产 生的中间文件,可以先将两者删除,在工程目录新建一个 OBJ 文件夹用来代替它们即可


此时在 MDK 里点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录(一定要点进去进去 OBJ 目录里面!)。如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录


接着继续双击文件项进行 add ,当在 config 处时,需要注意添加添加进来的文件类型需要选为 all ,后面的同样情况一样使用(ini文件加载时不要选Image File ( . )格式,可以选text)


当全都加载进来后,是长这个样子的




至此,工程已经基本建好,但是还不行,点击工具栏中的魔术棒按钮

① 在 Target这个选项卡中,把晶振改为8(外部晶振),把 Use MicroLIB 的勾打上,这样是为了后面的串口例 程可以使用 printf 这个函数


② Output选项卡如下设置


③ 在 C/C++ 一栏,复制以下内容到 Define 框中

USE_HT32_DRIVER, USE_HT32F52352_SK, USE_HT32F52342_52, USE_MEM_HT32F52352

此时先按确定 OK ,回到工程目录添加相关的头文件

在 \library\CMSIS 中复制 Include 文件夹到我们工程目录下的 Code 文件夹中
在 \library\HT32_USBD_Library\inc 中复制 ht32_usbd_core.h 到 工程目录下的 Code 文件夹中
在 \utilities 中复制 HT32_Board 文件夹到工程目录下的 Config 文件夹中
在 \utilities 中复制 ht32_board.h 文件、common 文件夹到工程目录下的 Utilities 文件夹中

然后重新进入魔术棒、C/C++ 一栏,在 Include Paths 栏里添加库文件的搜索路径,这样就可以屏蔽掉默认的搜索路径。但当编译器在我们指定的路径下 搜索不到的话还是会回到标准目录去搜索,就像有些 ANSIC C 的库文件,如 stdin.h 、stdio.h


④ 在 Asm 一栏的宏定义 Define 的输入框里填入以下内容

USE_HT32_CHIP=4


⑤ 在 Debug 一栏按照下面图片进行设置



此时,按 OK 保存即可,然后去 main.c 中先写入空函数


使用特权

评论回复

打赏榜单

eltonchang2001 打赏了 5.00 元 2022-07-06

沙发
eltonchang2001| | 2022-7-6 14:44 | 只看该作者

推一下本帖,很用心的贴文教学。



使用特权

评论回复
板凳
daichaodai| | 2022-7-7 08:25 | 只看该作者
学习了,谢谢分享经验。

使用特权

评论回复
地板
妇女半边天| | 2022-7-7 10:07 | 只看该作者
全是干货,值得奖励。可以@小跑堂

使用特权

评论回复
5
薅羊电子网| | 2022-7-8 17:00 | 只看该作者
谢谢分享

使用特权

评论回复
6
ulystronglll| | 2022-8-19 20:10 | 只看该作者
可以直接使用固件自带的代码  

使用特权

评论回复
7
abotomson| | 2022-8-20 19:48 | 只看该作者
HT32都支持吗  

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

401

主题

8863

帖子

11

粉丝