GD32F4(9):GD32f4出现上电不工作,必须按复位程序才能跑起来

news2024/11/17 16:03:11

GD32:上电不工作,需要按一下复位按键程序才能跑起来

文章目录

  • GD32:上电不工作,需要按一下复位按键程序才能跑起来
    • 1.问题描述
    • 2. 我的调试思路
      • 2.1 第一步,排除电源问题
      • 2.2 第二步,排除复位电路的问题
      • 2.3 第三步,分析启动过程
    • 3 .总结

1.问题描述

绘制一个gd32450的pcb板子,结果烧录程序后发生下面事情:

  1. 上电程序不能正常启动或者偶尔可以正常启动一次,很随机。
  2. 当上电后程序不启动的时候,我再按一下mcu的reset按键,程序就能正常启动了。
  3. 当我debug调试的时候,回回都能正常启动,根本定位不到问题

2. 我的调试思路

首先在板子里面下载一个最简单的程序,led闪烁程序。通过观察led是否闪烁,来断定程序是否正常启动。

2.1 第一步,排除电源问题

首先我怀疑的是我的电源在供电的瞬间是不是出现了波动,导致mcu死机了,后来我用示波器看,发现电源虽然是曲面上升的,但是没有出现波动,同时在5毫秒内,电源就达到了稳定,因此排除了电源的问题。

2.2 第二步,排除复位电路的问题

既然按一下复位键就会正常,那会不会是复位引脚电平的问题,因此我用示波器同时捕获VCC和reset引脚在上电瞬间的电平变化,发现如下图:
在这里插入图片描述

也挺正常的,因此排除了复位引脚引发的问题。

2.3 第三步,分析启动过程

其实当我排除电源、复位引脚问题后,我就迷茫了,因此我就分析mcu在启动的时候,都会使用那些资源,会不会是上电瞬间资源没有准备好,导致启动失败,对着电路板,思来想去也只感觉也只用到了外部晶振,电路图如下:
在这里插入图片描述

可是因为我晶振选择的封装比较小,示波器探头实在是连接不上,再加上我选择的是32M的晶振,若用杜邦线可能会影响带宽,从而测量不出来结果,因此我决定先从程序下手。

因此我就修改了程序,采用内部晶振来为mcu提供时钟,结果发现,上电程序运行了,好了。那么就是晶振的问题了。

在开始的时候我没有怀疑晶振,是因为我每次按下复位程序都可以正常运行,因此说明晶振应该是正常的,在加上这款晶振我以前在stm32上经常使用,因此根本就不会怀疑它,可是现在这种现象,应该就是供电的时候,晶振没有准备好,于是我分析了一下时钟配置的程序,详见我另一篇文章:GD32F4(5):GD32F450时钟配置为200M过程分析。

在时钟配置函数有下面一点代码:

    /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
    //等待外部高速时钟稳定,(当外部晶振稳定后,芯片将自动设置相关标志位,软件只需要不断读取这个标志位就可以知道时钟是否稳定)
    do{
        timeout++;
        stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB);
    }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));

    /* if fail */
    //若外部高速时钟异常,上面等待超时,则进入这里永远等待,系统会卡在while(1)里面
    if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){
        while(1){
            //若时钟没有准备好就会卡在这里         
        }
    }
    //运行到这里,说明外部高速时钟正常启动,下面就要按照时钟树,来配置系统和各个模块的时钟  

那么这个等待稳定的时间是由HXTAL_STARTUP_TIMEOUT来决定的,下面是它的定义:

/* define startup timeout value of high speed crystal oscillator (HXTAL) */
#if !defined  (HXTAL_STARTUP_TIMEOUT)
#define HXTAL_STARTUP_TIMEOUT   ((uint16_t)0x0800)
#endif /* high speed crystal oscillator startup timeout */

我们可以看到HXTAL_STARTUP_TIMEOUT的默认值是0x800,现在我将这个数改大为efff,如下:

/* define startup timeout value of high speed crystal oscillator (HXTAL) */
#if !defined  (HXTAL_STARTUP_TIMEOUT)
#define HXTAL_STARTUP_TIMEOUT   ((uint16_t)0xefff) //((uint16_t)0x0800)
#endif /* high speed crystal oscillator startup timeout */

现在运行,发现程序正常了。

3 .总结

一样的晶振,在stm32上就很正常,在gd32上,需要延长等待时间。

现在想来,好容易,

但是当刚出现问题的时候,我都快崩溃了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QUIC简介

一、概述、 QUIC(Quick udp Internet connection):快速UDP互联网协议。相比于当前广泛应用的http2tcptls有如下优势: 减少三次握手及TLS握手时间;改进拥塞机制;避免队头阻塞的多路复用;连接迁移…

一文了解riscv软件系列之linux内核编译运行

一、交叉编译工具链的安装 【推荐阅读文章】 代码大佬的【Linux内核开发笔记】分享,前人栽树后人乘凉! 一篇长文叙述Linux内核虚拟地址空间的基本概括 一文了解Linux内核的Oops 需要多久才能看完linux内核源码? 详细讲解磁盘及文件系统…

【antd vue pro】设置项目默认语言为中文:

文章目录一、官网文档:二、解决:1、在src\locales\index.js文件修改默认语言2、src\core\bootstrap.js文件,修改初始化的语言3、src\store\modules\app.js4、清空本地存储,然后npm run serve重启:5、遇到问题&#xff…

Linux文件权限管理:chomd命令和chown命令

Linux文件权限管理:chomd命令和chown命令前言介绍文件类型文件权限文件所属文件信息chomd命令chown命令前言 在服务器部署项目、安装应用会经常涉及到文件权限的问题,在此记录chomd命令和chown命令它们的用法及区别。 介绍 以下图为例,进行…

如何解决全局工业相机飞拍拖影问题

1.问题描述: 物体静态拍摄时图像正常,但是动态拍摄时会有拖影现象。 2.问题原因: 只要物体存在运动,拍摄就一定会存在拖影,那么如何判断飞拍项目能否使用?拖影是否会对飞拍造成影响呢?这就要看具体的检测…

Viterbi维特比译码误码率仿真,调制为QPSK,信道为高斯白噪声

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 整体思路如图1中所示, 其中输入序列使用randn函数来产生,卷积也采用matlab本身的函数conv,加性高斯白噪声用wgn函数来产生,由于实验的重点…

世上最全NVDIA GPU参数列表: 3090,4090, A40, A30,V100, A100, A800性能参数

-1)GeForce RTX 4090 GeForce RTX 4090 GPU 引擎规格:NVIDIA CUDA 核心数量16384加速频率 (GHz)2.52基础频率 (GHz)2.23显存规格:标准显存配置24 GB GDDR6X显存位宽384 位技术支持:Ray Tracing Core第 3 代Tensor Cores第 4 代N…

CRDB-多区域部署

多区域部署允许cockachdb数据库跨越多个地理区域。多区域部署的配置对集群的容错和区域性能有影响。一般来说,我们将一个cockachdb集群配置为多个区域,以实现以下两个目标中的一个或两个: 允许集群在其中一个区域的计算资源不可用时继续服务…

磨金石教育摄影技能干货分享|花朵怎样拍才能不凌乱

喜欢养花种花的朋友,除了享受花朵在自己精心培育下绽放之外,给爱花拍照发在朋友圈炫耀也是一大乐趣之一。 但是别看花朵静静地盛开,娇艳欲滴,想要拍得好看却不是一件容易的事。作为摄影小白常常遇到的情况就是,拍出的花…

即兴发言怎样避免语无伦次?记住这个即兴发言万能公式

作为PMO和项目经理,经常要组织和参与各种会议,在会议中难免需要即兴发言,但是很多人即兴发言时总语无伦次,不知所云,而PMO和项目经理又是依靠外在表现来体现自己的专业性的,这时候就很难获得被人的认可&…

Docker Desktop Installer 安装无反应的,如何解决?

docker教程 Docker 教程 | 菜鸟教程 下载地址: Docker Desktop 官方下载地址: Install on Windows | Docker DocumentationHow to install Docker Desktop for Windowshttps://docs.docker.com/desktop/install/windows-install/ 问题:出…

webpack

webpack一、前端工程化1、前端开发历程2、什么是前端工程化3、前端工程化的解决方案二、webpack的基本使用1、什么是webpack2、列表隔行变色例子3、安装和配置webpack1.安装webpack2.配置webpack4、webpack.config.js的作用5、配置webpack.config.js自定义打包入口和出口三、we…

乘用车排气系统流场的数值模拟

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 课题背景及意义 1 1.2 国内外研究现状 1 1.3 课题主要研究内容 2 第2章 流体力学及流场分析软件的介绍 4 2.1 概述 4 2.2 流体力学及应用现状 4 2.3 Solidworks软件的应用范围 5 2.4 Flow Simulation 软件简介 5 第3章 排气系统理论…

软件测试的行业现状,我们的未来在哪里?

1.现状 1.1建立软件测试团队的公司规模 可看出主要当前是以中小型公司为主,因为大厂毕竟就那么几个,数量少。 1.2软件测试团队的规模 可看出主要目前的软件测试团队主要是以50人以内的团队为主(外包除外)。 1.3各公司软件测试工作的规范程度 可看出大…

优化器scipy.optimize参考指南

原文:https://mp.weixin.qq.com/s/BDHXQHXSzDk-RTi-VNMNEw 1 scipy.optimize简介 该scipy.optimize包提供几种常用的优化算法。 该模块包含: 1、使用多种算法(例如BFGS,Nelder-Mead单形,牛顿共轭梯度,C…

在线预约系统开发的用途_分享在线预约小程序的作用

在微信小程序上进行在线预约,不管是商家还是顾客,都可以自由选择时间,顾客还可以通过预约小程序,了解到所选服务的详情和功能特色,不必等到去店内听介绍,顾客能节省等候时间,商家能解放招待人力…

【34-业务开发-基础业务-属性组和基本属性-属性组和基本属性建立关联-属性组和基本属性解除关联-未关联属性查询-确认新增】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

【动手学深度学习】权重衰减(含Pytorch从零开始实现的源代码)

目录:权重衰减一、理论知识二、高维线性回归的实现步骤2.1 准备数据2.2 初始化模型参数2.3 定义L2L_2L2​范数惩罚2.4 定义训练代码实现2.5 是否加入正则化2.5.1 忽略正则化2.5.2 加入正则化三、简单实现四、源代码一、理论知识 前面我们已经介绍学习了过拟合的问题…

从发现问题到创造价值 数据智能如何助力商家双11高质量增长?

近年来,随着消费者的购买行为趋于多样化,很多品牌商家开始布局多平台及多渠道的经营,但随之也带来跨平台多渠道经营的数据不互通、生意数字难以追踪的难题。许多商家也借助双11等大促节点,围绕线下和线上开展全域营销,…

[附源码]java毕业设计宿舍管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…