查看: 1253|回复: 0
收起左侧

NucleiStudio的进阶学习

[复制链接]

  离线 

  • TA的每日心情
    慵懒
    2021-7-23 17:16
  • 签到天数: 17 天

    [LV.4]

    发表于 2021-6-3 17:52:18 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 草帽王子 于 2021-6-3 17:48 编辑

    修订历史


    版本号
    修订日期
    修订的章节
    修订的内容
    1.0.0
    2020/09/22
    N/A
    初始版本

    1. 从已有项目直接导入创建新项目


    本节将介绍如何使用IDE从已有项目直接导入创建新项目,本文以RV-STAR的项目包为例进行导入,项目包存放在(https://github.com/riscv-mcu/Nuclei-Studio_IDE-Project-Package)。如图 1‑1所示,如需其它项目包请与芯来科技联系。

    在基于Windows的Nuclei Studio IDE开发环境中,如果用户使用“无模板手动创建工程”,也需要加载此项目包中的nuclei-sdk文件夹,相关内容会在下一节中具体介绍。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(1)
    图 1‑1 位于github上面的项目包


    将nuclei-eclipse_demo.rar压缩包下载解压后,内容如图 1‑2所示,分别为:

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(2)

    图 1‑2 选择导入的项目



    • 项目包的描述文件.setting,.project和.cproject
    • 项目包的Debug设置文件*.launch
    • nuclei_sdk文件夹

    该文件夹下存放部分SDK源代码。
    • application文件夹


    此文件夹包含hello_world样例程序的main函数源代码。

    下一步导入下载好的项目包,导入步骤如下:
    • 在菜单栏中选择“File—>import”。
    • 如图 1‑3所示,选择“Existing Project into WorkSpace”后,点击“Next”。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(3)

    图 1‑3选择导入的方式



    点击“Browse”,选择需要导入的项目路径,如图 1‑4所示,
    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(4)

    图 1‑4选择需要导入的项目



    需要的导入的项目成功被IDE识别,点击“Finish”如图 1‑5所示
    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(5)

    图 1‑5识别出要导入的项目



    在IDE的项目资源管理器中显示导入项目的目录结构如图 1‑6所示。已有项目的Nuclei SDK文件夹仅包含helloworld使用到的文件,需要更多的Nuclei SDK源码请访问Github(https://github.com/riscv-mcu/hbird-sdk)获取源码。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(6)

    图 1‑6显示项目的文件结构



    2. 无模板手动创建项目


    本节将介绍如何使用手动方式在Nuclei Studio IDE创建一个用户自定义的Hello World项目。该方法除了创建项目之外,还需要手动设置各种选项和路径,详细步骤如下。

    2.1. 手动创建项目


    在菜单栏中选择“File—> New —> C/C++ Project”。如图 2‑1所示。


    如图 2‑2所示,在弹出的窗口中设定如下参数。

    • Project name:项目命名,这里我们命名为2_helloworld。
    • Use default location:如果勾选了此选项,则会使用默认Workspace文件夹存放此项目。
    • Project type:选择“Hello World RISC-V C Project”。

    然后点击Next进入下一步

    如图 2‑3所示,在弹出的窗口中设置Hello World项目的基本信息。
    • 确保“Source”选项内容为空,直接单击“Next”进入下一步。


    如图 2‑4所示,在弹出的窗口中设置项目的调试或者发布属性。

    • 该步骤可以使用默认信息不做任何修改,直接单击“Next”进入下一步。
    • 在弹出的窗口中设置项目所使用的RISC-V工具链。
    • 此处不要配置,直接选择“Finish”,至此便完成了Hello World项目的创建。
    • 创建完成的Hello World项目界面如图 2‑5所示。
    • 新建一个application文件夹。如图 2‑6,在工程处右击选择New —> Folder,输入application,点击“Finish”完成新建工程,如图 2‑7。将main.c拖入application文件夹完成文件分类。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(7)

    图 2‑1新建C/C++ Project

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(8)

    图 2‑2设置C Project项目名和类型

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(9)

    图 2‑3设置Hello World项目的基本信息

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(10)

    图 2‑4设置项目的调试或者发布属性

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(11)

    图 2‑5创建完成Hello World项目的界面

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(12)

    图 2‑6打开新建文件夹

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(13)

    图 2‑7完成新建文件夹



    2.2. 配置项目的nuclei_sdk

    本节介绍如何将nuclei_sdk加入到项目中,SDK的具体内容本文不做详细介绍,可以参考https://doc.nucleisys.com/nuclei_sdk/index.html。如果需要使用SDK的其他源文件,请到Github获取全部的Nuclei SDK源码,链接如下:https://github.com/Nuclei-Software/nuclei-sdk。本节仅介绍将nuclei_sdk中helloworld需要的文件加入到项目的步骤,具体步骤如下:

    • 进入Nuclei Studio的2_helloworld项目,按照如下步骤添加nuclei_sdk源文件。
    • 如图 2‑8所示,在Project Explorer栏中选中2_helloworld项目,单击鼠标右键,选择“Properties”打开工程设置页面。
    • 如图 2‑9所示,在弹出的窗口中单击“Resource”,在右侧的Location栏目中单击其最右侧的箭头图标 Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(14) ,则会弹出文件窗口进入2_helloworld项目的文件夹位置。
    • 将图 1‑1中介绍的nuclei-eclipse_demo.rar压缩包中的nuclei_sdk文件夹复制放于2_helloworld项目的目录下,如图 2‑10所示。
    • 回到Nuclei Studio,在Project Explorer栏中选中2_helloworld项目,单击鼠标右键,选择“Refresh”,如图 2‑11所示。
    • Refresh之后2_helloworld项目的下便可以看到nuclei_sdk文件夹,如图 2‑12所示,至此便完成了nuclei_sdk源文件的导入。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(15)

    图 2‑8打开工程设置选项页面

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(16)

    图 2‑9在弹出窗口进入hello_world项目的文件夹位置

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(17)

    图 2‑10 添加nuclei_sdk文件夹

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(18)

    图 2‑11刷新工程

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(19)

    图 2‑12 新建项目目录下的文件夹



    3.1. 配置项目的编译和链接选项


    请参考第三章,Nuclei Studio编译选项设置。

    3. Nuclei Studio编译链接选项设置


    3.1. 配置项目的编译和链接选项

    为了使项目源代码能够被正确编译,需要配置编译和链接选项。


    注意:本节中设置的编译与链接选项均为GCC工具链的常用选项,与在Linux环境中使用时的同名选项含义一致,本节在此不做赘述介绍。

    配置编译与连接选项的步骤如下:

    • 在Project Explorer栏中选中2_helloworld项目,单击鼠标右键,选择“Properties”。
    • 在弹出的窗口中,展开C/C++ Build菜单,单击“Setting”,在右侧的Tool Settings栏目中进行设置。
    • 如图 3‑1所示,选中Target Processor,我们的内核是N205,因此需要按照图所示勾选配置选项,分别如下。
    • Architecture:选择RV32I。
    • Multiply extension(RVM):需勾选。
    • Atomic extension(RVA):需勾选。
    • Compressed extension(RVC):需勾选。
    • Integer API:选择“ILP32”。
    • Floting Point ABI:none。
    • Code model:选择“Medium Any”。
    • 单击右下角的“Apply”按钮。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(20)

    图 3‑1配置Target Processor选项



    如图 3‑2所示,选中“Optimization”,按照图所示勾选配置选项。

    Optimization Level:选择Optimization Most (-O2)。


    依次勾选:
    • Function Sections (-ffunction-sections)
    • Data Sections (-fdata-sections)
    • No common unitialized (-fno-common)

    注意:上述选项均为通用的GCC编译优化选项,请用户自行查阅GCC手册了解其含义。

    单击右下角的“Apply”按钮。
    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(21)

    图 3‑2配置Optimization选项



    如图 3‑3所示,选中Debugging,按照图中所示勾选配置选项,分别为:
    • Debug Level:选择Default (-g)。
    • 单击右下角的“Apply”按钮。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(22)

    图 3‑3配置Debugging选项



    选中GNU RISC-V Cross C Linker的General。

    如图 3‑4所示,按照如下步骤设置链接器的所需的链接脚本。
    • 选中右上角的加号按键。
    • 在弹出的窗口中单击“Workspace”按钮。
    • 这里我们使用FLASHXIP下载模式对应的gcc_gd32vf103_flashxip.ld文件。在弹出的窗口中选择NucleiStudio文件包中的nuclei_sdk/SoC/gd32vf103/Board/gd32vf103v_rvstar/Source/GCC文件夹下 gcc_gd32vf103_flashxip.ld文件。
    • 设置完毕请单击右下角的“Apply”按钮。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(23)

    图 3‑4配置链接脚本



    如图 3‑5所示,按图所示勾选配置选项,分别如下。
    • Do not use standard start files (-nostartfiles) 。
    • Remove unused sections (--gc-sections)。
    • 单击右下角的“Apply”按钮。


    注意:上述选项均为通用的GCC链接选项,请用户自行查阅GCC手册了解其含义。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(24)

    图 3‑5配置链接的General选项



    如图 3‑6所示,选中GNU RISC-V Cross C Linker的Miscellaneous,按照图所示勾选配置选项。
    • 勾选“Use newlib-nano”。
    • 因为Hello World程序的Printf不需要打印浮点数,所以不要勾选“Use float with nano printf”。
    • 单击右下角的“Apply”按钮。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(25)

    图 3‑6配置链接的Miscellaneous选项



    3.2. 配置项目的包含路径和文件


    为了能够正确编译nuclei_sdk文件夹中的源文件,需要按照如下步骤配置项目的包含路径和包含文件。

    如图 2‑8所示,在Project Explorer栏中选中2_helloworld项目,点击鼠标右键,选择“Properties”。


    在弹出的窗口中,展开C/C++ Build菜单,单击“Setting”,在右侧的Tool Settings栏目中进行设置。

    如图 3‑7所示,选中GNU RISC-V Cross C Assembler的Includes,按照图中所示配置包含文件,步骤如下。
    • 在Include paths栏目单击加号键。
    • 在弹出的窗口中单击“Workspace”,弹出Folder selection窗口。
    • 在Folder selection窗口中选择项目的nuclei_sdk目录下的NMSIS>Core>Include文件夹。
    • 在右下角单击“Apply”完成配置。

    采用上述方法,依次添加nuclei_sdk目录下的nuclei_sdk/SoC/gd32vf103/Board/gd32vf103v_rvstar/Include,application ,nuclei_sdk/NMSIS/Core/Include,nuclei_sdk/SoC/gd32vf103/Common/Include和nuclei_sdk/SoC/gd32vf103/Common/Include/Usb文件夹作为包含路径,并采用同样的方法为GNU RISC-V Cross C Compiler的Includes栏目设置包含路径。设置完成后的界面如图 3‑8所示。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(26)

    图 3‑7设置GNU RISC-V Cross C Assembler的Includes栏目包含路径

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(27)

    图 3‑8设置GNU RISC-V Cross C Compiler的Includes栏目包含路径



    4. 基于已有的Makefile创建项目


    本节将介绍如何使用已有的Makefile在Nuclei Studio IDE创建一个使用Makefile的Hello World项目。请先下载Nuclei SDK,Github链接为:https://github.com/Nuclei-Software/nuclei-sdk。该方法除了创建项目之外,还需要手动设置各种选项和路径,这里以helloworld为例,详细步骤如下。

    4.1. 手动新建项目

    在菜单栏中选择“File—> New —> Makefile Project with Existing Code”。如图 4‑1所示。

    如图 4‑2所示,在图标1处输入工程名,这里我们命名为nuclei-sdk。在图标2处输入SDK的实际路径。在图标3处选择“RISC-V Cross GCC”。点击图标4完成新建项目。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(28)

    图 4‑1新建基于Makefile的工程

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(29)

    图 4‑2设置工程选项



    4.2. 设置Makefile路径和Build选项


    右击新建好的工程,选择“Properties”打开设置页面,如图 4‑3,选择“C/C++ Build”,在“Build Location”中选择“Workspace”。在弹出的弹窗中选择“application –> baremetal –> helloworld”点击“OK”再点击“Apply”保存。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(30)

    图 4‑3配置Makefile路径



    如图 4‑4,在“C/C++ Build”中选择“Behavior”栏目,确保勾选“Build(Incremental Build)”选项并输入“all SOC=gd32vf103 BOARD=gd32vf103v_rvstar DOWNLOAD=flashxip”。完成后点击“Apply”保存修改。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(31)

    图 4‑4配置Build选项



    5. 工程内各文件夹内容介绍


    模板工程包含两个文件夹:application(用来存放应用文件)和nuclei_sdk(用来存放工程使用到的SDK文件)。application文件夹一般包含main.c等文件,不同工程其包含的内容不尽相同,在这里不做一一介绍。本节会较详细的介绍nuclei_sdk的内容。

    由于nuclei_sdk文件夹仅包含当前工程使用到的sdk文件,所以不同工程此文件夹内容会有所不同。本节介绍Nuclei SDK中例程中使用到的部分文件。

    NMSIS:全称Nuclei MCU Software Interface Standard,实际工程中仅包含NMSIS的部分文件。

    Core:NMSIS-Core为基于Nuclei N/NX级别处理器的设备实现了基本的运行系统,允许用户访问处理器核心,并且为外设提供硬件抽象层。

    DSP:包含使用NMSIS-DSP库的头文件,仅在使用DSP库时添加。

    NN:包含使用NMSIS-NN库的头文件,仅在使用NN库时添加。

    Library:包含编译好的DSP和NN库,仅在使用DSP和NN库时添加。

    OS:包含操作系统的文件。Nuclei SDK提供了操作系统的例程,包括FreeRTOS,UC/OS II和RTThread。使用不同的操作系统需要包含对应名字的文件夹。

    SoC:包含gd32vf103芯片相关的SoC部分,使用时只需添加对应芯片的文件夹。下文对SoC文件夹内容分别进行介绍。

    gd32vf103:存放gd32vf103相关内容。
    • Board:存放开发板相关内容。
    • Gd32vf103v_rvstar:存放RV-STAR相关内容,包括OpenOCD的cfg文件。
    • Include:包含硬件抽象层的头文件部分。
    • Source:包含硬件抽象层的实现部分。
    • GCC:用于存放GCC编译器使用的链接脚本。


    Common:存放驱动,启动文件,桩函数,中断处理函数。

    • Include:驱动头文件部分。有关驱动索引请参考第6章。
    • Source:包含系统相关函数,启动文件,驱动实现部分,桩函数。
    • Drivers:包含驱动函数实现部分。
    • GCC:包含启动文件和异常处理和中断处理部分。
    • Stubs:包含桩函数。

    以上为工程常用的文件部分,想要获取Nuclei SDK的全部源码请到Github(https://github.com/Nuclei-Software/nuclei-sdk)或码云(https://gitee.com/Nuclei-Software/nuclei-sdk)下载。想要更深入了解Nuclei SDK可以阅读Nuclei SDK在线文档(https://doc.nucleisys.com/nuclei_sdk/)。

    想要获取NMSIS的全部源码请到Github(https://github.com/Nuclei-Software/NMSIS)或码云(https://gitee.com/Nuclei-Software/NMSIS)下载。想要更深入了解NMSIS可以阅读NMSIS在线文档(https://doc.nucleisys.com/nmsis/)。


    6. 驱动索引


    RV-STAR外设部分驱动对应头文件在nuclei-sdk\SoC\gd32vf103\Common\Include路径下,内核部分对应头文件在nuclei-sdk\NMSIS\Core\Include路径下。

    外设部分驱动索引:


    外设名称
    Api所在头文件名
    adc
    gd32vf103_adc.h
    bkp
    gd32vf103_bkp.h
    can
    gd32vf103_can.h
    crc
    gd32vf103_crc.h
    dac
    gd32vf103_dac.h
    dbg
    gd32vf103_dbg.h
    dma
    gd32vf103_dma.h
    exmc
    gd32vf103_exmc.h
    exti
    gd32vf103_exti.h
    fmc
    gd32vf103_fmc.h
    fwdgt
    gd32vf103_fwdgt.h
    gpio
    gd32vf103_gpio.h
    I2c
    gd32vf103_I2c.h
    libpot
    gd32vf103_libpot.h
    pmu
    gd32vf103_pmu.h
    rcu
    gd32vf103_rcu.h
    rtc
    gd32vf103_rtc.h
    spi
    gd32vf103_spi.h
    timer
    gd32vf103_timer.h
    usart
    gd32vf103_usart.h
    wwdgt
    gd32vf103_wwdgt.h

    有关各驱动api,详见misc文件夹的rvstar_misc文件夹内的《GD32VF103_Firmware_Library_User_Guide_V1.0.pdf》。


    7. Nuclei Studio新建Debug Configuration


    通过Nuclei Studio新建并配置Debug Configuration内容的步骤如下。


    • 如图 7‑1所示,在菜单栏中选择“Run—>Run Configurations”。
    • 如图 7‑2所示,在弹出的窗口中,如果没有当前工程的调试设置内容,右键单击“GDB OpenOCD Debugging”,选择“New”,将会为本项目新建出一个调试项目“1_helloworld _demo Debug”,如图 7‑3所示。确保“Project”是当前需要调试的工程,“C/C++ Application”中选择了正确的需要调试的ELF文件。
    • 如图 7‑4所示,选择调试项目“1_helloworld _demo Debug”的Debugger菜单,在Config options栏目中填入-f "nuclei_sdk/SoC/gd32vf103/Board/gd32vf103v_rvstar/openocd_gd32vf103.cfg",以确保OpenOCD使用正确的配置文件。这里的配置文件(nuclei_sdk/SoC/gd32vf103/Board/gd32vf103v_rvstar/openocd_gd32vf103.cfg )根据实际工程中openocd的配置文件路径而定。


    如果当前内核是RISC-V 32位内核,请确保Commands内容包含set arch riscv:rv32


    如果当前内核为64位,应确保替换为set arch riscv:rv64。RV-STAR是32位内核。

    • 如图 7‑5所示,选择调试项目“1_helloworld _demo Debug”的Startup菜单,确保“Debug in RAM”,“Pre-run/Restart reset”,“Set Breakpoint at Main”和“Continue”被勾选。
    • 如图 7‑5,完成后点击右下方“Apply”保存设置。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(32)

    图 7‑1单击“Run Configurations”进行下载

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(33)

    图 7‑2添加新的GDB OpenOCD Debugging

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(34)

    图 7‑3 GDB OpenOCD Debugging栏目下的hello_world项目Debug

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(35)

    图 7‑4配置hello_world_demo Debug的参数1

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(36)

    图 7‑5配置hello_world_demo Debug的参数2

    8. Nuclei Studio中J-Link使用RTT打印输出


    RV-STAR也支持使用J-Link调试。前往SEGGER官网J-Link页面(https://www.segger.com/downloads ... ndDocumentationPack),根据自己的操作系统下载最新的J-Link驱动并安装。注意,J-Link的版本必须高于v6.62版本。


    因为使用J-Link是用的跳线接到JTAG上,所以串口输出没有连接,如果想看到打印信息,需要使用J-Link的RTT打印输出,请按照以下步骤配置。


    打开当前工程的设置页面,如图 8‑1,在“Resource”选项点击红框标注的图标快速打开工程所在的目录。如图 8‑2,在“nuclei_sdk/SoC/gd32vf103/Common/Source/Stubs”路径下新建一个“SEGGER”文件夹,此文件夹用来存放RTT相关文件。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(37)

    图 8‑1打开工程所在目录

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(38)

    图 8‑2新建“SEGGER”文件夹


    安装完成后打开J-Link驱动的根目录,将“Samples -> RTT”路径下的“SEGGER_RTT_V680d.zip”解压缩(具体压缩包名可能因版本不同而变化)。解压缩后文件内容如图 8‑3,将RTT文件夹下的“SEGGER_RTT.c”,“SEGGER_RTT.h”和“SEGGER_RTT_Conf.h”三个文件以及Syscalls文件夹下的“SEGGER_RTT_Syscalls_GCC.c”这些文件复制到之前新建的SEGGER文件夹中,最后如图 8‑4所示。在IDE中打开“SEGGER_RTT_Syscalls_GCC.c”,如图 8‑5,注释“#include \<reent.h>”所在的这一行。

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(39)


    图 8‑3压缩包内文件内容

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(40)

    图 8‑4复制后SEGGER文件夹内容

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(41)

    图 8‑5注释不使用的头文件

    文件添加完成后添加SEGGER文件夹路径至include,如图 8‑6,打开当前工程的设置页面,添加SEGGER文件夹路径至include中。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(42)

    图 8‑6添加SEGGER文件夹路径至Include中

    接下来移除原有的write函数。如图 8‑7,在“nuclei_sdk/SoC/gd32vf103/Common/Source/Stubs”下的“write.c”文件处右击,选择“Resource Configurations –> Exclude from Build”。如图 8‑8,选择“Select All”,点击“OK”。以后如果想切换回使用串口打印,可以使用相同的方式移除SEGGER文件夹并把“write.c”文件添加回工程。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(43)

    图 8‑7打开Exclude from Build

    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(44)

    图 8‑8移除write.c文件

    9. Nuclei Studio中导入其他例程


    这里介绍如何在helloworld工程中导入board labs中的Timer PWM例程。


    GD32VF103单片机提供一个16位高级定时器(TIMER0),四个16位通用定时器(TIMERx=1,2,3,4)和两个16位基本定时器(TIMER5和TIMER6)。一般定时器,也就是TIMERx=1,2,3,4,可用于各种用途,包括一般时间,输入信号脉冲宽度测量或输出波形产生,如单个脉冲产生或PWM输出,多达4个独立通道的输入捕获/输出比较。通用定时器也支持编码器接口与两个输入使用正交解码器。


    这里Timer1的三个通道分别于led相连,并分别将这些引脚命名为TIMER1_CH1, TIMER1_CH2, TIMER1_CH3。这里使用到了GPIO和Timer的驱动,分别在gd32vf103_gpio.h和gd32vf103_timer.h文件中可以找到对应api。有关api的详细内容请参考rvstar_misc文件夹内的《GD32VF103_Firmware_Library_User_Guide_V1.0.pdf》文件。


    打开board labs获取例程源码,其链接如下:github(https://github.com/Nuclei-Software/nuclei-board-labs)码云(https://gitee.com/Nuclei-Software/nuclei-board-labs)。下载源码并解压缩,打开timer_pwm文件夹,将main.c的内容覆盖至helloworld工程application文件夹下main.c文件中。


    清理工程后重新编译工程,编译无误后按照之前的教程调试运行,可以看到其运行结果如图 9‑1。可以观察到三色切换的呼吸灯即正确导入了Timer例程。


    Nuclei Studio IDE-NucleiStudio的进阶学习risc-v单片机中文社区(45)

    图 9‑1三色切换的呼吸灯


    其他例程源码与board labs位置相同,如果想要获取其他例程介绍,请阅读board labs在线文档(https://doc.nucleisys.com/nuclei_board_labs/index.html)。







    上一篇:NucleiStudio的快速上手
    下一篇:GD32VF103C-START开发板 IDE 快速上手
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条


    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 12:58 , Processed in 0.377509 second(s), 47 queries .

    快速回复 返回顶部 返回列表