STM32在keil下使用jlink时产生错误的解决方法.docVIP

  • 23
  • 0
  • 约1.7千字
  • 约 2页
  • 2017-08-22 发布于河南
  • 举报

STM32在keil下使用jlink时产生错误的解决方法.doc

最近一段时间一直在学习STM32和ucos的移植,使用的开发环境是keil u4版本。仿真器是80元买的jlink。 在学习了STM32固件库和ucos内核与移植相关的程序之后,写了一个流水灯程序,准备下载到板子上看看情况。哪知程序还没有下进去,在debug时,keil的错误提示到:Error: Flash download failed-Cortex-M3 感觉这么错误很普遍,也是初学者常常遇到的错误,下面我就将这个错误产生的原因和解决方法赘述一下: 错误产生的原因和分析,解决。 ????? 首先,我们看到提示信息是有关flash的,那么我们来查看一下STM32F103XB的数据手册关于这部分的描述(我使用的芯片是STM32F103RB,有128kflash。) 知道了原来flash在此芯片中的地址是从 0x0800 0000到0x0801 FFFF 这段,也就是说这段存储空间是用来存储程序。而在STM32芯片方面,它又有一个规则,那就是芯片启动的方式,如果你把程序下载到了flash中,那么在复位芯片之前或者通电之前,要将boot0,boot1两个引脚拉到高电平,这样在启动时,芯片初始化之后,运行程序代码才是从flash地址开始执行的。 ??? 于是,我们来查看一下keil中仿真器的设置,是不是正确,设置的选项在keil软件的project-options for target中的Utilities中,先来查看下仿真器是否选对,然后点settings,弹出如下菜单: 查看一下programming Algorism 下的flash地址是否正确,如果不正确则会引起开始那个错误的提示信息, 如果正确还是出现那个错误,那么按照官方给的解决方法是,删除现有的flash地址,重新配置一下,记得要选对芯片型号和地址空间。配置好之后点击OK退出。然后再查看一下Target中的地址,是否跟你重新添加的一致,如果一致,那么点OK退出。然后重新编译链接即可。 ??? 当你认为修改一个程序总是往flash里烧写测试比较费芯片,那么你可以把程序下载到SDRAM中,配置跟上文类似,这里就不再赘述。不过地址是从0x2000 0000 开始的,结束地址要看你的芯片SDRAM的大小,也可以根据你的程序的大小来定。设置好之后,一定要重新编译链接!!这样就可以。希望你的问题得到解决的同时,也学到一些知识,如有错误的地方请您指出,谢谢。 ? ? ===================================================================================== 请问高手,我在调试我的STM32F101c8t6时,遇到一个问题,因为我要调试串口,我在main.c中添加了#include?stdio.h?,编译可以通过,但是当我用jlink硬件调试时,一开始就停在了??0BEAB??????BKPT?????0xAB;并且无法向下运行.??请问高手,这个问题的原因是什么?怎么解决??谢谢!????? ??????????_sys_open: 0B50E??????PUSH?????{r1-r3,lr} 0E9CD0100??STRD?????r0,r1,[sp,#0] 0F000FAF9??BL.W?????strlen?(0x08001A4C) 0x0800145A?9002??????STR??????r0,[sp,#0x08] 0x0800145C?4669??????MOV??????r1,sp 0x0800145E?2001??????MOVS?????r0,#0x01 0BEAB??????BKPT?????0xAB 0BD0E??????POP??????{r1-r3,pc} ? 应该是你没有选中微库造成的。这个问题昨天我遇到过。在工程的设置选项里把微库勾上就OK了

文档评论(0)

1亿VIP精品文档

相关文档