从零开始创建GD32F4系列单片机工程模板移植涂鸦MCU-SDK
从零开始创建GD32F4系列单片机工程模板&移植涂鸦MCU-SDK
兆易创新的GD32单片机在中国MCU厂商市场中一直有着不算太小的份额。最近由于ST系列单片机的大幅度涨价,国产MCU凭借价格优势逐渐扩大了在开发群体中的影响力和接受度。
本文将教大家如何从0开始上手GD32系列单片机,并移植涂鸦MCU-SDK来对接涂鸦WB3S wifi模块,快速接入涂鸦云。
工程搭建
本文选用的MCU型号为GD32F450,按照以下流程操作即可创建一个Keil5环境的工程模板:
- 前去官网下载GD32F4xx的环境支持包和标准固件库:
- 按照自己使用的IDE选择相应的支持包进行安装:
- 创建一个文件夹,并在其中按照下图创建数个子文件夹:
- 将下载的GD32F4xx_Firmware_Library_V2.1.2\Firmware\CMSIS文件夹下的所有内容拷贝到我们自己创建的CMSIS文件夹下,同时将GD32F4xx_Firmware_Library_V2.1.2\Template中的gd32f4xx_libopt.h文件拷贝到CMSIS\GD\GD32F4xx\include中:
- 将GD32F4xx_Firmware_Library_V2.1.2\Firmware\GD32F4xx_standard_peripheral文件夹拷贝到Peripherals文件夹中:
- 将GD32F4xx_Firmware_Library_V2.1.2\Firmware\CMSIS\GD\GD32F4xx\Source\ARM中的文件拷贝到Startup中:
- 将GD32F4xx_Firmware_Library_V2.1.2\Template中的gd32f4xx_it.c、systick.c和它们对应的头文件都拷贝到User文件夹内,同时创建main.c文件:
- 打开Keil5,创建新工程,位置在刚刚创建的MDK-ARM文件夹里,然后选择对应的MCU型号。
- 打开Manage Project Items,添加如下Groups:
- 在每个组内添加如下文件:
(Peripherals组内添加Soure文件夹下所有源文件)
mcu_sdk内暂时是空的,到后面移植SDK的时候再说。
- 点击魔法棒,添加include paths:
- 在main.c文件中添加:
#include "gd32f4xx.h"
#include "systick.h"int main(void){while(1){}
}
点击编译,显示无报错,就完成了工程模板的创建。
MCU SDK移植
进入涂鸦智能IoT平台,点击创建产品。这里不用纠结产品品类的选择,重点是为了拿到MCU-SDK文件,实际使用时可以根据具体的产品修改sdk内部的pid即可适配自己的产品。
- 这里以普通的灯为例,选择照明->光源->自定义方案
- 输入任意产品名称,通讯协议选择 WiFi+蓝牙,确认创建。
- 跳出的功能添加页面直接点确定,点开硬件开发一栏,对接方式选择“涂鸦标准模组MCU SDK开发”,模组选择WB3S Wi-Fi&Bluetooth模组(在实际开发过程中可选择手上已有的涂鸦模组即可)
- 拉到页面最下方,在下载资料一栏点击下载全部:
- 在解压后的文件夹中找到mcu_sdk相关源文件和头文件,全部拷贝到我们创建好的GD32工程模板里的mcu_sdk文件夹里:
- 打开GD32工程,将mcu_sdk的源文件添加进对应组里,同时添加include paths:
点击编译,会崩出几个error,接下来就需要按照出error的地方的注释提示一步步修改代码。
uart_receive_input()
为串口接收数据处理接口,只需将它放进串口中断中即可,这里我们以串口0作为与通讯串口为例,首先在main函数中添加串口0初始化代码,并使能接收中断:
void system_init(void);
void uart_init(void);int main(void)
{system_init();while(1){}
}void system_init(void)
{/* configure systick */systick_config();/* USART interrupt configuration */nvic_irq_enable(USART0_IRQn, 0, 0);/* configure uart */uart_init();/* enable USART0 receive interrupt */usart_interrupt_enable(USART0, USART_INT_RBNE);}void uart_init(void)
{ /* enable USART clock */rcu_periph_clock_enable(RCU_USART0);/* connect port to USART0_Tx */gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_9);/* connect port to USART0_Rx */gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_10);/* configure USART Tx as alternate function push-pull */gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_9);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);/* configure USART Rx as alternate function push-pull */gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_10);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_10);/* USART configure */usart_deinit(USART0);usart_baudrate_set(USART0,115200U);usart_receive_config(USART0, USART_RECEIVE_ENABLE);usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);usart_enable(USART0);
}
- 然后在 gd32f4xx_it.c 文件中添加串口0中断处理函数,然后包含 wifi.h 文件并将
uart_receive_input()
接口添加进去,添加完成后,删除error注释即可:
/*!\brief this function handles USART RBNE interrupt request and TBE interrupt request\param[in] none\param[out] none\retval none
*/
void USART0_IRQHandler(void)
{if((RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) && (RESET != usart_flag_get(USART0, USART_FLAG_RBNE))){uart_receive_input((uint8_t)usart_data_receive(USART0)); }
}
再来看下一个errror:
由于我们上一步已经通过中断接收的形式实现了串口数据接收处理了,这个多字节处理我们可以不用,直接把error注释删除即可。
下一个:
按照提示将该接口放在main函数的while循环内即可,别忘了在 main.c 中包含 wifi.h 头文件。
再来看下一个error:
同样的,按照提示将该函数放到main函数开头部分即可。
然后是串口发送相关:
这里只需实现串口0的数据发送函数然后放进去即可。使用GD32的串口单字节发送的库函数,同时对发送情况做一个判断,添加代码如下:
void usart_sendbyte(unsigned char data)
{usart_data_transmit(USART0, data);while(RESET == usart_flag_get(USART0, USART_FLAG_TBE)){}
}
然后是DP数据点上报相关的:
这里我们可以直接注释掉error提示,在实际开发过程中再实现该功能即可。
最后是产测相关的:
一般开发者不涉及生产测试的话直接删除注释不用管就行。
修改完上述几处地方后,再次编译,显示error全部消除,至此涂鸦MCU SDK就已移植完毕,后续可使用涂鸦模组调试助手进行测试。涂鸦模组调试助手的使用方法可参考调试助手文档。
从零开始创建GD32F4系列单片机工程模板移植涂鸦MCU-SDK相关推荐
- 在Keil MDK中创建STM32F4系列的工程模板(标准外设库)
在Keil MDK中创建STM32F4系列的工程模板(标准外设库) 一.前往ST官网下载标准外设库 二.根据个人风格创建文件夹目录 三.创建MDK工程,创建分组 四.添加系统启动必要源文件 五.添加头 ...
- STM32F1xx系列单片机通过程序获取MCU信息
在使用STM32F1xx系列单片机时可以直接在指定地址中读取单片机相关信息,在参考手册上的相关介绍如下. 通过上面的介绍可以看到,直接去这些指定地址中读取数据,就可以获取到MCU的相关信息.下来就直接 ...
- STM32对接涂鸦MCU SDK实战教程
相信接触过涂鸦平台的工程师都会爱上这种自助式一站搞定的感觉.对于有基础的工程师,基本一天就可以实现手机联调.SDK包功不可没,这里对移植SDK的过程做个简要记录. 1.注册涂鸦开发平台账号,下载SDK ...
- 51单片机 | 单片机工程模板创建
文章目录 一.51 单片机工程模板创建 1.新建工程 2.选择CPU型号 3.给工程添加文件 4.配置魔术棒选项卡 5.修改编程区字体大小 二.reg52.h 头文件介绍 1.头文件作用 2.头文件内 ...
- 用pyocd读写gd32f4系列mcu的otp区
如前一篇文章所述,pyocd是一个调试.编程cortex-m单片机的简单.强大的工具,本文就结合实例讲解pyocd的一些用法. 使用j-link.dap-link等工具在keil或其它ide中调试单片 ...
- LiteOS移植到STM32F103系列单片机,非常简单
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LiteOS移植到STM32F103系列单片机 前言 一.下载老版本liteos 二.参考官方的推荐移植步骤 1.新建项目 1.1打开 ...
- 涂鸦Zigbee SDK开发系列教程——1.创建产品
使用涂鸦模组进行产品开发主要有三种不同的方式: 零代码开发:涂鸦提供可视化功能配置界面,无需任何编程经验,只需在线配置好产品的功能,即可完成固件开发,快速完成产品智能化. MCU SDK开发:在 MC ...
- 涂鸦蓝牙SDK开发系列教程——1.快速入门
本系列课程将介绍如何使用 涂鸦蓝牙模组及其 SDK 进行产品开发,帮助开发者更快掌握 涂鸦蓝牙模组.涂鸦蓝牙 SDK.涂鸦 IoT 平台.涂鸦三明治开发套件.涂鸦云模组烧录授权平台 等开发工具的使用方 ...
- access 导入 txt sql语句_从零开始学习 MySQL 系列索引、视图、导入和导出
阅读本文大概需要 8 分钟 前言上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识.作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会 ...
最新文章
- R语言单因素方差分析(One-Way ANOVA)实战:探索性数据分析(EDA)、单因素方差分析模型结果解读(检查模型假设)、分析不同分组的差异TukeyHSD、单因素方差分析的结果总结
- 《企业云桌面实施》-小技巧-04-VMWare Workstation-虚拟机强行关机开机
- 数据库表DML操作不了 可能是被锁了
- NoSQL数据库Redis使用命令简介
- Luogu P1031 均分纸牌(贪心)
- 声明为指针,定义为数组,声明为数组,定义为指针
- typora+picgo+gitee搭建免费图床纵享丝滑
- 神奇的文本编辑,惊人的移花接木 | ACM MM 2019 论文赏析
- getMap(Thread t)
- 中国创客面临无限挑战
- 2018蓝桥杯A组:分数(3种方法 循环累称 快速幂运算 移位运算)
- java如何重复userinput_如何使用Scanner Java重复读取用户输入
- 拓端tecdat|R语言文本挖掘使用tf-idf分析NASA元数据的关键字
- mxnet入门--第6篇
- 使用python控制其他软件运行并操作处理数据_Python 运行其他程序
- 2016年总结与2017展望
- 文本主题模型之LDA在搜狐新闻数据集上的实践
- Node.js + Web Socket 打造即时聊天程序
- element rules不生效
- Web自定义表单工具和协同办公系统之集成(1)