【GD32单片机】GD32工程构建,快速上手GD32

这篇具有很好参考价值的文章主要介绍了【GD32单片机】GD32工程构建,快速上手GD32。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以GD32F350为例

之前在学校接触最多的是STM32单片机,但出来工作后发现,GD32或MM32单片机却是经常能接触到的,虽然学习资料和生态没有STM32好,但基本芯片内外设资源却差不多,开发起来大同小异。

在开始构建工程之前需要去GD32的官网下载一些资料;

打开官网 https://www.gigadevice.com.cn/

gd32f3x0,单片机,单片机

选择【产品中心 】-【MCU】 - 【Arm Cortex-4】,在搜索框输入GD32F350,然后选择产品型号,比如我这里选择GD32F350RBT6,然后下载数据手册和用户手册,除此之外还要下载官网提供关于这款芯片的开发板资料,点击右侧侧栏【MCU资源下载中心】。

打开资料下载中心 https://www.gd32mcu.com/cn/download

gd32f3x0,单片机,单片机

进入页面后选中【GD32F3 MCU】,然后下载开发板资料和应用软件(也就是pack包),至此资料下载完成。

gd32f3x0,单片机,单片机

gd32f3x0,单片机,单片机

安装开发环境

本人使用的是keil5的MDK-ARM版本。

  1. 安装pack包 ,构建工程之前需要安装pack包,打开开下载的GD32F3x0_Addon_V3.0.3文件夹,文件夹目录下有IAR和Keil两种安装环境,选择Keil目录下的keil5,可以看到GigaDevice.GD32F3x0_DFP.3.0.2.pack,双击安装即可;
  2. 新建工程文件夹 ,在桌面或其他地方新建一个文件夹,命名为GD32F3x0_Demo(当然你也可以按照你的想法来命名),在新建的文件夹下再建一个名为MDK-ARM的文件夹,用来存储keil工程文件;
  3. 新建keil工程 ,打开keil开发工具,新建工程(Project - New uvision Project…),在弹出串口下选择创建路径,创建路径选择前面创建好的路径C:\Users\xxx\Desktop\GD32F3x0_Demo\MDK-ARM,给工程命名为project(可根据实际情况命名),点击【保存】后会弹出Select Device for Target 'Target 1"…窗口,我的工程芯片是GD32F350RB,然后点击【OK】即可。
    gd32f3x0,单片机,单片机

添加固件

前面下载的开发板资料(GD32F3x0_Firmware_Library文件夹)结构需要先了解一下。

gd32f3x0,单片机,单片机

固件库里面的结构如下:

gd32f3x0,单片机,单片机

GD32350R_EVAL_Demo_Suites的结构如下:

gd32f3x0,单片机,单片机

了解完开发板资料结构后就可以着手构建和完善项目结构了:

  1. 添加固件库 ,将GD32F3x0_Demo_Suites_V2.2.3下的GD32F3x0_Firmware_Library固件库复制到我们新建的项目工程下;
  2. 添加用户目录及文件 ,在我们新建的项目下创建User目录,然后随便打开一个开发板例程项目(如:GD32350R_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED),将gd32f3x0_it.c、gd32f3x0_it.h、gd32f3x0_libopt.h和main.c复制到我们创建的项目下的User目录下;
    gd32f3x0,单片机,单片机
  3. 添加Driver目录 ,在我们的项目工程(GD32F3x0_Demo)下在创建一个Driver文件夹,里面用来存放自己写的驱动程序。

构建keil工程

做好前面步骤,就可以开始keil了。

gd32f3x0,单片机,单片机

  1. 项目管理 ,打开管理项目项(Manage Project Items),创建各类工程管理组,对工程文件进行分类、划分。
    gd32f3x0,单片机,单片机

如何向组内添加工程文件呢? 选中需要添加文件的组,然后右键选择将现有文件添加到组(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
  1. 工程选项管理 ,点击魔术棒(Options for Target …),Target下的ARM Compiler选择版本5;
    gd32f3x0,单片机,单片机

在C/C++选项的Define添加一些宏和学习语言和代码块选项:

USE_STDPERIPH_DRIVER,GD32F350

gd32f3x0,单片机,单片机

在C/C++选项的Include Paths中添加*.h文件的路径,让编译器能够找到,然后点击【OK】即可。

gd32f3x0,单片机,单片机

修改代码

  1. 修改main.c ,代码如下:
#include "gd32f3x0.h"

int main(void)
{

    while(1)
	{
		
    }
}
  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 警告,项目构建完成。
gd32f3x0,单片机,单片机文章来源地址https://www.toymoban.com/news/detail-772951.html

到了这里,关于【GD32单片机】GD32工程构建,快速上手GD32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GD32 单片机 硬件I2C死锁解决方法

    在I2C恢复函数下个断点(检测到I2C多次超时之后,应该能跳转到I2C恢复函数) 使用镊子,将SCL与SDA短接,很快就能看到程序停到恢复函数的断点上,此时再执行恢复函数,看能否正常走出(可在回复函数中写个死循环,只有I2C正常才跳出,检测I2C正常的办法,可以读从设备的

    2024年02月05日
    浏览(51)
  • 【GD32】从0开始学GD32单片机(10)—— TIMER基本定时器详解+1毫秒延时例程

    在GD32中定时器是非常重要的外设,它可以帮我们精准的控制程序的调度,就如之前讲过的SysTick就是一个定时器,我们可以通过设置这个定时器的寄存器实现延时函数。 GD32的定时器可大致分为3种—— 基本定时器、通用定时器、高级定时器 。 它们之间的区别如下图所示: 这

    2024年01月17日
    浏览(46)
  • 如果STM32/GD32一类的ARM单片机解除读写保护的方法

    有时候啊,使用ST-Link给STM32一类的ARM单片机下载程序的时候,发现怎么也下载不了,可能是由于芯片被写保护了。那怎么办呢?可以使用STM32 ST-LINK Utility工具解除芯片的写保护,本篇博文介绍操作步骤,文章最后有工具下载链接。 双击“STM32 ST-LINK Utility.exe”,打开软件。 软

    2024年02月09日
    浏览(40)
  • 单片机(STM32,GD32,NXP等)中BootLoader的严谨实现详解

    Bootloader( 引导加载程序 )的主要任务是引导加载并运行应用程序,我们的软件升级逻辑也一般在BootLoader中实现。本文将详细介绍BootLoader在单片机中的实现,包括 STM32、GD32、NXP Kinetis 等等的所有单片机,因为无论是什么样的芯片,它实现的逻辑都是一样的。 注意,本篇文章主

    2024年02月02日
    浏览(50)
  • GD32单片机远程升级下载,手机在线升级下载程序,GD32在线固件下载升级,手机下载程序固件方法

            GD32、STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。         GD32/STM32单片机的在线下载通常需要以下几种方式完成:       1、使用ST/GD提供的串口下载工具,本地完成固件的升级下载。        2、自行完成系统

    2024年02月02日
    浏览(49)
  • 【GD32】从0开始学GD32单片机(9)—— SPI外设详解+主机从机发送和接收例程

    SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种 高速的,全双工,同步的 通信总线。 SPI总共需要4根线来实现通信, NSS:片选线,用于选择需要通信的从机;CLK:同步时钟线,用于提供同步时钟信号;MISO:主机读从机写线;MOSI:主机写从机读线 。 GD32F103系列的

    2023年04月08日
    浏览(35)
  • STM32 GD32 瑞萨 psoc 等单片机 无线wifi蓝牙最佳解决方案

    新联鑫威一系列低功耗高性价比sdio wifi/蓝牙combo的模块CYWL6208 , CYWL6312, CYW6209等可以搭配stm32 各种型号例如以下,支持sta/ap/ap+sta,双模蓝牙的应用,支持ThreadX,rt-thread, freertos, Azure RTOS, Linux, Android系统. 稳定强,功耗低,吞吐量高等优势可以应用在新能源充电桩 安防 工控 智能

    2024年01月17日
    浏览(46)
  • 【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程

    外部存储器控制器EXMC,用来访问各种片外存储器,通过配置寄存器,EXMC可以把AMBA 协议转换为专用的片外存储器通信协议,包括 SRAM,ROM,NOR Flash,NAND Flash,PC Card和SDRAM 。 EXMC的工作原理其实就是把外部储存器的地址映射到内部的特定地址上,用户想访问外部的存储器,我们

    2024年02月10日
    浏览(88)
  • 【GD32】从0开始学GD32单片机(8)—— I2C外设详解+主机从机发送和接收例程

    I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有

    2024年02月02日
    浏览(74)
  • J-Flash J-Link解锁GD32单片机

    提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b 当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序, 可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。 我们先来用J-Link命令行验证下是否是真的开启了安全保护的 打开J-Link Comm

    2024年02月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包