首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么stm32上的程序只能调试才能运行?

STM32是一款常用的嵌入式微控制器,其上的程序只能通过调试才能运行的原因是因为在开发过程中,程序需要通过调试器与STM32芯片进行通信,以加载程序到芯片中并进行调试。

调试器是一种硬件设备,通常与开发环境(如Keil、IAR等)配合使用,用于与目标芯片进行通信和调试。在调试过程中,程序会被逐行执行,开发者可以通过断点、单步执行等功能来观察程序的执行情况,查找问题并进行调试。

在调试模式下,程序会被加载到STM32的内部闪存或RAM中,并由调试器控制芯片的执行。调试器通过与芯片的调试接口(如JTAG、SWD等)进行通信,可以读取和修改芯片的寄存器、内存等信息,实现对程序的调试和监控。

而在非调试模式下,程序通常会被编译成二进制文件,然后通过烧录器将程序加载到STM32的闪存中。一旦程序被烧录到芯片中,芯片会自动从闪存中启动并执行程序,不再依赖调试器的控制。

总结起来,STM32上的程序只能调试才能运行的原因是因为调试器在调试模式下控制了程序的执行,而在非调试模式下,程序需要通过烧录器加载到芯片中才能独立运行。调试模式下可以方便地进行程序调试和监控,而非调试模式下可以实现程序的独立运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

stm32如何才能正常运行调试笔记

想使用野火或者安福来代码模板来学习这个stm32,毕竟他买使用量挺多,代码风格尤其是安福来比较好,因此想试试他们工程,但是弄了好长一段时间,单片机就是不能运行,进入debug,就死机,停在硬件错误或其他地方...后来想想,真是低级错误导致,因此整理一下。 今后遇到不能正常运行情况下,先冷静下来思考而不是盲目的改代码。 1、单片机能否下载,能否调试,验证启动引脚boot0、boot1电平是否正确。...2、晶振是否启振,查看晶振类型,有的是晶体振荡器结合电压,有的是直接输出clk频率。 3、每个外设时钟是否开启,是否开启正确,stm32内部有总线,不同外设挂载不同总线上,因此不能弄错了。...4、是否有数据溢出,堆栈溢出,这种也会导致硬件错误 5、系统时钟频率设置是否正确 我昨天就是因为电路上面是bypass时钟频率输入,结果两个代码模板都是8Mhz晶体振荡器方式作为时钟,就是以前51...单片机默认方式,所以导致系统时钟都没有起来,自然就无法运行

44530

Linux程序是怎样运行

/a.out 在shell终端上运行可执行程序标准流程: 启动终端仿真器应用程序 输入可执行文件所在相对路径或者绝对路径 如果该可执行程序需要输入参数的话,还需要输入参数 比如,我们在终端上输入 ls...在主函数执行之前,主要做了以下准备工作: 检查并尝试打开/dev/tty 检查shell是否在调试模式下运行 分析命令行参数 读取shell环境 加载.bashrc、.profile和其他配置文件等。...可执行文件所需参数 可执行文件所在环境变量 在该函数中,最终就是运行可执行程序,这一步操作,是在kernel中操作。...支持平面格式; binfmt_elf_fdpic: 支持elf FDPIC二进制文件; binfmt_em86: 支持在Alpha机器运行Intel elf二进制文件。...如我们所见,execve系统调用不会将控制权返回给进程,但是调用者进程代码,数据和其他段只是被程序段所覆盖。应用程序退出将通过退出系统调用实现。 至此,整个程序从开始运行到退出,整个流程完。

3.4K30

为什么创业公司应该运行在Kubernetes

Kubernetes不是像阿里云或者腾讯云这样云平台,事实,你可以在自己数据中心,硬件运行和部署Kubernetes,不过我不建议初学者使用。它更像是一种用来描述工作系统语言。...但是请考虑你要花多少钱才能让工程师手动启动节点。这些纯粹基础架构变更所浪费时间仅仅是在开发产品花费时间。...应用程序代码通常由不太了解服务器的人编写(或者至少没有服务器实践经验)。 假设你有一台机器在阿里云ECS中,由你运营团队中某人管理,该人不太了解应用程序代码。...如果你运行CMS只是偶尔进行一次升级,升级库或安装插件,而实际从未真正部署过,则不需要Kubernetes。Kubernetes确实是针对管理大型,不断变化系统进行了优化。...从理论讲,运行有状态集可以允许您运行多个副本并上下缩放它们,以及附加和扩展存储。但是这样做总是让我有些紧张。借助应用程序服务,我希望使开发人员可以轻松调整设置和部署,而不会遇到麻烦。

45440

eclipse远程调试命令行执行maven运行程序

https://blog.csdn.net/10km/article/details/86064507 有的时候,我们需要调试命令行执行maven运行程序。该怎么办呢?...现在问题就是在maven在执行时,如何能让eclipse远程调试正在执行maven程序 maven本身也是java程序,所以只要能让maven运行时开启远程调试端口,eclipse远程调试功能就可以附加到...下面的命令就是示例在命令行执行java程序时开启远程调试端口....maven本身就提供了一个名为mvnDebug脚本程序,用于Debug方式运行,mvnDebug与mvn命令唯一不同就是通过MAVEN_DEBUG_OPTS环境变量添加了开启远程调试端口JVM参数...这个环境变量,只要这个环境变量设置了开启远程调试端口JVM参数,执行传统mvn命令,也可以实现远程调试

90610

如何运行githubmpvue小程序开源项目

在安装好了node和vue脚手架之后,就可以找一个例子来本地运行一下了,如果环境还没有安装好,参考:基于mpvue程序项目搭建步骤:https://blog.csdn.net/qq_36538012.../article/details/80748367 以mpvue音乐小程序项目源码/mpvue微信小程序demo 为例 下载地址:https://github.com/XieTongXue/mpvue-music...3:安装完成之后,输入运行命令 npm run dev ? 安装预览时候,不是用浏览器打开输入:localhost:8080。而是打开微信开发者工具,把项目根目录导入进去。...6:查看项目如下,这个时候一个项目就可以跑起来了,研究项目结构,仔细查看每个模块代码,慢慢就可以做一个mpvue小程序了。 ?...可能会出现错误提示:mpvue踩坑-未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。这个时候,解决方法已经替你写好了,觉得很开的话那就给本菇凉一个赞吧

1.6K20

如何使用串口来给STM32下载程序

电之前要先设置BOOT0=1,BOOT1=0,然后才能通过串口下载程序。或者在已经情况下,设置BOOT0=1,BOOT1=0,然后按一下复位键,这样也能通过串口下载程序。...所以可以考虑从RAM中启动代码,用于快速程序调试,等程序调试完成后,再将程序下载到Flash中。 有的朋友可能遇到过这种情况:程序第一次下载时候可以运行,但是掉电重启之后,程序就不能运行了。...这里如果点击 Back是不能进行第二次程序下载,必须重新打开,连接,才能下载。 ? 另外,除了STM32系列单片机程序下载,它还支持ST公司STM8程序下载。...总结 STM32只能通过串口1进行程序下载,即PA9、PA10,其他串口都不具备这个功能,所以,如果自己设计板子,要注意这一点。...虽然STM32F4系列也可以使用串口下载程序,但擦除时间很长,有十几秒种。推荐大家尽量还是使用调试器来进行程序下载和调试,方便又好用,单片机开发必备!

2.8K20

编写一个直接在Yarn运行程序

我们知道基于mapReduce框架分布式程序编写,在这种框架下我们不需要考虑申请资源,只需要安照mapreduce框架要求,直接编写Map函数和reduce函数即可。...如何在Yarn直接编写应用程序呢? 要想在Yarn编写应用程序,需要编写两个组件,Client和ApplicationMaster....ApplicationClient接口实现,以供返回信息,包括集群信息,节点信息,kill信息,运行状态 当然这些程序可以使用javaRPC进行编程,Yarn提供了YarnClient类封装编程库,...(6) 显示应用程序运行状态。...为了让用户知道应用程序进度,Client会每隔几秒在shell终端上打印一次应用程序运行状态: while (true) { Thread.sleep(1000); GetApplicationReportRequest

1.4K20

win10在html运行javaapplet程序

toc Applet是采用Java编程语言编写小应用程序,该程序可以包含在 HTML(标准通用标记语言一个应用)页中,与在页中包含图像方式大致相同。...含有Applet网页HTML文件代码中部带有 和这样一对标记,当支持Java网络浏览器遇到这对标记时,就将下载相应小应用程序代码并在本地计算机上执行该Applet...但是大多数浏览器在Applet安全方面受到诸多限制,几乎不能对系统进行任何“读”或“写”操作,所以目前只有IE浏览器可以运行JavaAPPlet。...下面我对在win10运行java applet 可能出现问题进行简单说明。...] 点击下载 下载完保存即可,但如果显示与原来安装jdk重复,请不要卸载,选择同时保存 重新打开IE浏览器运行文件 [在这里插入图片描述] [在这里插入图片描述] 点击运行 [在这里插入图片描述] [

2.3K40

USB接口一键下载程序电路解析

STM32、USB下载、原理图 Stm32下载程序一般有两种方式: 1 一种是基于JTAG(SWD)程序下载方式,这种方式需要仿真器才能高效与快捷地调试STM32单片机系统,例如,J-LINK与U-LINK...另外一种基于串口程序下载方式,STM32全系列均支持这种方式,这种方式一般通过一个USB线和相应ISP下载软件就可以将HEX文件下载到STM32芯片,这样有个好处就是不会暴露源代码,随便找个人教一下就可以去操作...下面重点介绍一下这种方式是怎么实现,首先我们得搞明白STM32启动方式: 每个STM32芯片都有两个引脚BOOT0和BOOT1,这两个引脚在芯片复位时电平决定了复位后从哪个区域开始执行程序: (...2 下面进行原理图分析,此电路只能连接串口1。...模式,接着下载软件就可以开始连接STM32,下载代码了,ISP下载完毕后,自动复位运行

2.1K20

STM32】ST-LINK下载器下载后需复位,程序运行问题

程序下载后不运行,需要按下复位键程序才能运行问题。...(PS:也是误打误撞,我随便按了板子复位按键,发现程序跑起来了) 原因三:持续更新中… 解决方法 方法一:手动复位 待程序成功下载至板子后,手动按下板子复位按键,之后观察程序是否可以跑起来。...方法二:软件设置自动复位(推荐) 如果板子没有手动复位按键,可以设置软件自动复位,当然这种方法也是我个人比较推荐一种方法。...具体操作见下图: 仿真器配置里面把第三个√给√,之后就一直点右下方OK就行了。 这回再把程序下载进去,就可以跑起来了。...总结 STM32系列单片机在使用仿真器下载时,需复位后程序才能跑起来,这个或许是STM32特性吧,51单片机好像没有见过。

2.6K10

如何在Electra越狱设备使用LLDB调试应用程序

在3月18日时候,我就曾发表过一篇关于在Electra越狱设备使用LLDB调试应用程序文章。本文我将在此基础,做进一步更新优化。...我试图在google搜索,有关使用Electra越狱iOS设备上调试AppStore应用程序简要说明。但令我失望是,竟然没有找到任何有用资料。...通过USB进行调试 对我而言,它只在我通过USB进行调试时才有效。如果Mac未安装iproxy,请通过brew进行安装: ? 然后在Mac控制台中运行: ? 最后,将iPhone连接到USB。...则表明运行一切正常。现在,在Mac打开另一个控制台,然后运行 ? 在LLDB控制台中运行 ? 在LLDB下运行应用程序 在你Mac控制台上,连接iPhone: ?...如果你遇到了错误则, 在没有调试情况下运行应用程序 如前一节所述,将调试器attach到应用程序 关闭(LLDB)应用程序 尝试在调试器下再次运行应用程序 *参考来源:kov4l3nko,FB小编

2.3K40

为什么在 Eclipse 中,运行程序却是另外一个程序结果?

文章目录 前言 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 1.2、执行未出结果 Java 程序 二、错误处理 总结 ---- 前言 你使用 Eclipse 敲代码时候...,有没有遇到过这样一种情况,明明我点击运行程序结果却是另外一个程序结果?...这是为什么呢?话不多说,我们从实际案例来分析错误原因。...---- 一、错误产生场景 1.1、执行一个无误 Java 程序(即产生结果程序) 首先我们先执行一个 Java 程序SwitchToIfElseWithSwitch如下: package review3...要做一个细心程序员哦! ---- 我是白鹿,一个不懈奋斗程序猿。望本文能对你有所裨益,欢迎大家一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家支持!

2.5K41

keil结合st-link使用SWO两种调试方法笔记

通过strongerHuang教程,实现了SWO两种调试方法, 1、在keil调试过程中,使用debug printf viewer打印信息, 2、在STM32 ST-LINK Utility...中烧写程序并打印信息。...由于手头上没有串口,因此只能通过st-link进行信息输出,增加调试方法。jlink也可以通过RTT和SWO方法输出信息。 手上有一个stlink,因此选择swo方式。...几点注意事项: 1、如果要在STM32 ST-LINK UtilitySerial Wire Viewer打印信息,应该是stlink下在hex才能运行,keil里面下载程序是无法在Serial Wire...2、如果直接在keil中调试全速运行的话,直接调试运行,打开debug printf viewer即可看到打印信息。 另外,keil工程中需要开启功能,添加printf重定义,时钟频率要一致。

2.7K30

docker容器中前台程序和后台程序为什么一定要前台运行

docker 容器默认会把容器内部第一个进程,也就是pid=1程序作为docker容器是否正在运行依据,如果docker容器中 pid = 1 进程挂了,那么docker容器便会直接退出,也就是说...docker容器之后台运行 我们 docker run 启动容器时候,常需要将其在后台运行,通常我们设置参数 -d 即可。...但后台运行,其实是有前提,如果没有前台进程,那么实际运行完docker run命令后,会处于退出状态,即exited。...容器运行命令如果不是那些一直挂起命令(比如运行ping,sleep),就是会自动退出。而上面的代码中bash就是需要执行指定命令。命令如果执行完毕了,或者叫指定应用终结时,容器会自动停止。...ssh在镜像(或容器)中安装SSH Server,这样就能保证多人进入,不建议使用,具体见为什么不需要在 Docker 容器中运行 sshdnsenternsenter使用方法docker exec-推荐使用通常我们可以通过容器

3.5K30

怎么解决win11有些程序需要使用管理员权限才能运行问题

自从有了chat之后发现我就懒了,教程也不写了,文章也不水了,这哪行啊,于是乎强迫自己营业,所以就诞生了这篇文章,不过也是偶尔间发现,毕竟其他程序直接双击打开就能运行,唯独这个Open-V-P-N需要右键使用管理员权限才能运行...如果没有管理员权限,这些程序将无法正常使用。那么如何解决Win11中这些程序需要管理员权限才能运行问题呢?...以下是一些有效解决方案: 方法一: 右键以管理员身份运行程序: 首先,可以尝试以管理员身份运行程序。可以通过以下步骤来实现。...找到需要运行程序,右键单击程序图标,选择“以管理员身份运行”选项就行了。 但是有些人比如我,不想每次都右键选择管理员再去运行,但是费事了,难不成就不能直接以管理员去运行吗?答案是可以。...方法二: 更改程序属性,找到需要运行程序,右键单击程序图标,选择“属性”。 在弹出程序属性窗口中选择“兼容性”选项卡。 然后勾选“以管理员身份运行程序复选框。

3.5K120
领券