刚接触stm32f4时发现程序烧录进去没运行的问题

本文主要参考以下两篇文章 

 

bbhttps://blog.csdn.net/weixin_35779001/article/details/112037894https://blog.csdn.net/weixin_35779001/article/details/112037894https://blog.csdn.net/a919964703/article/details/124072915https://blog.csdn.net/a919964703/article/details/124072915

/*实际上是stlink的接线问题,一开始我将stm32的复位脚接到stlink的reset脚,一直运行不了,忘记在哪里看到说f4的stlink复位引脚已经硬件拉高需要我们手动置低,即接GND或者不接即可。*/

以上的方法是正确的,但理解的原因确实错误的,经过下文对boot1和boot0的学习,我回去翻看了该开发板的原理图(stm32f411)他stlink连接的引脚Reset连接的是boot0,然后我测试了stlink运行时reset引脚输出的是高电平,所以所有的问题都浮出水面,当我连接了reset引脚时boot0一直为1所以stlink烧录完成后不能运行。


以上是我在上一块板子(stm32f411cet6)时第一次烧录程序遇到的问题,当时就像这样一知半解,糊里糊涂的解决了这个问题,以为我已经解决了,但深层原因并没有理解,直至最近又运用上了一块新的板子(stm32f4zgt6)又遇到了同样的情况,不过这次用的是DAP烧录。花了我好久都不能解决这个问题。最后发现是单片机boot引脚的问题,厂家出厂的时候将boot0与3.3v引脚用盖帽短接,导致程序不能运行,再深入了解了单片机烧录程序与boot0,boot1引脚的关系后,发现可以归类为一类问题。就是在DAP、stlink、J-link等烧录的时候boot0要始终为0。boot0与boot1与单片机的关系如下图所示。

刚接触stm32f4时发现程序烧录进去没运行的问题_第1张图片

 简单的来说

使用串口烧录程序时需要将boot0置1,boot1置0

使用DAP等烧录工具进行烧录时需要将boot0置0才行

下图也可以跟直观的看出,J-link的情况我照搬到DAP上试过也同样适用。

你可能感兴趣的:(错误debug,stm32,单片机,嵌入式硬件)