查看: 107|回复: 0

GD32使用经验分享——初识GD32F190

[复制链接]

主题

好友

4540

积分

状元

  • TA的每日心情
    奋斗
    昨天 07:39
  • 签到天数: 981 天

    连续签到: 3 天

    [LV.10]以坛为家III

    发表于 2016-5-17 15:22:09 |显示全部楼层
    首先感谢此次活动,使自己能对GD32F190有一个接触和学习的机会。最初GD32F190打动我的有两个地方,一个是由于它是国产的32位MCU,另一个则是因为它有较宽的工作电压,可达5V。这与我喜欢的另一款MCU(新唐MCU)有着相同的原因。毕竟在32位MCU的市场中,大家基本上都是基于相同的内核,只是在生产工艺和外设配备上稍有差异。
    此外,使自己敢于接触它的主要原因还在于它为学习与开发提供了较为完备的相关资料,否则一拿到板子就会陷入一种狼狈。在所提供的资料中包括:开发板资料、数据手册及固件库、选项及培训资料、应用软件等。
    从资料来看GD32F190有两种板子,一种是此次活动所提供的板子,尽管所配置的外设比较少,但自由扩展的空间很大,很少需要考虑引脚被占用的问题。另一种是评估板,它配置的外设十分丰富,开发和验证一些设计比较方便,无需做更多的外设配置,是很值得拥有的。
    拿到GD32F190开发板,除了欣赏它那红色的艳丽,第一件事当然就是上电看一看它的初始功能,按一下B4键,三个LED灯一起点亮;按下B3键,则三个灯一起熄灭。原来在程序中,并未启用B2键。

    接下来的工作就是建立编译环境并实现程序的下载功能,这是极为关键的,缺失了这一环节,后续则无法进行学习与开发。在这个过程中,要执行以下几个安装步骤:
    1)安装uVision V5.15或相近的版本
    2)解压并安装“MCU应用软件”目录下的Keil.GD32F1x0_DFP.2.0.0.pack
    3)解压“MCU开发板资料”目录下的CH340驱动,并视电脑的具体情况加以选择安装,从而实现虚拟串口通讯功能。
    4)解压“MCU开发板资料”目录下的GD32_CMSIS_DAP.rar以供使用。
    在安装正常的情况下,将电脑与开发板连接好,由设备管理器可见到虚拟的串口COM 3。

    准备好了开发环境,如何来检测下载功能呢?
    在GD32F190开发板所提供的资料中,共有3个版本的例程,分别是:
    1)GD32F190开发板的例程,它是验证开发板功能的基本例程,主要包括LED、KEY及UART。
    2)基于RTOS实时操作系统的例程,在使用时需对Example.h文件进行相应的调整,以测试对应的例程功能。默认的测试例程为CH13_BOARD_TEST_EXAMPLE,由语句
    #define EVB_EXAMPLE  CH13_BOARD_TEST_EXAMPLE来设置,位于example.h文件中。
    若想测试例程CH2_THREAD_EXAMPLE1,则要将上述语句改为:
    #define EVB_EXAMPLE  CH2_THREAD_EXAMPLE1
    3)基于GD32190R-EVAL-V1.1评估板的例程,由于硬件方面的差异,在使用时需进行相应的定义修改和调整,否则将影响效果的观察和分析。
    以LED灯为例,开发板上LD4~LD6分别连接PB8~PB10;而在评估板上有4个LED灯,分别连接PA11、PA12、PB6、PB7。

    使用本次的开发板可对其中的部分例程直接进行验证,有些则需要配置相应的外部器件,否则难以观察到执行效果。
    为了便于验证下载功能,验证例程可选取“MCU开发板资料”目录下的“GD32 Colibri-F190R8-Bare Metal代码\project\Colibri190\Project.uvprojx”。
    打开该项目工程,加以编译。在正常情况下,可顺利地通过编译。如出现异常,多数与uVision的安装目录有关,当它与Keil.GD32F1x0_DFP.2.0.0.pack默认安装目录不同时,会导致无法找到core_cmFunc.h和core_cmInstr.h的情况。解决的方法是重新设置相关文件的路径,或直接将这2个文件复制到core_cm3.h所在的CMSIS目录下。
    在下载前,应检查一下KEIL中选择的仿真器类型,方法是:使用USB线连接开发板与PC,在KEIL中若发现DAP设备,则说明驱程安装正确,其下载的设置情况如图所示。

    单击下载工具按钮,则能够完成下载。
    在下载后,要按一下复位键来观察例程效果,这是因为在下载设置中未选取“Reset and Run”的缘故。
    通过验证,可发现例程执行的是key_example.c。为什么led_example.c和uart_example.c均在项目工程中,而唯独单执行key_example.c呢?
    其关键也在于Example.h,是其中的“#define EVB_EXAMPLE  KEY_EXAMPLE”将编译方向指向了key_example.c的执行。若想测试led_example.c和uart_example.c,只需将上述语句改为“#define EVB_EXAMPLE  LED_EXAMPLE”或“#define EVB_EXAMPLE  UART_EXAMPLE”即可。这种使用方式在GD32F190中,是一种较为普遍的使用形式,值得注意呦!
    解决了编译和下载的问题,你手中的开发板才真正成为了一个工具。
    除了按键与LED灯实验,最具实验性的要数串行通讯与A/D转换测试了。
    打开“MCU数据手册及固件库”目录下的
    “GD_COLIBRI\Project\14_ADC_Conversion_Triggered_By_Timer\MDK-ARM\ Project.uvprojx”项目工程,它可让我们在没有外接显示器件的情况下,借助串行通讯功能将A/D转换的结果发送到电脑上。实验前,首先接好USB连线,然后打开串口助手并设置好相关参数。
    按下开发板的复位键,即可启动A/D转换,由串口助手我们可以见到转换结果。

    在该实验的基础上,我们还能把它转化为哪些应用呢?
    在常规的应用中,对模拟信号的采集是十分广泛的,我们可为它配置一个上位机软件来构成一个简单的数据采集系统。如用LabVIEW编写一个串口通讯程序来接收采集的数据,再将数据绘制出波形图以供观察和分析,这便是一个不错的用法。
    为了便于LabVIEW的分析处理,需对开发板的例程进行相应的修改,主要有两个地方:
    1)注释掉语句printf("\r\n ADC_Conversion_Triggered_By_Timer demo:\r\n");
    2)修改输出语句printf("\r\n ADC value is %x\r\n", *AD_Value);
    改为printf("%3X\r\n", *AD_Value);
    这样在LabVIEW接收时,就只是十六进制转换结果了,经转换可变为十进制数值来绘制波形图。


    在GD32F190的例程中,还有一个有意思的现象是没有直接给出每个例程的项目工程文件,为此需要自行创建,具体的处理方式有3种:
    1)依次在各例程的目录下,手动创建项目工程文件。
    2)复制Template目录下的MDK-ARM目录内容,然后粘贴到相应例程的main.c所在目录下。通过修改相关的路径设置来形成一个通用的模板,供使用时将这个模板的MDK-ARM目录粘贴到测试例程main.c所在目录即可进行编译处理。这样处理,会对例程的编译效率带来明显的提升。
    3)采用复制法,此法最简单。就是对带有项目工程文件的目录进行复制然后再李代桃僵。如图先复制Template目录,并更名为Template_t。将待编译例程的文件复制到Template_t目录下,这样就可利用MDK-ARM中的项目工程文件进行编译了。



    对于学习RTOS实时操作系统的用户,在“MCU开发板资料”的目录下可由
    “GD32_Colibri_F190R8_TROCHILI_V0.12_PRV4代码\trochili_v0.12_preview4_20160408\example”目录找到学习RTOS的例程。所附带的“第01章-嵌入式内核基础.pdf”是一个引导性的学习资料,详细的学习则以购置《嵌入式实时操作系统原理与最佳实践》为宜。所涉及的编译方法,已在前面做过介绍就不再多说了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|电路城

    GMT+8, 2019-5-22 01:57 , Processed in 0.105617 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部