【GD32307E-START】解决上次的问题+例程测试
[复制链接]
上一篇文章中写到,在开发环境搭建中遇到了一点问题,具体就是在KEIL5里边安装了GD32的芯片包,但是却没办法在目标选项,也就是魔术棒里面选择DEVICE,如下图:
当时想了很多办法,也查了许多资料,始终没能解决,最后我下了一个办法,就是新建一个工程,然后在建立工程的时候就选择对应的芯片,试了一下,果然可行,于是就用这个方法继续进行了测试。但是后来我偶然在网上看到有人说,用KEIL打开早期的工程就会出现这个问题,我看了一下官方给的那些例程的时间,基本都是17年左右,也不算很早。但是因为他这个问题的解决方法很简单,于是我就尝试了一下,具体步骤如下:
点击 项目->管理->迁移到第五版格式
其实也就是把工程转化为KEIL5的格式,果然,这样操作之后,就能够选择DEVICE了
可喜可贺啊,困扰我许久的问题终于解决了,接下来就可以继续正常的进行我的测试了
先来把官方给的例程,也就是通过外部中断来控制板载LED灯的开关的这个程序编译下载进板子试试
选择好DEVICE之后我们打开Debug来设置一下仿真器以便下载程序
仿真器还是选择CMSIS-DAP,然后进入Setting
到Flash Download里面修改一下内存设置,内存选择GD32F30x,可以看到这个内存是1M字节,还是很给力的,一般的应用很难用得完了,然后把Reset and Run也选上,使得程序下载进去之后就复位板子开始运行。
接下来就是激动人心的第一次下载程序了
先点击编译,然后直接点击下载:
现在我们就来看一下板子,验证一下程序是否下载进去了
目前看来没什么问题,按一下按键试试:
Bingo!成了!这是我的一小步,却是这次评测的一大步!
至此,终于完成了一波三折的开发环境搭建,下面就可以步入正轨开始进行测试了。
先从简单的开始,改一改官方的例程,写一个简单的LED闪烁的程序吧。
先找到官方例程里面的操作LED的中断服务函数
把这两行注释掉,然后打开main程序
可以看到while循环这里是空的,在这里添加一点我们自己的程序,既然用了官方提供的库函数,那我们就先找一下操作IO口的函数有哪些,打开KEIL左边的函数参考,找到gd32f30x_gpio.c
可以看到这里的所有函数名都与STM32的标准库很类似,我们再打开一个STM32标准库工程的函数参考,对比一下两个芯片的库函数
可以看到,二者是非常相似的,只是GD32的库函数统一用了小写,可能是为了与STM32做个区分?我觉得这样的操作很没有必要,STM32这样大小写并存是有利于阅读的,毕竟看见大写可以在脑子里自动断词,而GD32这样,全部都是小写,看起来就比较费劲了,我个人认为没有必要为了不同而不同,这样的作法和抄了别人的作业,自己改一改字体有什么区别呢?我鼓励国产创新,但是如果是这样为了创新而创新,那就没什么必要了。
我们继续往下,找到
gpio_bit_reset(uint32_t gpio_periph,uint32_t pin)
gpio_bit_set(uint32_t gpio_periph,uint32_t pin)
这两条函数,然后把他们复制到主函数的while循环里面,然后再添加一个延时函数,这个延时函数标准库也为我们提供了,在systick.c这个文件下可以找到delay_1ms(uint32_t count)这个函数
写好的主程序如下
因为延时函数用到了systick,所以我们在main函数里面添加初始化systick的函数
systick_config();
然后还需要添加一下systick的头文件
#include "systick.h"
接下来就可以编译了
0错误0警告,下载!
可以看到板子上的LED在一下一下闪烁,闪烁的频率大概是一秒一次,符合我们的程序。本来在这里准备了一个视频,但是我好像不会上传视频,那就等以后再上传吧。
因为这块板子上只有一颗LED,也只有一个用户按键,想玩也玩不出什么花来,我们就不再折腾这个LED了。
在这里,我还要继续吐槽一下这块板子的硬件设计,可能是为了对齐之后好看一点,居然把RESET按键和用户按键并排放在了一起,我就想真的问一下这块板子的硬件设计师,您真的用单片机开发过吗?板子布局的时候真的不考虑一点点人机工程吗?
碎碎念的吐槽就到这里,在这篇文章里我主要介绍了上次搭建开发环境时遇到的问题的解决方法,并且编译下载验证了官方的例程,也写了一个小小的自己的程序对开发板进行了测试,在下一篇文章里我将测试一下我的测评计划之外的内容,DA转换,之前没有加上这一点是因为我刚把手头的泰克TBS1052B卖出去,没有可用的示波器,但是我前几天又买了一台便携的DScope的虚拟示波器。示波器刚刚拿到手,正好可以用来测试一下这块板子的DA转换功能,敬请期待!
|