Arm STM32F3仅使用ST Link调试器引导

Arm STM32F3仅使用ST Link调试器引导,arm,embedded,microcontroller,stm32,stm32f4discovery,Arm,Embedded,Microcontroller,Stm32,Stm32f4discovery,我能够用ST Link v2闪存自定义板的STM32F3,没有问题,程序运行正常(打开led)。但是,如果我关闭电源,拔下ST链接,然后再次打开电源,程序似乎无法运行:led熄灭 一旦我打开电源,nRST引脚上升到3.3V(内部上拉),Boot0保持在0(外部下拉)。示波器在开机时或开机后的任何一个引脚上都没有显示任何奇怪的行为 我运行的另一个测试是:我使用ST链接启动程序,然后在不关闭电源的情况下拔下ST链接。程序一直运行良好,这并不奇怪。但是,如果我手动将nRST接地,程序会停止,如果我释放

我能够用ST Link v2闪存自定义板的STM32F3,没有问题,程序运行正常(打开led)。但是,如果我关闭电源,拔下ST链接,然后再次打开电源,程序似乎无法运行:led熄灭

一旦我打开电源,nRST引脚上升到3.3V(内部上拉),Boot0保持在0(外部下拉)。示波器在开机时或开机后的任何一个引脚上都没有显示任何奇怪的行为

我运行的另一个测试是:我使用ST链接启动程序,然后在不关闭电源的情况下拔下ST链接。程序一直运行良好,这并不奇怪。但是,如果我手动将nRST接地,程序会停止,如果我释放它,由于上拉,它会再次上升到3.3V,程序会重新启动并像以前一样运行。所以问题似乎真的是当我从头开始给电路板通电的时候。首先,我使用USB连接的5V电压通过电压调节器获得STM的3.3V电压。我还有一个用于STM时钟的外部晶体,根据示波器,它工作正常

有人知道问题出在哪里吗


谢谢。

事实证明,这是一个软件问题! 我的一个GPIO初始化代码中缺少一行:我将它设置为输出,使用下拉,但没有将其类型设置为输出PushPull。 这应该在我配置pin时被断言捕获,并触发BP,但由于某些原因,如果在连接调试器时没有。事实上,有一次,这就是我发现错误的原因。为什么它在其他时间运行良好仍然是个谜


不管怎样,谢谢你的回答,现在一切正常

您是如何使用st链接启动程序的?您是下载到ram并在ram中运行,还是编程闪存并在ram中运行?在连接stlink的情况下按/断言重置时会发生什么?如果在stlink连接的情况下键入重置命令(假设telnet到openocd到stlink),会发生什么情况?谢谢您的回复。我正在使用Eclipse和OpenOCD对芯片进行编程。我正在编程flash并在那里运行:调试器显示从地址0x0800000运行的程序。如果在连接stlink时手动将reset拉至地面,程序将重新启动并正常运行。如果在断开stlink的情况下,在电路板启动后按reset,该怎么办?这会改变情况吗?不,一旦电路板启动(没有stlink),将reset拉到地上并释放它不会做任何事情reset和boot0都需要外部拉电阻。Boot0是在POR之后读取的,必须在reset变为high后立即变为low。