立创·天空星开发板-GD32F407VE-环境搭建

立创·天空星开发板-GD32F407VE-环境搭建

码农世界 2024-05-28 前端 121 次浏览 0个评论

本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。

立创·天空星开发板-GD32F407VET6-环境搭建

  • 单片机
    • ARM
      • ARM内核系列
      • Cortex-M系列
      • 常用ARM芯片厂商
      • GD32
        • GD32的产品系列
        • 开发板
          • 开发板资源、尺寸标注图
          • 设计图纸
          • GD32F407
          • Keil ARM 安装
            • 下载地址
            • 安装步骤
              • GD32开发包安装
              • 点灯仪式
                • 排错

                  单片机

                  单片机(Microcontroller)是一种集成电路芯片,它集成了处理器、存储器、输入/输出接口以及各种功能模块于一身。

                  1. 总线:

                  总线是一组导线,连接了单片机中的各个部分,如处理器、存储器和输入/输出接口。它负责在各个部件之间传递信息和数据。常见的总线有地址总线、数据总线和控制总线。

                  • 地址总线:用于传递存储器和外设的地址信息。
                  • 数据总线:用于传输实际的数据。
                  • 控制总线:用于传递控制信号,如读写操作。

                    总线与外设通信:单片机通过总线与外设进行通信。当处理器需要与外设通信时,它会将外设的地址放在地址总线上,将要传输的数据放在数据总线上,并通过控制总线发送控制信号,以实现对外设的读写操作。

                    1. GPIO(General Purpose Input/Output,通用输入输出):

                    GPIO,全称为“通用输入/输出”(General Purpose Input/Output),是计算机系统中用于与外部世界进行数字通信的一种接口标准。它允许硬件和软件通过电信号来交换数据,控制外部设备或接收外部事件。GPIO 模式有:

                    模式性质
                    浮空输入数字输入
                    上拉输入数字输入
                    下拉输入数字输入
                    模拟输入模拟输入
                    开漏输出数字输出
                    推挽输出数字输出
                    复用开漏输出数字输出
                    复用推挽输出数字输出

                    GPIO通常用于连接各种外设,如按钮、LED灯、传感器、马达、继电器等,以便与计算机系统进行交互。

                    1. 通信协议:

                    单片机与外设之间通信的方式有很多,通常需要遵循一定的协议。以下是一些常见的通信协议:

                    ● UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器):这是一种异步串行通信协议,用于在单片机与外设之间传输数据。UART通信需要两根线:一根用于发送数据(TX),另一根用于接收数据(RX)。

                    ● SPI(Serial Peripheral Interface,串行外设接口):SPI是一种同步串行通信协议,使用主从模式进行通信。它需要四根线:时钟线(SCLK)、主设备数据输出线(MOSI)、主设备数据输入线(MISO)和片选线(SS)。

                    ● I2C(Inter-Integrated Circuit,内部集成电路总线):I2C是一种同步串行通信协议,使用主从模式进行通信。它只需要两根线:串行数据线(SDA)和串行时钟线(SCL)。

                    ARM

                    ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。ARM架构主要设计了以下几个部分内容:

                    1. 指令集架构(Instruction Set Architecture):

                    ARM架构是基于精简指令集计算机(RISC)架构设计的,其指令集具有高效的指令执行速度、较小的代码大小和低功耗等特点。ARM架构提供了多个指令集版本,包括32位和64位,不同版本的指令集支持不同的特性和功能,以适应不同的应用场景。

                    1. 存储器架构(Memory Architecture):

                    ARM架构的存储器架构包括内存、闪存、EEPROM等类型,它们提供了不同的存储特性和使用场景。ARM架构还支持虚拟内存技术,通过虚拟地址和物理地址映射实现了对于内存的更高效的利用,提高了系统的运行效率和稳定性。

                    1. 总线架构(Bus Architecture):

                    ARM架构的总线架构包括数据总线、地址总线和控制总线等,它们提供了连接CPU、存储器、外设等各个部件之间的通信和数据传输。ARM架构的总线架构是高度灵活和可扩展的,可以适应不同的应用场景和系统需求。

                    1. 处理器架构(Processor Architecture):

                    ARM架构的处理器架构包括中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)等。ARM架构的处理器架构具有高性能、低功耗、低成本等特点,可以适应不同的应用场景和设备类型。

                    1. 安全架构(Security Architecture):

                    ARM架构的安全架构提供了各种安全功能和特性,包括硬件加密、安全存储、安全启动等。ARM架构的安全架构可以保护系统的安全性和稳定性,防止恶意攻击和数据泄露等安全问题。

                    ARM内核系列

                    ARM公司设计的处理器内核有很多种,根据不同的应用场景和性能需求,可以选择不同的内核进行设计。以下是一些常见的ARM内核:

                    1. Cortex-A系列:面向高性能应用领域的内核,主要用于移动设备、智能终端、高端嵌入式系统等领域。Cortex-A系列内核具有高性能、高可扩展性、丰富的外设接口和低功耗等优点。
                    2. Cortex-R系列:面向实时应用领域的内核,主要用于工业控制、汽车电子、航空航天等领域。Cortex-R系列内核具有高可靠性、低延迟、强实时性和硬件保护等特点。
                    3. Cortex-M系列:面向低功耗嵌入式系统的内核,主要用于智能传感器、便携式设备、家用电器等领域。Cortex-M系列内核具有低功耗、低成本、高效能、易于开发等特点。
                    4. ARM7系列:面向嵌入式系统领域的内核,主要用于控制器、存储设备、安全芯片等领域。ARM7系列内核具有低成本、低功耗、高集成度、易于开发等特点。
                    5. ARM9系列:面向嵌入式系统领域的内核,主要用于数字音视频、通信、网络设备等领域。ARM9系列内核具有高性能、多媒体处理能力、丰富的外设接口和易于扩展等特点。

                    Cortex-M系列

                    Cortex-M系列是ARM公司推出的一种面向低功耗嵌入式系统的处理器内核,主要用于智能传感器、便携式设备、家用电器等领域。Cortex-M系列内核具有低功耗、低成本、高效能、易于开发等特点,是目前嵌入式系统领域最受欢迎的处理器内核之一。根据不同的性能和功耗需求,Cortex-M系列内核又分为以下几类:

                    1. Cortex-M0系列:面向低功耗、成本敏感型应用,适用于智能传感器、安全芯片、家用电器等领域。Cortex-M0系列内核的主频通常在10MHz-50MHz之间,具有低功耗、低成本、易于开发等特点。
                    2. Cortex-M3系列:面向高性能、实时应用,适用于工业控制、汽车电子、医疗设备等领域。Cortex-M3系列内核的主频通常在50MHz-120MHz之间,具有高性能、强实时性和硬件保护等特点。
                    3. Cortex-M4系列:基于Cortex-M3系列内核,增加了DSP和浮点运算单元,适用于音视频处理、图像处理、控制算法等领域。Cortex-M4系列内核的主频通常在80MHz-240MHz之间,具有高性能、DSP(Digital Signal Processing)和浮点运算能力等特点。
                    4. Cortex-M7系列:基于Cortex-M4系列内核,增加了双精度浮点运算单元和指令预取器等特性,适用于音视频编解码、高速通信等领域。Cortex-M7系列内核的主频通常在200MHz-400MHz之间,具有高性能、低延迟和高精度的浮点运算能力等特点。

                    常用ARM芯片厂商

                    国内/国外公司知名芯片官网
                    国外意法半导体STM32https://www.st.com/
                    国外恩智浦LPC系列,K系列,KL系列,i.MX系列https://www.nxp.com/
                    国外瑞萨电子RA系列https://www.renesas.cn
                    国外德州仪器AM系列https://www.ti.com/
                    国外高通Qualcommhttps://www.qualcomm.com/
                    国内兆易创新GD32系列https://www.gigadevice.com.cn/
                    国内国民技术N32系列https://www.nationstech.com/
                    国内武汉芯源CW32https://www.whxy.com/
                    国内深圳航顺HK32https://www.hsxp-hk.com/
                    国内华大半导体HC32https://www.hdsc.com.cn/
                    国内瑞芯微RK系列(rk3568)http://www.rock-chips.com/
                    国内全志科技R系列,V系列,A系列https://www.allwinnertech.com/
                    国内联发科MTKhttps://www.mediatek.com/

                    GD32

                    GD32是一款由中国芯片制造商GigaDevice推出的32位ARM Cortex-M微控制器系列。

                    它们与 STMicroelectronics 的STM32系列微控制器非常相似,使用相同的 ARM Cortex-M 内核,提供广泛的外设和功能,包括各种通信接口、模拟输入输出、数字输入输出、定时器、中断控制器等等。

                    GD32的产品系列

                    ● L系列:基于Cortex-M23内核,主要特点是低功耗和低成本,适用于高端家电、消费电子、医疗设备、工业控制等领域。

                    ● F系列:基于Cortex-M4内核,主要特点是高性能和丰富的外设资源,适用于高端消费电子、医疗设备、工业控制、安防监控等领域。

                    ● E系列:基于Cortex-M0+内核,主要特点是超低功耗和小尺寸,适用于物联网、可穿戴设备、智能家居等领域。

                    ● V系列:基于Cortex-M0内核,主要特点是低功耗和高性价比,适用于低端家电、消费电子、LED灯等领域。

                    ● C系列:基于Cortex-M4内核,主要特点是高性能和低功耗,适用于智能家居、安防监控、工业控制等领域。

                    ● W系列:基于Cortex-M33内核,主要特点是超低功耗和高性价比,适用于物联网、可穿戴设备等领域。

                    ● A系列:基于Cortex-A7内核,主要特点是高性能和丰富的外设资源,适用于高端工业控制、嵌入式计算机等领域。

                    开发板

                    本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。

                    开发板资源、尺寸标注图
                    设计图纸

                    详细设计图:https://pro.lceda.cn/editor#id=1949206d8e694271bd8ab6f068e260c2

                    GD32F407

                    GD32F4xx系列器件是基于Arm® Cortex®-M4处理器的32位通用微控制器。

                    存储器的组织采用了哈佛结构,预先定义的存储器映射和高达4 GB的存储空间,充分保证了系统的灵活性和可扩展性。

                    • GD32F405/407为Cortex®-M4互联型
                    • 512K~3072K Flash,192K SRAM
                    • 高达168MHz,支持FPU
                    • 2.6~3.6V供电,5V容忍I/O
                    • -40℃~85 ℃工业级温度范围
                    • 全系列硬件管脚及软件兼容

                      Keil ARM 安装

                      Keil是一家嵌入式系统开发工具提供商,其主要产品是Keil MDK(Microcontroller Development Kit),是一款集成开发环境(IDE),支持多种芯片架构,包括ARM、C51、C251等,可以进行代码编辑、编译、调试、仿真等工作。

                      下载地址

                      keil社区版下载地址:https://www.keil.arm.com/mdk-community/

                      keil官方支持版下载地址:https://www.keil.com/download/product/

                      安装步骤

                      一般来说,一路点击下一步即可,如果需要自定义安装路径,有以下几点注意事项:

                      ● 路径中一定不要有中文或空格路径

                      ● Core路径要放到和C51相同的Keil路径(例如默认的C:\Keil_v5)

                      ● 如果安装路径和C51不同,会导致C51项目无法直接双击打开

                      ● 安装过程如提示有文件覆盖就点确认,进行覆盖

                      ● Pack路径可以使用默认路径,也可以参考以下自定义路径结构

                      Core:D:\Program\Keil\KeilC51_v5\
                      Pack:D:\Program\Keil\KeilC51_v5\ARM\Packs
                      

                      附上一张图,更加直观:

                      GD32开发包安装

                      GD32 开发包可以选择在线安装和离线安装两种方式

                      1. 在线安装

                      打开 Keil, 点击 Pack Installer, 选择 GD32F407VE,然后点击安装,下图是已经安装过后的界面

                      1. 离线安装

                      从官网下载 GD32F4XX AddOn 文件 进行安装,直接允许下载后的文件即可,它会自动定位到 Keil Arm 的包存储路径。需要注意的是,该文件放置的路径不要有特殊符号。例如

                      D:\Program\Keil\GigaDevice.GD32F4xx_DFP.3.2.0.pack
                      

                      点灯仪式

                      创建一个项目,点亮开发板上的用户 LED 灯

                      1. 下载 固件库文件

                      文件目录结构如下所示:

                      GD32F4xx_Firmware_Library_V3.2.0
                      ├─Docs
                      │  ├─Schematic
                      │  └─User Guide
                      ├─Examples
                      ├─Firmware
                      │  ├─CMSIS
                      │  │  └─GD
                      │  │      └─GD32F4xx
                      │  │          ├─Include
                      │  │          └─Source
                      │  │              ├─ARM
                      │  │              └─IAR
                      │  ├─GD32F4xx_standard_peripheral
                      │  │  ├─Include
                      │  │  └─Source
                      │  └─GD32F4xx_usb_library
                      ├─Template
                      │  ├─IAR_project
                      │  └─Keil_project
                      └─Utilities
                      
                      1. 新建项目,规划的目录结构如下:
                      GD32F407VE_01_LED
                      ├─Driver
                      ├─Firmware
                      │  ├─CMSIS
                      │  │  └─GD
                      │  │      └─GD32F4xx
                      │  │          ├─Include
                      │  │          └─Source
                      │  │              ├─ARM
                      │  │              └─IAR
                      │  ├─GD32F4xx_standard_peripheral
                      │  └─GD32F4xx_usb_library
                      ├─Project
                      │  ├─Listings
                      │  └─Objects
                      └─User
                      

                      不难理解的是,CMSIS(Cortex Microcontroller Software Interface Standard) 目录中存放的是固件抽象层的代码。

                      所以,在 CMSIS 目录存放的是 core_cm4.h 、core_cm4_simd.h 、 core_cmFunc.h 、 core_cmInstr.h 这些头文件,它们为 Cortex-M 处理器系列定义了通用工具接口,使得开发人员可以为处理器和外设实现一致且简单的软件接口。

                      在 CMSIS\GD\GD32F4xx\ 目录中存放的是针对 CMSIS 中存放的抽象接口的具体实现,这些实现是根据不同的芯片来决定的。我们采用的是 GD32F407VE,故而,这些实现由兆易创新公司提供。

                      另外,SPL(Standard Peripheral Library)目录中存放的是 GD32 标准库文件。Project 目录就是 Keil 的工程目录,以及相关的临时文件。

                      设计好目录结构后,就可以将固件库中的模板代码拷贝到自己的工程中。

                      • 将固件库中的 Firmware 完整拷贝到项目中,名称也是 Firmware
                      • 将固件库中的 Template 中的代码拷贝到项目中的 User 中。包括:gd32f4xx_it.c 、gd32f4xx_libopt.h 、 main.h 、 systick.h、gd32f4xx_it.h、 main.c 和 systick.c

                        创建好的项目结构如下:

                        同时需要将文件设置到 Include Path 中,如下所示:

                        1. 修改主时钟频率

                        打开 system_gd32f4xx.h 文件,将 __SYSTEM_CLOCK_240M_PLL_25M_HXTAL 注释,这个时钟配置代表主频是 240MHz,晶振频率为 25MHz,但 天空星开发板-GD32F407VET6 的主频是 168MHz,外部晶振是 8MHz,所以,需要将 __SYSTEM_CLOCK_168M_PLL_8M_HXTAL 注释解开。如下所示:

                        4. 编写点灯代码

                        #include "gd32f4xx.h"
                        #include "systick.h"
                        #include 
                        #include "main.h"
                        void GPIO_config(void) {
                            // 1. 时钟初始化
                            rcu_periph_clock_enable(RCU_GPIOB);
                            // 2. 配置GPIO 输入输出模式
                            gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_2);
                            // 3. 配置GPIO 模式的操作方式
                            gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_2);
                        }
                        int main(void) {
                            systick_config();
                            GPIO_config();
                            while(1) {
                                // 设置PB2为高电平
                                gpio_bit_set(GPIOB, GPIO_PIN_2);
                                delay_1ms(1000);
                                // 设置PB2为低电平
                                gpio_bit_reset(GPIOB, GPIO_PIN_2);
                                delay_1ms(1000);
                            }
                        }
                        
                        1. 修改晶振频率值

                        从 main.c 文件打开 gd32f4xx.h 文件,

                        将晶振的频率改成 8MHz

                        1. 按 F8 键开始烧录,将程序烧录到开发板中,即可实现用户 LED 每隔一秒闪烁的效果。

                        排错

                        1. 编译报错,提示找不到 led_spark 函数。

                        因为本项目是从固件库中的模板代码中复制的代码,可能会出现问题。

                        点击编译按钮后,发现会有一个报错信息,说找不到 led_spark 函数,定位到该函数在 gd32f4xx_it.c 的 SysTick_Handler 函数中。这个是触发中断后调用的函数,用不着它就将其删除即可。

                        1. 烧录不了程序

                        检查是否是连接线是否正连接。同时在 Debug 的设置中使用 CMSIS-DAP Debugger 作为调试器。

                        在 Flash Download 中勾选 Reset and Run,使得烧录后直接运行。

转载请注明来自码农世界,本文标题:《立创·天空星开发板-GD32F407VE-环境搭建》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,121人围观)参与讨论

还没有评论,来说两句吧...

Top