使用VSCode开发GD32的项目环境配置
创建项目文件夹,然后在该文件夹中创建l六个空白的文件夹。
从官方标准库中把相关文件移植到template中。
GD32F4xx_Firmware_Library\Template中的文件拷贝进我们所创建的项目工程中的User文件夹中。
GD32F4xx_Firmware_Library\Firmware\CMSIS中的文件全部拷贝进所创建的项目工程中的CMSISI文件夹中。
GD32F4xx_Firmware_Library\Firmware\GD32F4xx_standard_peripheral中的文件也全部拷贝到所创建的项目工程中的Firmware文件夹中。
打开VSCode的EIDE,点击新建项目,选择空项目,接着选择创建Cortex-M项目,然后输入我们的工程项目,选择保存位置为刚刚所创建的项目工程的上一级,这样子会直接在我们前面创建的内容里面添加进EIDE的新内容。创建后他会提示已存在目录,是否直接创建进那个目录里面,就点击yes完成创建,创建好了点击切换工作区,最后就可以看到工作区中显示出了我们前面创建好的内容以及新的内容。
接着再次打开EIDE,在EIDE项目中的项目资源中,分别创建三个虚拟文件夹(CMSIS、Firmware、App),和普通文件夹(User、Hardware、Doc)。
创建好后,在CMSIS文件夹中添加上\template\CMSIS\GD\GD32F4xx\Source路径下的system_gd32f4xx.c和\template\CMSIS\GD\GD32F4xx\Source\ARM路径下的startup_gd32f450_470.s两个文件(我使用的是GD32F470,所以选择这个startup文件)。
接着再在Firmware中添加\template\Firmware\Source中的所有文件。
在GD官网下载好芯片支持包后,找个地方解压。
接着打开VSCode中的EIDE,在EIDE项目一栏中的芯片支持包上点击加号选择官方的芯片支持包,我们选择来自磁盘,然后打开到刚刚解压的文件夹里面,就可以看到我们需要的支持包了(GigaDevice.GD32F4xx_DFP.3.2.0.pack)。
选择安装之后,可以看到出现了一个GD32F4xx_DFP的一栏,我们点击上面的选择芯片,我所使用的芯片是GD32F470ZGT6,所以我就输入选择GD32F470ZG。
选择好后,GD32F4xx_DFP一栏可以展开下面的信息,就说明成功了。
接着在构建配置一栏中,点击切换编译器,选择AC5的这个
然后修改烧录配置,点击切换烧录器,由于我使用的是DAPLink,那就选择OpenOCD这一个。
在烧录配置里面的芯片配置修改成stm32f4xx.cfg,同时接口配置也需要修改,修改成cmsis-dap.cfg。
接着我们还需要添加头文件目录,展开C/C++属性,点击包含目录一栏上的添加包含路径按钮,分别把一下四个路径添加进去。
到此EIDE的工程基本上是创建完成了,接下来我们进行简单的测试。点击VSCode的资源管理器回到我们的项目工作区。因为我们是通过官方提供的资料移植的,所以有些配置我们需要自己修改。
打开 gd32f4xx_it.c 文件,将 void SysTick_Handler(void) 函数里面的 led_spark(); 删除掉。
再打开 main.h 文件,将 void led_spark(void); 删除掉。
我们回到 main.c 文件中,将里面的代码替换成下面这一段代码,这一段代码是简单的流水灯测试,每个人使用的板子不一定一样,引脚配置啥的需要根据自己实际情况来配置。如果使用的是立创梁山派,那就可以直接参考我下面的代码。
1
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
40
41
42
43
44
45
46
47
48
int main(void) {
systick_config();
rcu_periph_clock_enable(RCU_GPIOE);
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_3);
gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
rcu_periph_clock_enable(RCU_GPIOD);
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7);
gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
rcu_periph_clock_enable(RCU_GPIOG);
gpio_mode_set(GPIOG, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_3);
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_5);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
uint16_t timeNumber = 100;
while (1) {
gpio_bit_set(GPIOE, GPIO_PIN_3);
delay_1ms(timeNumber);
gpio_bit_set(GPIOD, GPIO_PIN_7);
delay_1ms(timeNumber);
gpio_bit_set(GPIOG, GPIO_PIN_3);
delay_1ms(timeNumber);
gpio_bit_set(GPIOA, GPIO_PIN_5);
delay_1ms(timeNumber);
gpio_bit_reset(GPIOA, GPIO_PIN_5);
delay_1ms(timeNumber);
gpio_bit_reset(GPIOG, GPIO_PIN_3);
delay_1ms(timeNumber);
gpio_bit_reset(GPIOD, GPIO_PIN_7);
delay_1ms(timeNumber);
gpio_bit_reset(GPIOE, GPIO_PIN_3);
delay_1ms(timeNumber);
}
}修改好 main.c 的代码后,我们点击右上角的构建,也可以按快捷键 F7,之后就等待构建完成。
构建完成后,再点击右上角的烧录,快捷键是 Ctrl+Alt+D ,烧录完成会显示出下面的信息。
成功后,出现如下效果,说明已经成功了。