- 博客(36)
- 资源 (23)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 GD32F103快速替换STM32F103
注:本文档仅针对GD32F103系列替代STM32F103系列一、相同点1)、外围引脚PIN TO PIN兼容,每个引脚上的复用功能也完全相同。2)、芯片内部寄存器、外部IP寄存器地址和逻辑地址完全相同,但是有些寄存器默认值不同,有些外设模块的设计时序上和STM32有差异,这点差异主要体现在软件上修改,详情见下文。3)、编译工具:完全相同例如:KEIL 、IAR4)、型号命名方式完全相同,所以替代只需找尾缀相同的型号即可,例如:STM32F103C8T6 与 GD32F103C8T6。5)、仿真
2020-10-21 17:59:49
47675
22
原创 GD32E230_timer2解析SIF通讯协议
背景最近客户在使用GD32E230解析SIF,想让帮忙写一个解析的demo。SIF协议简介懒得写和上传附件,直接截图了!环境搭建看着这个协议是不是很简单,直接找一个MCU(STM32F103ZET6)的PB2模拟一个协议,用GD32E230C8T6的TIMER2_CH1 (PB5)来进行解析.WINS:WIN10KEIL: V5.28仿真器:JLINK V9注意:E230开发环境有限制(KEIL至少需要V5.26,JLINK需要固件V9或以上)先上一个发送协议,代码如下:#incl
2022-04-01 11:44:41
2050
原创 安信可1.5---编译下载乐鑫ESP8266 RTOS SDK库
一、安装安信可一体化工具参考安信可官方博客:安信可IDE1.5二、下载乐鑫ESP8266 RTOS SDK库因为github下载太慢,经常下载不下来,这里使用gitee进行下载,请自行安装git工具。乐鑫ESP8266 RTOS SDK GITEE下载地址1、在需要下载SDK的文件下右击2、进行下载3、处理刚刚的报错a、进入刚刚下载的文件中b、修改.gitmodules文件将.gitmodules文件(文本编辑器打开即可)里面的内容完全替换成下面的内容:[submodule "
2022-03-04 18:15:26
2150
原创 GD32VF103开发环境简单介绍
GD32VF103开发环境简单介绍GD32VF103简介GD32VF103开发环境IDE使用前准备Nuclei Studio IDE1、软件下载2、打开工程GD32 Eclipse IDEGD32VF103简介GD32VF103系列MCU采用了全新的基于开源指令集架构RISC-V的Bumblebee处理器内核,是兆易创新(Gigadevice)携手中国领先的RISC-V处理器内核IP和解决方案厂商芯来科技(Nuclei System Technology),面向物联网及其它超低功耗场景应用自主联合开发的
2021-06-02 18:30:34
5854
4
原创 USB_IP cdc详解---usb_int.c
这里写目录标题源代码代码详解CTR_LP源代码/** ****************************************************************************** * @file usb_int.c * @author MCD Application Team * @version V4.0.0 * @date 28-August-2012 * @brief Endpoint CTR (Low and High)
2021-05-08 11:28:19
377
原创 USB_IP cdc详解---usb_sil.c和usb_mem.c
这里写目录标题源代码usb_sil.c代码详解USB_STL_InitUSB_STL_WriteUSB_STL_Read源代码usb_mem.c代码详解UserToPMABufferCopyPMAToUserBufferCopy源代码usb_sil.c/** ****************************************************************************** * @file usb_sil.c * @author MCD App
2021-05-08 11:06:05
671
2
原创 USB_IP cdc详解---usb_ist.c
usb_istr.c详解一、源代码二、宏观介绍三、细节详解1、SOF中断2、CTR正确传输中断3、RESET复位中断4、ERR错误中断5、WKUP唤醒中断6、SUSP挂起中断7、ESOF期望帧首中断一、源代码/** ****************************************************************************** * @file usb_istr.c * @author MCD Application Team * @ve
2021-04-29 18:20:23
588
原创 USB-cdc描述符详解
设备描述符:/* USB Standard Device Descriptor */const uint8_t Virtual_Com_Port_DeviceDescriptor[] = { 0x12, /* bLength 该描述符总长度*/ USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType 设备描述符类型,这里是设备描述符为0x01*/ 0x00, 0x02, /* bcdUSB = 2.00 USB协议
2021-04-22 15:25:11
5351
1
原创 KEIL下使用BAT文件生成BIN文件
一、运行环境WINs:WIN10MDK:keil528MCU:GD32F303创建一个项目,此项目下有两个工程GD32303C_APP和GD32303C_boot。二、BAT常用指令介绍1、创建BAT文件这个比较简单,先创建一个txt文件,然后将后缀直接改成.bat即可,也可以使用另存为.bat文件2、使用BAT文件生成bin文件直接在创建的bat文件中添加如下的代码。E:\keil528\ARM\ARMCC\bin\fromelf.exe这个是绝对路径,既keil安装的路径,根据情
2021-03-01 19:03:06
2338
2
原创 GD32E103/F303系列替换STM32F103
注:本文档仅针对GD32E103/F303系列替代STM32F103系列说明:GD32E103/GD32F10x/GD32F30x都是和STM32F10x系列是完全PIN TO PIN兼容的,因此GD32F30x系列不是完全和STM32F30X系列兼容的。GD32F103是GD早期的产品,GD32E103和GD32F303是对GD32F103的升级和优化,所以4者是兼容的,虽然内核不同,但是通用外设几乎很少涉及到内核部分,在时间急迫的情况下可以使用ST的库开发。一、相同点1)、外围引脚PIN TO
2020-12-17 13:48:08
29581
17
原创 GDMCU---SWO代替Printf
测试环境:编译器:KEIL 5.28芯片:GD32F103 E103 F303仿真器:JLINK V91、使用SWO模式需要多占用一个IO-PB32、勾选MicroLIB3、重构printf函数4、工程配置5、输出结果
2020-12-03 16:26:44
942
原创 如何排查程序中的Hard fault错误
一、Hard fault产生原因硬件方面常见原因:1.电源设计有错误,造成器件供电不稳;2. 电源质量不好,文波,噪声过大;3. 器件接地不良;4. 对于带有Vcap引脚的器件,管脚处理不当;5. 电路中有强干扰源,对器件造成干扰;软件方面常见原因:6.使用了空指针;7.对地址偏移量的计算有误;8. 数组越界导致程序出错;9. 动态内存使用不当,导致访问了已释放的内存地址;10. 通过地址访问了已失效的局部变量;一般因为硬件造成Hard Fault错误的可能性较低,90%都是软件原
2020-09-30 16:28:44
2145
原创 调试神器--->JScope
一、简介J-Scope是SEGGER公司推出的,可以在目标MCU运行时,实时分析数据并图形化显示的软件。它不需要SWO或目标上的任何额外引脚等功能,但使用可用的标准调试端口。J-Scope可以以类似示波器的方式显示多个变量的值。它读取elf或axf文件并允许选择多个变量进行可视化。只需将目标微控制器连接到J-Link并启动J-Scope。只需几个步骤即可配置J-Scope,并选择要显示的符号。配置可以存储在项目文件中,以便于重复使用和移植。在J-Scope中选择的每个符号都可以单独配置。上下移动图形以更改
2020-09-28 18:32:08
16738
1
原创 JLINK-->JFlash烧录固件
一、简述当仅仅拥有一个固件,比如HEX或BIN文件,如果将它烧录到CPU呢?这里使用J-Link flash解决这个问题,而且可以用于小批量的生产中。二、测试环境OS:WIN7JLINK固件版本:v9.70SEGGER版本:V6.40开发板:GD32F303C-EVEL三、操作步骤1>在开始—>SEGGER—>JFlash打开,创建一个工程,方便以后使用,如下图:然后弹出如下对话框,先使用默认的这些选项,点击OK2>Options—>Project se
2020-09-27 15:43:53
12528
原创 ARM Cortex-M 系列 MCU 错误追踪库 --- CmBacktrace
一、CmBacktrace简介一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。主要特性如下:支持的错误包括:断言(assert)故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)故障原因 自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;输出错误现场的 函数调用栈(需配合 ad
2020-09-26 21:38:24
1512
2
原创 FreeRTOS任务挂起和恢复
挂起和恢复函数:/* 功能:挂起一个任务; 参数:xTaskToSuspend xTaskToSuspend = xTaskCreate(); xTaskToSuspend = xTaskCreateStatic(); xTaskToSuspend = xTaskGetHandle(); 或通过xTaskCreate & xTaskCreateStatic两个函数的最后一个形参 这四种方式获得要挂起任务的句柄。 若xTaskToSuspend = NULL 挂起任务本身*/vo
2020-09-26 14:01:45
461
原创 J-Link RTT使用
一、测试环境1> 测试环境系统:WIN7MDK:keil v5.26开发板:GD32F303C-EVAL固件库:V1.0.2FreeRTOS版本:V10.4.0支持内核: ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33 and Renesas RX100/200/600更多详情可以参考官网:RTT中文可以参考:仿真器代替串口打印2> 找到JLINK驱动的安装目录。解压后可以看到如下图所示文件,Example目录是参考的demo,RTT和Sy
2020-09-23 22:10:14
1952
原创 GD32使用CRC的操作方法
GD32的CRC(循环冗余校验)计算单元使用一个固定的多项式发生器从一个 32 位的数据字中产生 CRC 码。在众多的应用中,基于 CRC 的技术还常用来验证数据传输或存储的完整性。CRC主要特性1> 32位数据输入/输出寄存器。对于32位的输入数据,从数据输入到得出计算结果,需要4个AHB的时钟周期;2> 配有与计算无关的独立8位寄存器,可以供其他任何外设使用;3> 使用 CRC-32 (以太网)多项式: 0x4C11DB7X^32 + X^26 + X^23 + X^22
2020-09-23 16:04:40
3477
原创 JFlash合并两个BIN文件
应用于IAP升级,将bootloader与app合并成一个文件,方便烧录。合并hex文件操作一样,只是不用在输入起始和偏移地址。1、打开J-Flash V6.40如下图:没有安装JLINK驱动的客户,自行百度JLINK V640下载安装,版本理论上没有要求,新的最好。2、创建工程,可以选择不创建型号可以选择一个flash大小一样的即可3、打开文件bootloader文件,地址0x08000000选择对应的文件设置其实地址0x080000004、打开APP程序,File—>
2020-09-23 15:55:23
2524
2
原创 JFlash软件解锁GD32MCU
JFlash解除GD32读保护如果用户添加了读保护或者误操作等导致的下载不了,可以先进行解锁尝试,步骤如下:1、打开J-Flash V6.40如下图:没有安装JLINK驱动的客户,自行百度JLINK V640下载安装,版本理论上没有要求,新的最好。2、打开界面如下,操作如下:3、选择芯片:这里选择ST的型号,为啥选ST的,一方面因为GD的型号不全,另一方面选择GD的型号可能解锁指令不能用,后面新的J-Flash版本应该会逐步完善GD。下面给出一些对应的参考型号,不唯一,大体原则就是FLASH大
2020-09-23 15:50:41
13094
5
原创 FreeRTOS静态创建任务
一、静态方式创建任务和删除任务1>测试环境系统:WIN7MDK:keil v5.26开发板:GD32F303C-EVAL固件库:V1.0.2FreeRTOS版本:V10.4.02>需要满足条件条件一:需要在FreeRTOS.h或FreeRTOSConfig.h中定义#define configSUPPORT_STATIC_ALLOCATION 1条件二:加载头文件时,加载FreeRTOS.h必须在task.h之前,如下:#include "FreeRTOS.h"#
2020-09-23 14:38:20
1963
原创 GD32F303移植FreeRTOS
GD32F303移植FreeRTOS一、移植环境系统:WIN7MDK:keil v5.26开发板:GD32F303C-EVAL固件库:V1.0.2FreeRTOS版本:V10.4.0二、添加FreeRTOS到工程1> 在准备好的工程下创建一个FreeRTOS文件夹下,这这个文件夹下分别创建src、portable、include三个文件夹,如下图:...
2020-09-22 17:00:59
9080
9
原创 ESP-01F串口连接百度云
1、创建百度云创建百度云账号—》创建项目—》数据型设备网址1:84zab0i.mqtt.iot.gz.baidubce.com端口号:1883网址2:84zab0i.mqtt.iot.gz.baidubce.com端口号:1884后面登录时任选其中一个就可以,两者的区别就是网址使用了ssl加密创建用户—》用户列表—》身份列表—》测量列表上图红框中的为用户名:84zab0i/zh...
2020-02-29 15:45:33
962
原创 ---GD32F3X0---TIMER14使用TIMER1的代码移植,无法输出PWM
问题描述:使用TIMER1可以正常输出PWM,但是将TIMER1替换成TIMER14却无法输出PWM,两者有什么不一样的吗?TIMER1代码如下:/*! \brief configure the GPIO ports \param[in] none \param[out] none \retval none */void gpio_co...
2020-02-28 18:18:13
1749
1
原创 ---GD32 MCU---RTC使用LXTAL时钟源异常
问题描述:客户在使用40K的内部时钟时钟发现计时异常,然后切换到LXTAL时钟,时钟停止无法运行。原因:40k时钟计数异常,是应为RTC的时间存储格式是BCD码,需要转换,客户没有转换,使用LXTAL异常是应为库函数错误,导致时钟无法选择LXTAL作为RTC的时钟。解决方案:库函数版本:2017-06-06, V1.0.0, firmware for GD32F3x0RCU_RTCSR...
2020-02-28 18:01:01
2097
原创 ---GD32 MCU---SPI硬件CRC校验失败
问题描述:使用SPI的CRC校验始终失败,发送的SPI0发送和读取回来的数据错位了两个字节,导致CRC校验不对。原因:SPI0使用16位格式发送数据,但是客户在使能发送的数据之前,使用了SPI0按照8位格式发送了两个字节,SPI0进行CRC校验时将这两个字节也算进去了。解决方案:发送完8位格式的数据后,重新开关一次SPI0,清空SPI0缓存,即可!!!...
2020-02-28 17:57:11
1832
原创 ---GD32 MCU---SYSCFG相关寄存器无法写入
问题描述:客户在使用中断时,进行中断的相关配置,操作SYSCFG的相关寄存器,始终无法写入往SYSCFG的相关寄存器中写入非0的数据。原因:GD与ST的操作有差异,GD必须保证先打开外设时钟才能进行外设的相关配置,而ST则无此要求。解决方案:打开CFGCMP的时钟,如下图注意:GD的MCU,无论任何外设在配置前都必须先打开时钟,而ST无此限制。...
2020-02-28 17:54:11
1782
3
原创 ---GD32E230---读保护状态识别异常(库函数异常)
问题描述:程序上电判断是否是读保护状态,是,不再进行读保护设置,否则进行读保护设置,但是在每次判断时都是无保护状态,而实际已经是读保护状态了。原因:使用的库版本:\version 2018-06-19, V1.0.0, firmware forGD32E230解决方案:注意:1、E230必须使用keil5.26版本以上2、JLINK 必须是V9固件版本以上3、E230的前4K...
2020-02-28 17:51:02
1415
原创 ---GD32F103---使用ST库开发IAP运行在GD32上,APP无法正常运行
问题描述:使用GD103系列,使用GD的bootloader例程和IAP 的USB在线升级工具,对app程序进行升级,app程序使用ST的标准库进行编写,app不加偏移地址时可以正常运行,但是加载偏移地址后,由bootloader进行跳入后程序跑飞或串口打印信息不对原因:ST的RCC_CFGR寄存器和RCU_CFG0寄存器有差异,如图5-1,ST的1821位最大倍频系数为9,而且第28位为保...
2020-02-28 17:43:56
4330
原创 ---GD32F103---使用ST标准库提高系统时钟运行在GD32F103上
问题描述:使用GD32F103系列替代ST同等系列的MCU,使用ST的标准库,但是由于GD的主频比ST的主频高,需要使用ST的标准库提高到96MHZ.解决方案:SetSysClockTo96在相应位置添加这个宏定义。代码如下:static void SetSysClockTo96(void){ __IO uint32_t StartUpCounter = 0, HSEStatus =...
2020-02-28 17:37:07
3626
原创 ---GD32 MCU---TIMER1更新中断时间不准
问题描述:用户实用Timer1产生10ms的定时器中断,但是每次却产生了20ms的中断,而且无论如何更改分频系数和加载值定时时间都不产生变化。原因:客户缺少了自动重新加载的函数,导致定时器重新计数时不再是要求的值。解决方案:...
2020-02-28 17:33:14
2776
2
原创 ---GD32F450---bootloader跳转到app无法运行
问题描述:bootloader和app程序都能单独正常运行,但是在使用bootloader进行跳转时,程序跑飞。原因:bootloader在运行时已经进行了使能外部时钟、设置PLL为系统时钟的操作,但是在跳转到app程序后,app重新将系统时钟初始化,如图,系统重新使用了内部时钟,由于系统时钟较高(GD32450时钟为200M,ST的4系列频率低,所以不会出现这种现象),在还没有切换成功时就...
2020-02-28 17:28:51
5347
原创 ---调试异常---GD32进入仿真,未点击运行就开始自动运行
问题描述:当点击仿真按钮(如图1)进入仿真时,在不点击运行按钮的情况下自动开始运行(如图2),程序会进入死循环(如图3)。图1图2图三原因:外部晶振异常解决方案:1、使用示波器观察晶振是否起振,无起振,检查硬件电路设计,电容选择是否 合理;晶振是无源晶振还是有源晶振。2、更改宏定义使用内部晶振,看是否会出现这种状况。...
2020-02-28 17:22:21
2029
原创 ---复位现象---GD32 MCU插入SD卡MCU立刻复位
问题描述:程序运行正常,但是在插入SD卡的瞬间,单片机硬件复位,程序重新运行,之后状态一切正常,可以读取到SD卡。如果上电前插入SD卡,则一切正常。原因:使用示波器测试MCU电源,在SD卡插入瞬间,MCU电源电压跌落到2.5V以下,正常GD的大部分产品供电范围是2.6V~3.6V之间,低于2.6V会造成硬件复位。客户使用的5V转3.3V的LDO电压转换芯片电流过小,且电路中无大电容蓄流,导致...
2020-02-28 17:14:31
1486
原创 ---复位现象---GD32 MCU程序有时可以运行有时不能
问题描述:程序进行下载调试一切运行正常,但是在进行复位后,程序就跑飞了不能正常运行!更为奇怪的时有时又可以运行!原因:GD的MCU和ST有差异,ST上BOOT0引脚是内部默认拉低的,而GD的BOOT0状态是不定的,从ST转换过来时电路上未做适当修改,导致复位后偶尔可以进入主程序运行,偶尔又不行。解决方案:BOOT0使用10K下拉电阻,或直接接地。推荐前者!!!...
2020-02-28 17:07:05
5045
3
GD32F303_FreeRTOS10400_static_create_task.rar
2020-09-23
GD32F303_FreeRTOS10400_auto_create_task.rar
2020-09-23
GD32F303_FreeRTOS10400.rar
2020-09-23
E230read_protection.zip
2020-02-24
GD32E230_SPWM.rar
2020-02-24
GD32F303_LIteOS_no_interrupt.rar
2020-02-24
GD32F303C_LiteOS.rar
2020-02-24
GD32307C_RT_thread.zip
2020-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人