关于MDK调试stm32f072vbt6(HAL库)内部flash在擦除仿真时,卡死在擦除函数,同时弹出“Cannot access target.shutting down debug sessi

来源:互联网 发布:鼠标键盘录制软件 编辑:程序博客网 时间:2024/05/19 12:13
     笔者在给客户调试代码时,发现比较奇怪的问题,特此记录下来。
        客户问题:
stm32f072vbt6内部flash在擦除仿真时,卡死在擦除函数,同时弹出“Cannot access target.shutting down debug session”,同时退出仿真。
                                
         问题解决:
                1、通过去现场,客户使用的是Keil5 + HAL库开发环境,查看代码,发现客户在if语句后多添加分号,导致程序直接进入死循环
         2、去掉分号,发现编译器在仿真的时候,弹出“Cannot access target.shutting down debug session”,同时退出仿真。
                3、跟进代码,发现在进入HAL_FLASHEx_Erase(&EraseInitStruct, &PageError)函数里面,出现异常,反复调试客户代码,均未有代码错误
         4、在客户产品上,烧录官方例程,发现同样出现该问题。
         5、查看客户硬件问题,未发现PA14引脚是否被占用,使用IAR烧录官方代码,能成功调试。
        6、经过反复试验,发现这问题跟Keil编译器有关,在HAL_FLASHEx_Erase(&EraseInitStruct, &PageError)函数里面,增加1ms延时,能解决此问题。

至于为什么,笔者就不太清楚,但是这样确实解决了问题,望了解此问题大神,留下宝贵的解决,与大家共勉!
阅读全文
0 0