6.ST LINK 下调试异常

时间:2023-03-08 20:02:10
6.ST LINK 下调试异常

☆1.无法进入main函数
(printf的影响)
***为什么有时候可以进入main函数,有什么进入不了main函数?
    <1> 因为C语言默认使用显示器作为标准输出的设备,所以如果想利用printf必须进行函数的输出重映射到串口。MDK下使用printf函数会导致程序无法进入main函数
 ,防止其进入半主机模式。使用特定代码,或者使用微库。但是依旧没用。      在清除所有断点后好用!!

☆2.调试过程中程序依然执行:

<1> 独立看门狗对调试的影响:   调试时关闭IWDG时,调试能正常进行。103芯片对看门狗的支持并不好,所以当进行调试时,最好关闭看门狗。

☆3.BOOT0 BOOT1对程序运行以及调试时的影响
      BOOT0 = 0 ,BOOT1 = X,程序从Flash进行启动,一般程序的要求都是从Flash(主闪存存储器进行启动)。  
      BOOT0 = 1 ,BOOT1 = 0 / 1  会使程序从 系统存储器或SRAM进行启动,可以用ST - LINK进行下载,但因为程序是下载到Flash中,所以无法正常运行!
    在DEBUG模式下,会直接全速运行而无法停止。

☆4. 使用ST-LINK V2下载 提示internal command error

  (1).一般是因为STM32的SWDIO /SWCLK引脚虚焊。芯片引脚的虚焊可能会导致相关功能无法使用。

  (2).当操作stm32的内部Flash出现错误时,非正常退出调试模式也会出现 Internal command error.
    
☆5.程序单步执行正常,全速执行无法得到正确的结果:
        (1).软件延时时间不够,时序有问题。因为单步执行时,软件有足够的时间来完成相关操作。但是全速执行则不然,因为时序原因。

☆6.通过SWD方式下载出现 flash timeout,程序无法正常进行下载。
    
    一般出现此种情况的原因去除硬件-VDD引脚虚焊(..),可能是由于flash被锁。可以通过ISP方式清除flash解除。
    ☆但是程序无法正常通过ST LINK进行调试。

☆7.通过SWD方式下载,提示Flash Download failed!-cortex-M3

☆8.当使用IAP进行程序升级或者一般APP程序中,如若使能中断,一定要书写串口中断服务,否则会导致程序异常。跳转至启动文件                  B       .  指令处。

*********************************************************************************************************************************
**STM32--DBG调试支持**
*********************************************************************************************************************************
    1.概念:Cortex-M3内核的调制机制:内含硬件调试模块。支持两种调试机制:串行接口SWD(SWCLK/SWDIO)和JTAG接口(标准五针式)默认的调试接口,需切换。
  当内核停止时,内核的内部状态和系统的外部状态都是可以查询的。 当调试结束时,内核可以恢复运行状态,外设也可以恢复工作。
    (使用PB3/PB4引脚,需要进行释放!!)
    
    2.ITM 指令跟踪微单元 :支持类printf的调试手段来跟踪操作系统OS和应用事件。
    (可以根据不同的调试模块配置,实现复杂的调试功能,例如数据跟踪,系统调试)
    
    3.MCU调试模块
        <1>低功耗模式的调试支持,因为低功耗模式会关闭MCU时钟系统,如果想要进行硬件调试,需要特殊的操作支持。详见中文参考手册。
        
        <2>通过在主程序中加入断点,来实现对定时器、看门狗、bxCAN、I2C调试。对于定时器和看门狗,在产生断点时,计数器停止计数。