您的位置 首页 国产IC

STM32 编译后不能运转的几个原因

一、编译和链接都可以通过,但uVisionMDK不能全速运行,一运行就停止了,原因在于Option->Target->CodeGeneration->UseMicroLIB复

一、编译和链接都可以经过,但uVision MDK不能全速运转,一运转就中止了,原因在于Option->Target->Code Generation->Use MicroLIB 复选框没有打钩,一般来说,针对一运转就中止的状况,将Use MicroLIB勾选之后,从头编译,运转就可以经过了。

二、仿真调试时没有问题,但经过JLink调试时呈现如下提示:

“Flash Download Failed-“Cortex-M3” ,则或许的原因是:Option->Debug->Use Driver for Flash Programming->Setting->Flash Download->Programming Algotithm 或 Option->Utilities->Use Driver for Flash Programming->Setting->Flash Download->Programming Algotithm没有增加相应类型的芯片FLASH阐明,一般在这两个选项卡中别离点击ADD,增加STM32F10x High-density Flash 即可。


三、调试时,程序总是中止在LDR R0, =SystemInit 句子,原因如下:仓库空间默许的太小

默许startup_stm32f10x_hd.s中 Stack_Size EQU 0x00000400,假如改大之后,或许调试就可以正常运转。

四、调试时,程序中止在HardFault_Handler的问题(引证网上的总结)

最近调试UCGUI和UCOSII,程序不可思议的死掉了,用JLINK调试,发现进入了HardFault_Handler,首要

原因有两个,仓库溢出和数组越界,很不幸的是这两种状况都被我碰到了。
榜首次是用UCGUI在一个button上显现文字,发现字符串显现不全,只显现榜首个字符,在发动文件

startup_stm32f10x_md.s中修正“Stack_Size EQU 0x00000200”,将仓库改大点,改为

“Stack_Size EQU 0x00000400”后显现正常。
第2次是UCGUI和UCOSII联合调试时,也进入了HardFault_Handler,这次原因是数组越界,在一个函数中

界说了一个数组ya[10],界说了一个计数变量count,因为没有初始化count,导致count的值一开始就大于数

组鸿沟,导致数组越界,初始化count=0后,程序正常。

我在调试的进程中,界说了两个结构体的指针变量,然后对这两个指针变量赋值,在履行榜首个赋值句子的时分,程序中止在HardFault_Handler,最终的解决办法是将结构体的指针变量改为一般变量,赋值进程不再呈现意外。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/263210.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部