二、工程模板创建
1. 器件包的安装
DANGER
📌 注意!注意!注意!!! 一定要从下面的网址下载相关文件,不要在网上搜!
官网下载地址(推荐):https://www.xhsc.com.cn/product/110.html
我们点击这个下载。
等待下载完成之后,进行解压,然后双击安装。 压缩包:
解压后:(双击安装)
我们直接 Next 下一步
无脑点击下一步,等待安装完成。
安装完成之后会在Keil软件的安装目录下有一个 HDSC 的文件夹:
注意这个packs文件夹是我在安装Keil的时候自己设定的,我们其他不用管,只要使用搜索功能能搜得出这个文件夹就证明安装成功了。
2. 标准固件库获取
DANGER
📌 注意!注意!注意!!!
一定要从下面的网址下载相关文件,不要在网上搜!
官网下载地址(推荐):https://www.xhsc.com.cn/product/110.html
我们需要下载两个压缩包
3. 固件库目录介绍
3.1 文件夹介绍
打开下载的HC32F4A0_DDL_Rev2.2.0固件库,里面的目录如图3-1-1所示。
- documents:里面是该芯片的手册,可以进行阅读。
- driver:此文件夹包含库文件,ADC、GPIO等文件。
- midware:里面放置的是USB之类的中间件文件。
- project:里面包含了此芯片的例程,各种外设的使用配置。
- Utils:工具类
3.2 drivers
drivers文件夹,内容如图所示。
- bsp:包含了一些模块的实用代码。
- cmsis:里面是ARM层面的软件接口文件。
- hc32_ll_driver:此芯片的外设ll库。
3.3 projects
打开projects文件夹之后,内容如图所示。
- applications:一些应用示例
- examples: 里面是芯片原厂提供的外设例程。
4. 创建标准固件库模板
建议直接下载入门手册资料中准备好的空白模块。
4.1 前提条件
- 已经安装好Keil软件
- 已经安装好HC32F4A0PITB的Pack包
- 已经下载好HC32F4A0PITB固件库
4.2 新建工程目录
新建文件夹,命令为 HC32F4A0PITB_ProjectTemplate,用来保存新创建的工程。 然后在该文件夹下新建6个文件夹,分别命名为:
- project: 存放工程文件(目前只支持MDK5)。
- libraries:存放各种库文件,CMSIS,芯片固件库,文件系统库,网络库等。
- board:存放和板子初始化和链接文件。
- app: 存放应用程序,由用户编写和放main函数。
- bsp:存放和底层相关的支持包。
- module:主要存放各种软件模块,比如软件定时器,PID,FIFO,状态机等。
然后在project文件夹下新建一个文件夹: MDK(V5)
在 HC32F4A0PITB_ProjectTemplate 文件夹下新建一个 README.md 文件,如图所示。
4.3 拷贝工程文件
找到我们的固件库的下载目录,将 HC32F4A0_DDL_Rev2.2.0/drivers 文件夹下的 hc32_ll_driver 文件夹全部拷贝到新建目录的libraries下。
将 HC32F4A0_DDL_Rev2.2.0/drivers 文件夹下的 cmsis 文件夹全部拷贝到新建目录的 module 下。
然后我们将 \hc32f4a0_ddl_Rev1.4.0\mcu\common文件夹复制到 模板module文件夹下 。
将 \HC32F4A0_DDL_Rev2.2.0\projects\ev_hc32f4a0_lqfp176\examples\adc\adc_base\source 下的
- hc32f4xx_conf.h
- main.c 复制到app文件夹下。
我们将下方这个文件下载并且解压,拖到 HC32F4A0PITB_ProjectTemplate 文件夹中替换原本的board文件夹。
文件下载
4.4 新建Keil工程
在上面建立的project文件夹里面创建一个MDK(V5)文件夹用来存放keil MDK ARM V5版本的工程文件。 打开Keil uVision5创建一个新的工程: 单击->Project->New uVision Project ->选好芯片型号HC32F4A0PITB。
4.5 创建分组并添加源文件
右键Target->单击Manage Project Items 如下所示设计分组(双击可以修改名字):
将 \HC32F4A0PITB_ProjectTemplate\module\cmsis\Device\HDSC\hc32f4xx\Source\ARM
目录下的 startup_hc32f4a0.s
(启动文件)添加到STARTUP组里(注意最后要点击对话框左下角的 OK
按钮才能生效)
启动文件使用汇编写的,他是上电或复位后执行的第一段代码:
- 设置堆栈大小和PC指针。
- 配置中断向量表:设置中断向量表的位置,这样当中断发生时,CPU能够找到相应的中断服务程序。
- 定义中断服务例程的默认处理函数:通常会定义一个默认的中断处理函数,当未定义特定的中断处理函数时,会调用这个默认函数。在某些启动文件中,都是了弱定义的中断处理函数,允许我们在其C代码中重定义。
- 系统时钟初始化。
- 跳转到c语言的main函数里面。
将\HC32F4A0PITB_ProjectTemplate\module\cmsis\Device\HDSC\hc32f4xx\Source
目录下的 system_hc32f4a0.c 添加到APP组里面:
将 \HC32F4A0PITB_ProjectTemplate\libraries\hc32_ll_driver\src
目录下的所有文件添加到 Driver
组里面:
添加 \board
目录下的 board.c
文件到Board目录下去
添加 README.md
文件到DOC目录下去。(注意:文件类型一定要选择 All files 才可以看得到.md后缀的文件)
然后我们将app文件夹中的main.c,添加到APP目录中。
最后我们打开文件添加的窗口,将usb相关的c文件删掉:
4.6 添加头文件路径
例子:
按照gif的演示添加下列路径:
4.7 配置工程
点击魔法棒弹出页面
- 勾选
Create HEX File
- 使用微库
- 添加全局宏定义 :
__DEBUG,HC32F4A0,USE_DDL_DRIVER
- C语言使用C99标准
4.8 修改工程
我们模板中使用的是 hc32_ll.h 作为主要头文件。我们想要使用 hc32_ll.h 外设,需要在头文件 hc32f4xx_conf.h 中将相关的DDL_OFF改为DDL_ON。
打开 hc32f4xx_conf.h 修改:
4.9 编译测试
将main.c中的代码替换为:
/*
* 立创开发板软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:https://oshwhub.com/forum
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
* Change Logs:
* Date Author Notes
* 2024-04-07 LCKFB-LP first version
*/
#include "board.h"
int32_t main(void)
{
stc_gpio_init_t stcGpioInit; // 定义GPIO结构体
board_init();
GPIO_Unlock(); // 解锁GPIO寄存器
(void)GPIO_StructInit(&stcGpioInit);
(void)GPIO_Init(GPIO_PORT_B, GPIO_PIN_02, &stcGpioInit);
GPIO_ResetPins(GPIO_PORT_B,GPIO_PIN_02); // 置为低电平
GPIO_OE(GPIO_PORT_B,GPIO_PIN_02,Enable);// GPIO B2输出使能
GPIO_Lock(); // 锁定GPIO寄存器
while(1)
{
GPIO_SetPins(GPIO_PORT_B,GPIO_PIN_02); // 高电平
delay_ms(200);
GPIO_ResetPins(GPIO_PORT_B,GPIO_PIN_02); // 低电平
delay_ms(200);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
我们点击编译
发现0错误,0警告,这样我们的工程模板就完成了!