stm32调试模式下运行正常,上电自启动后运行不正常排查分析

2019-07-19来源: 互联网关键字:stm  2  调试模式  上电自启动

最近用到STM32F103的芯片,芯片单步正常,直接上电不能正常工作,加上程序中里面有点bug.然后就各种莫名奇妙。


后面,单步状态把bug找完之后,理论上上电就可以正常跑了。但是总会出现莫名其面的问题。


比如,①单步正常,直接跑就异常。 ② 异常指的是程序不是死机或者hardfault而是不按照预想的逻辑,但是还是看似正常的运行。


③用镊子复位,其可以正常起来,


百度了一下:https://blog.csdn.net/weibo1230123/article/details/80664466


多数是查时钟复位电源,但是无效。最后发现是外设启动慢导致的。



首先,明白一个道理,单步逻辑对的,那么程序就是对的。不要被奇异的表象所蒙蔽了,凡事要讲科学。


那么你要保证,调试模式你的程序不会出现指针溢出或者hardfault.


第二步,查时钟电源复位是否正常。


连接文章指出:JLINK调试程序,程序直接下载到SRAM,  BOOT1接地  在User FLash中启动。


那么重点检查 boot设计或者设置的是否 有问题。 


第三步,有没有启动耗时的外设。


我的外挂外设是一个外部的 电位计和一个串口屏。分析是电位计需要延时一段时间后能够正常的操作。


关键字:stm  2  调试模式  上电自启动 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic468541.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:几张图对比STM32各系列产品特性和外设兼容性
下一篇:STM32查看各个时钟系统--硬件调试结果--附带外设关系图

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32流水灯(基于库函数)
,GPIO_Pin_5);/ /PE.5 输出高}该代码里面就包含了一个函数 void LED_Init(void),该函数的功能就是用来实现配置 PB5和 PE5 为推挽输出。 这里需要注意的是: 在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟。 GPIO 是挂载在 APB2 总线上的外设, 在固件库中对挂载在 APB2 总线上的外设时钟使能是通过函数 RCC_APB2PeriphClockCmd()来实现的。LED.h程序代码书写#ifndef __LED_H#define __LED_H#include "sys.h"//LED 端口定义#define LED0 PBout
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
的驱动都要使能相应的时钟,首先看stm32系统的时钟框图经查阅资料可知,GPIO的时钟在APB2的外设时钟使能寄存器上,相关函数的定义在stm32f10x_rcc.h中 void   RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)其源代码为:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){  /* Check the parameters */ //检查值的有效性&nbs
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
STM32流水灯的几种实现方法
#include “stm32f10x.h”void RCC_Configuration(void);//2void GPIO_Configuration(void);//GPIOvoid Delay(u32 count){u32 i=0;for(;i<count;i++);}int main(void){ RCC_Configuration();//3LED_Init();while(1){GPIO_SetBits(GPIOA,GPIO_Pin_0);//第一灯亮Delay(800000); //延时GPIO_ResetBits(GPIOA,GPIO_Pin_0); //第一灯灭Delay(800000); //延时
发表于 2019-10-21
STM32学习探究:流水灯的实现
流水灯的实现这里我们使用 stm32mini 开发板实现外接流水灯,这里我采用了三个灯(说明问题就可以了)。外接的引脚分别为PA2,PB8,PC13三个引脚,在连接的时候,采用灯的正极接GPIO引脚,负极接GND(这是一种合理的方式)。注意:虽然接VCC也可以发光,但是这样不是合理的连接方式,而且,发光的情况刚好与接GND的情况相反。参考的相关资料如下:时钟使能:端口配置:端口输出:具体实现的代码如下://led.h文件#ifndef __LED_H#define __LED_H  #include "sys.h"//LED端口定义#define LED0 PAout(2)#define LED1
发表于 2019-10-21
STM32学习探究:流水灯的实现
STM32学习探究:流水灯的实现
流水灯的实现这里我们使用 stm32mini 开发板实现外接流水灯,这里我采用了三个灯(说明问题就可以了)。外接的引脚分别为PA2,PB8,PC13三个引脚,在连接的时候,采用灯的正极接GPIO引脚,负极接GND(这是一种合理的方式)。注意:虽然接VCC也可以发光,但是这样不是合理的连接方式,而且,发光的情况刚好与接GND的情况相反。参考的相关资料如下:时钟使能:端口配置:端口输出:具体实现的代码如下://led.h文件#ifndef __LED_H#define __LED_H  #include "sys.h"//LED端口定义#define LED0 PAout(2) #define LED1
发表于 2019-10-21
STM32学习探究:流水灯的实现
STM32流水灯的几种实现方法
#include “stm32f10x.h”void RCC_Configuration(void);//2void GPIO_Configuration(void);//GPIOvoid Delay(u32 count){u32 i=0;for(;i<count;i++);}int main(void){ RCC_Configuration();//3LED_Init();while(1){GPIO_SetBits(GPIOA,GPIO_Pin_0);//第一灯亮 Delay(800000); //延时 GPIO_ResetBits(GPIOA,GPIO_Pin_0); //第一灯灭 Delay(800000); //延时
发表于 2019-10-21
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved