本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:考试结束就睡觉

大纲

  • 开箱问题
  • 环境搭建以及创建第一个project
  • 串口问题
  • 重定向问题
  • 总结

开箱问题

收到开发板,开发板长这样:

开发板是没有焊接排针的,所以想要开始开发,连接一些传感器,摄像头,屏幕等外设,就需要先焊接排针。由于我家中没有电烙铁,也已经毕业了,因此这就成为了遇到的第一个问题。
解决方法;
(1)找嵌入式行业的同学帮忙焊接下
(2)某鱼上直接搜代焊,多问几家,可以找到合适的。焊接排针属于比较简单的活,价格不建议超过10元。

环境搭建及创建第一个project

排针焊接好后,就开始准备开发了,接下来就得搭建环境了。
搭建环境包括以下几点;

(1)Keil安装:

建议安装高版本的,5.3以上的,我用的5.37的。需要安装包的可以加我QQ 984719097

(2)安装芯片pack包

pack包可以从https://aijishu.com/a/1060000000356925下载,选第8个选项 GD32F4xx AddOn中的 GigaDevice.GD32F4xx _DFP.3.0.0.pack ,如下图所示:

下载到本地直接安装即可。

(3)demo程序下载

首先将demo下载下来,然后按此路径打开:\GD32F4xx_Demo_Suites_V2.6.1\GD32427V_START_Demo_Suites\Projects 可以看到F427V_START有6个demo,我们先将第一个demo下载到板子上。
下载前注意事项:
demo中的代码是keil4编写的,因此,想要让demo能下载,建议参考【GD32F427开发板试用】+demo的正确打开方式(一),转换成keil5,再配置下GDlink,就可以点击下载了。

(4)创建project

demo程序下载后,我们验证了开发板的基础功能,接下来就是创建自己的project了。
首先,keil5点创建项目,再选择芯片:

接着引入文件,第一次创建project,我们使用官方的固件库和demo内的文件完成project的搭建:
固件库需要用到的目录有:

接着我们开始创建,参照下图的顺序:

首先点击1所在的图标,然后点击2修改project name,接着点击3按钮,新增代码目录。我们将代码设计成4个目录:
APP(应用目录)
BSP(板级别文件的目录)
FMW_CORE(内核相关文件目录)
FMW_PERI(外设相关文件目录)
创建完代码目录,向每个目录中添加对应的文件。
此项目我们参照固件库中的GPIO的例程,如下所示:

例程中的文件包括了应用文件和板级别文件,应用文件main.c添加到APP目录,其余板级文件添加到BSP。
除了这些文件外,还要去utilities中添加F427的头文件,但此目录下,只有f450的文件,如下所示:

因此,我们可以去demo的utilities中添加F427的文件,如下图所示:

接着添加 FMW_CORE内核相关文件目录,在固件库的Firmware\CMSIS\GD\GD32F4xx\添加内核文件和.s汇编启动文件,在Firmware\GD32F4xx_standard_peripheral添加此project涉及的外设,如uart,gpio,exit等。如下图所示:

创建完project,如下图所示:

接着我们开始编译,报了一些错误,找不到头文件,因此我们需要对project做一些配置:在C/C++处设置头文件路径,如下所示:

将BSP,内核,外设的头文件路径都包含进来。再次编译,依旧报错:

原来是头文件包错了,修改main.c,改为#include “gd32f427v_start.h”,继续编译,还是报了140多个错误。其中有个错误叫:
…/Firmware/CMSIS\core_cm4.h(1473): error: unknown type name ‘inline’
经过百度,这个错误是由于编译器导致的。Keil5目前使用的Compiler6,我们要用编译器5来编译。因此,需要安装编译器5,编译器5的安装文件,可以去嵌入式小学生公众号,回复ARMCC即可获得,下载后直接安装,在project配置中就会出现2个编译器,如图所示:

用编译器5,此project就正常编过了。

串口问题

刚拿到板子的时候,看到板载glink,我以为这个glink也集成了USB转串口,因此就照着网上的代码,尝试串口收发数据,但是经过一段时间的验证,一直收不到数据,经过群里大佬的提醒,去看了下原理图,没有USB转串口的模块,这意味着,想要使用串口调试,必须外接一个转串口工具。这就是我遇到的第3个问题,串口。我在网上找了些资料,又在某宝下单了一个CH340,如下图所示:

这个芯片有5个引脚,2个VCC(5V/3.3V),1个GND,1个RXD,1个TXD。
它和F427的接线方法如下:
CH340 F427
VCC3.3 ------> VCC3.3
GND ------> GND
TXD ------> RXD(PB7)
RXD -------> TXD(PB6)
CH340一端接F427,一端通过USB口接电脑,同时F427也通过USB供电。如图所示:

之所以选择PB6和PB7,作为USRT0的收发引脚,是因为PA9和PA10不能使用,串口验证代码如下:

#include "gd32f4xx.h"
#include "gd32f427v_start.h"
#include "systick.h"
#include <stdio.h>
#include <string.h>/*!\brief      main function\param[in]  none\param[out] none\retval     none
*/
void USART_INIT()
{rcu_periph_clock_enable(RCU_GPIOB);启用外设时钟功能rcu_periph_clock_enable(RCU_USART0);gpio_af_set(GPIOB,GPIO_AF_7,GPIO_PIN_6);//端口复用为串口模式gpio_af_set(GPIOB,GPIO_AF_7,GPIO_PIN_7);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6);//设置GPIO模式gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);//设置GPIO输出类型和速度gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_7);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);usart_deinit(USART0);//复位串口0usart_baudrate_set(USART0,115200U);//设置串口0的波特率//usart_word_length_set(USART0,USART_WL_8BIT);//设置传输数据长度//usart_parity_config(USART0,USART_PM_NONE);//设置奇偶校验位//usart_stop_bit_set(USART0,USART_STB_1BIT);//设置停止位usart_receive_config(USART0, USART_RECEIVE_ENABLE);//使能串口接收功能usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);//使能串口发送功能usart_enable(USART0);//使能外设}
void USART_TransmitString(char *String)
{while(*String){usart_data_transmit(USART0,*String++);while(usart_flag_get(USART0,USART_FLAG_TC)==0);}
}
int fputc(int ch, FILE *f)
{    usart_data_transmit(USART0,(uint32_t)ch);    while(RESET == usart_flag_get(USART0,USART_FLAG_TC));return ch;
}
/* retarget the C library printf function to the USART */int main(void)
{uint16_t rx_data = 0;USART_INIT();while(1){USART_TransmitString("这是一个串口测试\r\n");//数据接收while (usart_flag_get(USART0, USART_FLAG_RBNE) == RESET);rx_data = usart_data_receive(USART0); //获取字符 //发送数据    usart_data_transmit(USART0, (uint8_t)rx_data);while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));printf("串口重定向测试\r\n");}}

验证结果如图所示:

重定向问题

在验证串口的时候,还发现了一个问题,在使用pritf重定向时,串口会收发失败,即:

int fputc(int ch, FILE *f)
{    usart_data_transmit(USART0,(uint32_t)ch);    while(RESET == usart_flag_get(USART0,USART_FLAG_TC));return ch;
}
printf("串口重定向测试\r\n");

经过上网查找,最终找到了解决方法:
即配置project设置中target的use microLib,勾选上即可。如下所示:

总结

到目前为止,解决了一些问题,但还有一些问题还在探索中:
(1)兆易创新提供的一个软件GD32 All-In-One Programmer识别不了串口,BOOTLOADER已按照手册配置
(2)串口出现乱码的问题。
接下来的目标是:
(1)解决以上问题
(2)实现一个ADC采集噪声数据,传到上位机软件,分析波形的小应用
今天就先写到这里吧

参考资料:

  1. 郭天祥《GD32F303功能解读合集》
  2. 记帖 《GD32固件库开发》
  3. 极术社区GD32F427测评贴

【GD32F427开发板试用】+GD32F427开发以来遇到的问题以及解决方案相关推荐

  1. 【MM32F5270开发板试用】快速移植STM32应用到MM32F5270(以OLED为例)

    本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:@#@ 本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活 ...

  2. 【GD32F427开发板试用】5. SPI驱动TFTLCD屏幕

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:hehung 之前发帖 [GD32F427开发板试用]1. 串口实现scanf输入控制L ...

  3. 【GD32F427开发板试用】FreeRTOS移植工程

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:kings669669 前言 为了方便需要FreeRTOS,附上移植完毕的工程,方便大家 ...

  4. 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:chenjie [GD32F427开发板试用]一.环境搭建与freertos移植 [GD ...

  5. 【GD32F427开发板试用】三、USB转CAN功能开发与试用总结

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:chenjie [GD32F427开发板试用]一.环境搭建与freertos移植 [GD ...

  6. 【GD32F427开发板试用】INA226完成电流电压采集

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:จุ๊บ冰语 前言 本次有幸参与并通过了极术社区组织的[GD32F427开发板试用]活动 ...

  7. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  8. 鸿蒙开发板能干什么,【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)...

    小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功 ...

  9. 免费!200块全志XR806开源鸿蒙开发板试用

    一板难求的当下,如果上天突然降临一次开发板免费用的活动,我只想说三个字:手慢无! 为了让开发者小哥哥小姐姐们体验搭载安谋科技STAR-MC1处理器,面向IoT领域的全志XR806开发板,极术社区特推出 ...

最新文章

  1. 2021年黑龙江省智能车邀请赛
  2. 深究angularJS——(上传)FileUploader中文翻译
  3. javascript json_JavaScript 之 JSON.parse 导致大数精度丢失问题的解决方案
  4. Go 还是需要泛型的
  5. poi读取合并单元格
  6. python 笔记 之 练习答案-ABCD乘以9=DCBA
  7. HiHocoder 1036 : Trie图 AC自动机
  8. GPU大百科全书 第二章 凝固生命的光栅化
  9. ccs 中文乱码_关于字符集和乱码的思考
  10. 面试中问到fiddler的那些问题
  11. 每日工作问题记录总结(好习惯 打卡2/?)
  12. Glide学习(二)—缓存策略
  13. 教你快速查询大量圆通快递单号的物流信息
  14. python延迟几秒_python 中止几秒执行下一步、
  15. 为什么创业?创业能给你带来什么?
  16. 时间函数的用法(ctime)
  17. BackFile备份文件
  18. CentOS7内网穿透(公网访问内网)SakuraFrp-frpc配置(从0开始)
  19. CICS(cics路况快速检测系统)
  20. 天哪!几行js代码就可以实现拳皇小游戏

热门文章

  1. MATLAB将两条曲线画在同一个图上
  2. 浩辰3D软件新手福利:压花功能的使用技巧
  3. 学习笔记----ArrayList
  4. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
  5. 电信上信号4g显示无服务器,电信手机信号显示4G+是什么网络?很多人不清楚,原因在这里...
  6. 程序员必读的十本书籍推荐
  7. Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别
  8. 曾经有一份真诚的爱情放在我面前,我没有珍惜[方言版]
  9. 苹果x出现绿线怎么修复_苹果x听筒声音小,苹果x通话声音小怎么办
  10. 有关《家》的经典歌曲_带“家”字的歌曲有什么