STM32 烧录程序后上电不工作,但调试模式下可正常工作的解决办法

原因1

学习STM32的时候遇到的小问题:

用CubeMX生成初始代码,程序内容只包括呼吸灯工作和一个中断调用printf重定向函数向串口发送内容;

在STM32F103C8T6最小系统板烧录程序后上电不工作,但调试模式下可正常工作

解决的办法是:勾选Use MicroLIB
在这里插入图片描述
参考链接:https://www.csdn.net/tags/MtjaYg1sNTgxNzMtYmxvZwO0O0OO0O0O.html

MicroLIB

如果你发现在Keil RealView MDK 中使用printf 函数,不能向串口输出信息,或者今后发现可以软件仿真,不能硬件仿真,MicroLib 提供了一个有限的stdio子系统,它仅支持未缓冲的stdin、stdout 和stderr。这样,即可使用printf()来显示应用程序中的诊断消息。

要使用高级I/O 函数,就必须提供自己实现的以下基本函数,以便与自己的I/O 设备(如串口)配合使用。为所有输出函数:fprintf()、printf()、fwrite()、fputs()、puts()、putc()和putchar()等需要实现fputc()函数。为所有输入函数:fscanf()、scanf()fread()、read()、fgets()、gets()、getc() 和 getchar()等需要实现fgetc()函数。由于MicroLib 进行了高度优化,以使代码变得很小。因此,MicroLib 不完全符合ISO C99 库标准,仅提供有限的支持,不具备某些ISO C 特性。

参考链接:https://www.cnblogs.com/sumsung007/articles/6566767.html

原因2

由于BOOT0悬空而导致的。BOOT0悬空时,其状态是不确定的,会导致程序无法从UserFlash中正常启动,就可能出现时好时不好的现象了

原因3

电源供电不稳定问题。

解决:
通过万用表测量各个模块电压,发现电压均正常值

原因4

复位信号不稳定
解决:
通过示波器观察、隔离复位信号、加滤波电容、换复位芯片等方法进行定位。

附录-- STM32执行代码初始化卡住现象

现象
STM32执行代码初始化卡住,或者上电卡住,或者复位卡住,导致代码不执行。
解决
1、检查自己的代码是否有中断,有中断的话,其初始化放在其他硬件初始化之后

即:中断的初始化放在进入while()循环之前,放在其他硬件初始化之后

卡住原因中断初始化之后,产生了中断,而其他一些硬件初始化都还没有完成

### 回答1: 要使用Keil5和J-Link烧录程序STM32上,需要按照以下步骤操作: 1. 打开Keil5软件,创建一个新的工程。 2. 在工程中添加需要烧录程序代码和相关的库文件。 3. 在Keil5的菜单栏中选择“Options for Target”,打开“Target”选项卡。 4. 在“Target”选项卡中,选择“Debug”选项卡,然后选择“Use J-Link/J-Trace”选项。 5. 点击“Settings”按钮,打开“J-Link/J-Trace Settings”对话框。 6. 在“J-Link/J-Trace Settings”对话框中,选择“Target Interface”选项卡,然后选择“SWD”或“JTAG”接口。 7. 在“J-Link/J-Trace Settings”对话框中,选择“Flash Download”选项卡,然后选择“Erase Full Chip”选项。 8. 点击“OK”按钮,保存设置。 9. 连接J-Link调试器和STM32开发板。 10. 在Keil5的菜单栏中选择“Flash”选项,然后选择“Download”选项。 11. 程序将被编译并下载到STM32芯片中。 12. 下载完成后,可以使用Keil5的调试功能来调试程序。 以上就是使用Keil5和J-Link烧录程序STM32上的步骤。 ### 回答2: Keil5是一款常用的C语言集成开发环境,而STM32是一种常见的嵌入式系统开发平台。在使用Keil5进行STM32开发烧录程序便是关键环节之一。下面将介绍如何使用J-Link烧录程序STM32上。 首先,需要安装好J-Link软件和驱动程序。之后打开Keil5,选择Project-Options for Target,在弹出的窗口中选择Debug-Settings。 在Debug Settings中,选择Use: J-Link/J-Trace,Interface: SWD,选择JTAG/SW两种模式中的SW方式。此,可以插入JLink,并点击Settings按钮,在弹出的选项中选择J-Link Debugger-J-Link Debugger Settings。选择Target-Settings,在Use: JTAG/SWD选择SWD,并在Speed下拉菜单中选择比较合适的频率(例如4000 KHz)。 之后,需要创建一个新的工程,并设置好相关的Target和Options。在Options中选择Use:J-Link Debugger,Interface:SWD。接着,将编译好的程序通过连接器链接成单个.hex文件,并保存到磁盘。在Output-Flash Memory中,配置好芯片的信息。 最后,在Keil5中选择Debug-Start/Stop Debug Session,在打开的J-Link Driver窗口中点击程序Load-File,并选择刚才生成的.hex文件,然后点击Program Flash。之后等待程序烧录完成即可。 总的来说,使用J-Link烧录程序STM32上需要在Keil5中进行相应的设置,包括调试设置、输出配置等等。操作稍加细心,一般能够顺利进行。 ### 回答3: Keil5是一款嵌入式开发工具,用于开发和调试嵌入式系统应用程序STM32是一种广泛使用的基于ARM Cortex-M内核的微控制器。如果需要将开发的应用程序烧录STM32芯片中,需要使用烧录器。J-Link是一种广泛使用的JTAG/SWD烧录器,可与Keil5集成使用。 使用Keil5和J-Link烧录程序STM32芯片的步骤如下: 1.首先连接J-Link调试器和STM32开发板。连接完成后,打开Keil5软件。 2.在Keil5中,选择“Flash”选项卡,并确保正确配置了目标芯片型号和连接器。 3.单击右侧的“设置”按钮,选择“J-Link/J-Trace”调试接口,并设置好连接速度和其他参数。 4.选择“Download”选项卡,单击“添加”按钮,选择需要烧录的文件。这些文件通常是.hex或.bin文件。 5.单击“下载”按钮,将程序下载到STM32芯片中。在下载完成后,Keil5会显示烧录的结果,以及任何错误或警告。 6.启动STM32芯片,确保应用程序已正确运行。如果存在问题,可以使用Keil5进行调试。在调试期间,可以单步执行代码并监视变量值。 综上所述,使用Keil5和J-Link烧录程序STM32芯片非常简单,只需遵循上述步骤即可。这种方法可确保高效的嵌入式开发和调试,并提高应用程序的质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值