所有的操作基于WIN XP,stm32使用J-Link在SWD模式下。
先前要添加PA15口到程序中,
//////////////////////////////////////////////////////
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_15);//管脚低电平合位灯亮
//////////////////////////////////////////////////////
然后debug。
提示:
Cannot attach to cpu.Trying connect under reset.
RESET(pin15)high,but should be low.Please check target hardware.
EEROR:Flash Download failed-Target DLL has been cancelled.
原因不明。
点击Download,提示flash timeout.reset thd target and try it again. Error:Flash Download Failed-"Cortex-M3"
试过的方法一:
1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HWreset/sysresetReq/Vectreset)默认是
AutoDetect,改成SysResetReq即可。
2.Jtag模式下,主要是芯片大小选错。Flash->Configure Falsh Tools配置窗口,切换到“Utilities"页,按“Setting"按钮进入“Flash download setup"配置窗口,在“Flash download setup"配置
窗口点击“Add”按钮,在“Add Flash Programming Algorlthm"窗口,根据你实际使用的芯片选择。
NOPASS!
试过的方法二:
要Jlink或Ulink没坏,建议降低烧写速度,我们一般降到500K就可以了。
NOPASS!
试过的方法三:
首先,我们看到提示信息是有关flash的,那么我们来查看一下 STM32F103XB的数据手册关于这部分的描述(我使用的芯片是STM32F103RB,有128kflash。)知道了原来flash在此芯片中的地址是从0x0800 0000到0x0801 FFFF 这段,也就是说这段存储空间是用来存储程序。而在STM32芯片方面,它又有一个规则,那就是芯片启动的方式,如果你把程序下载到了flash中,那么在复位芯片之前或者通电之前,要将boot0,boot1两个引脚拉到高电平,这样在启动时,芯片初始化之后,运行程序代码才是从flash地址开始执行的。
当你认为修改一个程序总是往flash里烧写测试比较费芯片,那么你可以把程序下载到SDRAM中,配置跟上文类似,这里就不再赘述。不过地址是从0x2000 0000 开始的,结束地址要看你的芯片SDRAM的大小,也可以根据你的程序的大小来定。设置好之后,一定要重新编译链接!!这样就可以。
后来发现两种解决方法:1 boot0置高烧完再置低,2:芯片通电的“同时”(应该就是复位前),点MDK里面的flashdownload就能下载。
NOPASS!
试过的方法四:
试过了上面的方法后,就不在怀疑是KEIL的设置或者是J-Link的问题,说明芯片己经被锁死。工程文件存于“百度网盘/05、组装维修/4、单片机/2、STM32F103VCT6被锁”下。
再通过mcuisp软件烧写进去,PASS。
在试验时“编程到FLASH时写选项字节”前面切记不要打钩,这是读保护、写保护。
尽量不要由J-Link给线路板供电,内部有短接。
在使用过程中出现如下的提示:
1、断开芯片的电源和JLINK;
2、先打开芯片的电源,然后再插上JLINK