STM32问题求助
时间:12-12
整理:3721RD
点击:
用STM32F103做了个板子,同时用了SPI,串口,DMA(ADC),供电芯片用的LM2937
问题:程序运行几次后就会死掉,再重新上电也没用。重新下载程序提示如下:
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: TPIU fitted JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
* JLink Info: Found Cortex-M3 r1p1, Little endian.ROMTableAddr = 0xE00FF003 **JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
* JLink Info: Core did not halt after reset, trying to disable WDT.
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
**JLink Warning: S_RESET_ST not cleared
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: TPIU fitted JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
* JLink Info: Found Cortex-M3 r1p1, Little endian.
**JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
* JLink Info: Core did not halt after reset, trying to disable WDT.
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
**JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU could not be halted
单片机的reset管脚用了一个电阻接到3.3V,一个电容接地。测了一下reset脚的电压时0.5V左右。用镊子短接到3.3V,断开镊子后又回到0.5V。并且用镊子把reset短接到3.3V后,程序可以运行一会,但是马上又会死掉。
并且用镊子短接reset到3.3V的时候可以成功下载程序。
其他尝试:一开始以为是自己焊工不好,重新焊了几次,确实每次重新焊之后都会好。但是总还是会出现同样的问题。
后来以为是单片机体质问题,重新买了芯片,焊好(用热风枪吹的)。用了一会是好的,上电了几次又出现了同样的问题。并且是程序运行过程中突然就挂掉了。
baidu了半天也没查出啥问题来,请教版上各位大神,多谢!
问题:程序运行几次后就会死掉,再重新上电也没用。重新下载程序提示如下:
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: TPIU fitted JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
* JLink Info: Found Cortex-M3 r1p1, Little endian.ROMTableAddr = 0xE00FF003 **JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
* JLink Info: Core did not halt after reset, trying to disable WDT.
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
**JLink Warning: S_RESET_ST not cleared
* JLink Info: Found SWD-DP with ID 0x1BA01477
* JLink Info: TPIU fitted JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
* JLink Info: Found Cortex-M3 r1p1, Little endian.
**JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
* JLink Info: Core did not halt after reset, trying to disable WDT.
**JLink Warning: CPU did not halt after reset.
**JLink Warning: CPU could not be halted
**JLink Warning: S_RESET_ST not cleared
**JLink Warning: CPU could not be halted
单片机的reset管脚用了一个电阻接到3.3V,一个电容接地。测了一下reset脚的电压时0.5V左右。用镊子短接到3.3V,断开镊子后又回到0.5V。并且用镊子把reset短接到3.3V后,程序可以运行一会,但是马上又会死掉。
并且用镊子短接reset到3.3V的时候可以成功下载程序。
其他尝试:一开始以为是自己焊工不好,重新焊了几次,确实每次重新焊之后都会好。但是总还是会出现同样的问题。
后来以为是单片机体质问题,重新买了芯片,焊好(用热风枪吹的)。用了一会是好的,上电了几次又出现了同样的问题。并且是程序运行过程中突然就挂掉了。
baidu了半天也没查出啥问题来,请教版上各位大神,多谢!
要注意:
- 禁用片内看门狗;这个东西通常不受调试器的控制,没喂狗就会飞。
- RESET引脚不要搞成输出一类的功能,调试工具有时候不太搞得定。
- 片内程序不要跑飞。
观测:
- 全片擦除。
- 下载代码,脱离仿真器,代码能否正常运行。
这个要是不行,就别挂着仿真器折腾了,定位别的故障源吧。
Flash调试的话,通常建议做到,如果MCU复位,芯片能进入确定的正常死循环,不跑飞。
否则可能不好连芯片。有Vector Base Addr Reg的CM3/4/7都不难达成。CM0麻烦点。
以及一个好习惯,焊样板时每次都焊一模一样的2或3块
出现类似问题时,先看两三块板是否会出现同一个问题,可以直接知道是设计出错还是焊接质量问题
多谢建议。
我一直没用过仿真器,都是下载完脱机运行。现在脱机程序也没法运行,reset引脚电压还是0.5V。
我再看看看门狗和flash的问题。
这个版本是第二版了,第一版的时候单片机没遇到这种问题,昨天晚上还特意拿出第一版测了一会,也还是好的。
第二版相对第一版单片机部分没有任何改动,代码也是直接用的第一版的,所以很奇怪。
多谢回复。
我马山再去焊一个最小系统试一下
还有就是按功能一部分一部分焊,边焊接,边调试。
reset 0.5v会把单片机复位吧,你去掉复位电容试试
看描述是reset有问题。你不会是把那个RC焊反了吧。
上午重新焊了一个最小系统,包括串口通信部分。
跑了一个多小时,还没出现问题。
再继续去焊外围电路,有进展再来汇报
试了,没啥效果
这个肯定不会
刚才把有问题的板子上的单片机拆掉,测了一下reset焊盘对地的电阻