一则STM32f103莫名反复复位的经验记录

2019-06-14来源: eefocus关键字:STM32f10  反复复位  经验记录

最近在调试STM32F103RBT6时,发现只要一打开AD就会反复复位,将断点设置到启动代码处,发现复位是非常有规律的,总是执行过断点后就又回到断点了。


找原理,查硬件,一切均没有问题。


最后怀疑到代码上来,因为AD采样是另外一个产品中正常使用移植过来的,分为三大部分:对AD涉及到的外设和存储等的初始化,对AD的采集与存储(主要是中断),对AD的数据进行计算分析。


将三大模块全部注释后再逐一开放,发现是对AD的初始化会导致复位。


对AD的初始化代码再全部注释后逐一开放,发现是启动定时器TIM4的代码会导致复位。


后来将与定时器有关的代码全部审查了一遍,也没有发现问题,同样的相似代码在TIM1上工作的很好。


查网上的相似问题,也没有改善这个结果。


这个问题弄了两天无结果,只能暂时搁置下来调试其它模块。


后来在调试其它函数的过程中,忽然想到原来的AD代码是用于103VET6的,移植到103RBT6上会不会是平台本身的特性导致的问题呢。仔细想了一下,AD中的C语言是平台无关的呀,那与平台有关的只有仿真器设置和启动文件了。


查看仿真器设置,均是103RBT6的正确设置,再查启动文件,哈,原来是把原来的startup_stm32f10x_hd.s错误地引用到这个工程中来了,感觉是因为启动文件中对各中断向量定义的不一致导致系统复位的,更换为正确的startup_stm32f10x_md.s文件后,再把原AD文件恢复为原版本,编译后启动调试过程,完美运行。


困扰了三天的问题解决了,怎一个爽字了得!


关键字:STM32f10  反复复位  经验记录

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

上一篇:STM32-点灯程序
下一篇:STM32软件复位的实现方法

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

推荐阅读

第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperiph_lib_um.chm》以及《Proprietary code read-out protection on microcontrollers》。51.1 选项字节与读写保护在实际发布的产品中,在STM32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部FLASH的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此,STM32芯片提供了多种方式保护内部FLASH的程序不被非法读取,但在默认情况下该保护功能
发表于 2019-09-20
第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的OV2640摄像头参数可查阅《ov2640datasheet》配套资料获知。STM32F4芯片具有浮点运算单元,适合对图像信息使用DSP进行基本的图像处理,其处理速度比传统的8、16位机快得多,而且它还具有与摄像头通讯的专用DCMI接口,所以使用它驱动摄像头采集图像信息并进行基本的加工处理非常适合。本章讲解如何使用STM32驱动OV2640型号的摄像头。45.1 摄像头简介在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在
发表于 2019-09-20
第45章 DCMI—OV2640摄像头—零死角玩转STM32-F429系列

第43章 RTC—实时时钟—零死角玩转STM32-F429系列

函数对每个外设都建立了一个初始化结构体,比如RTC_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如RTC_Init()调用,这些配置好的参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。初始化结构体和初始化库函数配合使用是标准库精髓所在,理解了初始化结构体每个成员意义基本上就可以对该外设运用自如。初始化结构体定义在stm32f4xx_rtc.h头文件中,初始化库函数定义在stm32f4xx_rtc.c文件中,编程时我们可以结合这两个文件内注释使用。RTC初始化结构体用来设置RTC小时的格式和RTC_CLK的分频系数。代码 431 RTC初始化结构体1 typedef st
发表于 2019-09-20
第43章 RTC—实时时钟—零死角玩转STM32-F429系列

第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的OV5640摄像头参数可查阅《ov5640datasheet》配套资料获知。STM32F4芯片具有浮点运算单元,适合对图像信息使用DSP进行基本的图像处理,其处理速度比传统的8、16位机快得多,而且它还具有与摄像头通讯的专用DCMI接口,所以使用它驱动摄像头采集图像信息并进行基本的加工处理非常适合。本章讲解如何使用STM32驱动OV5640型号的摄像头。46.1 摄像头简介在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在
发表于 2019-09-20
第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

第40章 CAN—通讯实验—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx 中文参考手册2》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。若对CAN通讯协议不了解,可先阅读《CAN总线入门》、《CAN-bus规范》文档内容学习。关于实验板上的CAN收发器可查阅《TJA1050》文档了解。40.1 CAN协议简介CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有
发表于 2019-09-20
第40章 CAN—通讯实验—零死角玩转STM32-F429系列

第31章 TIM—基本定时器—零死角玩转STM32-F429系列

了解。STM32F42xxx系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器,还有2个看门狗定时器。看门狗定时器不在本章讨论范围,有专门讲解的章节。控制器上所有定时器都是彼此独立的,不共享任何资源。各个定时器特性参考表 01。表 01 各个定时器特性其中最大定时器时钟可通过RCC_DCKCFGR寄存器配置为90MHz或者180MHz。定时器功能强大,这一点透过《STM32F4xx中文参考手册》讲解定时器内容就有160多页就显而易见了。定时器篇幅长,内容多,对于新手想完全掌握确实有些难度,特别参考手册是先介绍高级控制定时器,然后介绍通用定时器,最后才介绍基本定时器。实际上,就功能上来说通用定时器包含所有基本定时器功能
发表于 2019-09-20
第31章 TIM—基本定时器—零死角玩转STM32-F429系列

小广播

何立民专栏

单片机及嵌入式宝典

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

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