以GD32F350为例
之前在学校接触最多的是STM32单片机,但出来工作后发现,GD32或MM32单片机却是经常能接触到的,虽然学习资料和生态没有STM32好,但基本芯片内外设资源却差不多,开发起来大同小异。
在开始构建工程之前需要去GD32的官网下载一些资料;
打开官网 https://www.gigadevice.com.cn/
选择【产品中心 】-【MCU】 - 【Arm Cortex-4】,在搜索框输入GD32F350,然后选择产品型号,比如我这里选择GD32F350RBT6,然后下载数据手册和用户手册,除此之外还要下载官网提供关于这款芯片的开发板资料,点击右侧侧栏【MCU资源下载中心】。
打开资料下载中心 https://www.gd32mcu.com/cn/download
进入页面后选中【GD32F3 MCU】,然后下载开发板资料和应用软件(也就是pack包),至此资料下载完成。
安装开发环境
本人使用的是keil5的MDK-ARM版本。
- 安装pack包 ,构建工程之前需要安装pack包,打开开下载的GD32F3x0_Addon_V3.0.3文件夹,文件夹目录下有IAR和Keil两种安装环境,选择Keil目录下的keil5,可以看到GigaDevice.GD32F3x0_DFP.3.0.2.pack,双击安装即可;
- 新建工程文件夹 ,在桌面或其他地方新建一个文件夹,命名为GD32F3x0_Demo(当然你也可以按照你的想法来命名),在新建的文件夹下再建一个名为MDK-ARM的文件夹,用来存储keil工程文件;
-
新建keil工程 ,打开keil开发工具,新建工程(Project - New uvision Project…),在弹出串口下选择创建路径,创建路径选择前面创建好的路径C:\Users\xxx\Desktop\GD32F3x0_Demo\MDK-ARM,给工程命名为project(可根据实际情况命名),点击【保存】后会弹出Select Device for Target 'Target 1"…窗口,我的工程芯片是GD32F350RB,然后点击【OK】即可。
添加固件
前面下载的开发板资料(GD32F3x0_Firmware_Library文件夹)结构需要先了解一下。
固件库里面的结构如下:
GD32350R_EVAL_Demo_Suites的结构如下:
了解完开发板资料结构后就可以着手构建和完善项目结构了:
- 添加固件库 ,将GD32F3x0_Demo_Suites_V2.2.3下的GD32F3x0_Firmware_Library固件库复制到我们新建的项目工程下;
-
添加用户目录及文件 ,在我们新建的项目下创建User目录,然后随便打开一个开发板例程项目(如:GD32350R_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED),将gd32f3x0_it.c、gd32f3x0_it.h、gd32f3x0_libopt.h和main.c复制到我们创建的项目下的User目录下;
- 添加Driver目录 ,在我们的项目工程(GD32F3x0_Demo)下在创建一个Driver文件夹,里面用来存放自己写的驱动程序。
构建keil工程
做好前面步骤,就可以开始keil了。
-
项目管理 ,打开管理项目项(Manage Project Items),创建各类工程管理组,对工程文件进行分类、划分。
如何向组内添加工程文件呢? 选中需要添加文件的组,然后右键选择将现有文件添加到组(Add Existing Files to Group),本工程需要在每个组下添加的工程文件如下:
User | gd32f3x0_it.c、main.c |
---|---|
Driver | 根据自己写的驱动程序进行添加,本工程还没写驱动,暂时不需要添加 |
GD32F3x0_Lib | GD32F3x0_standard_peripheral\Source下所有*.c文件 |
STARTUP | system_gd32f3x0.c、startup_gd32f3x0.s |
-
工程选项管理 ,点击魔术棒(Options for Target …),Target下的ARM Compiler选择版本5;
在C/C++选项的Define添加一些宏和学习语言和代码块选项:
USE_STDPERIPH_DRIVER,GD32F350
在C/C++选项的Include Paths中添加*.h文件的路径,让编译器能够找到,然后点击【OK】即可。
文章来源:https://www.toymoban.com/news/detail-772951.html
修改代码
- 修改main.c ,代码如下:
#include "gd32f3x0.h"
int main(void)
{
while(1)
{
}
}
- gd32f3x0_it.h ,代码如下:
#include "gd32f3x0_it.h"
/*!
\brief this function handles NMI exception
\param[in] none
\param[out] none
\retval none
*/
void NMI_Handler(void)
{
}
/*!
\brief this function handles HardFault exception
\param[in] none
\param[out] none
\retval none
*/
void HardFault_Handler(void)
{
/* if Hard Fault exception occurs, go to infinite loop */
while(1){
}
}
/*!
\brief this function handles MemManage exception
\param[in] none
\param[out] none
\retval none
*/
void MemManage_Handler(void)
{
/* if Memory Manage exception occurs, go to infinite loop */
while (1){
}
}
/*!
\brief this function handles BusFault exception
\param[in] none
\param[out] none
\retval none
*/
void BusFault_Handler(void)
{
/* if Bus Fault exception occurs, go to infinite loop */
while (1){
}
}
/*!
\brief this function handles UsageFault exception
\param[in] none
\param[out] none
\retval none
*/
void UsageFault_Handler(void)
{
/* if Usage Fault exception occurs, go to infinite loop */
while(1){
}
}
/*!
\brief this function handles SVC exception
\param[in] none
\param[out] none
\retval none
*/
void SVC_Handler(void)
{
}
/*!
\brief this function handles DebugMon exception
\param[in] none
\param[out] none
\retval none
*/
void DebugMon_Handler(void)
{
}
/*!
\brief this function handles PendSV exception
\param[in] none
\param[out] none
\retval none
*/
void PendSV_Handler(void)
{
}
/*!
\brief this function handles SysTick exception
\param[in] none
\param[out] none
\retval none
*/
void SysTick_Handler(void)
{
}
构建结果
构建结果 0 错误, 0 警告,项目构建完成。
文章来源地址https://www.toymoban.com/news/detail-772951.html
到了这里,关于【GD32单片机】GD32工程构建,快速上手GD32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!