所有的操作基于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 targethardware.
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 FalshTools配置窗口,切換到“Utilities"頁,按“Setting"按鈕進入“Flash downloadsetup"配置窗口,在“Flash download setup"配置
窗口點擊“Add”按鈕,在“Add Flash ProgrammingAlgorlthm"窗口,根據你實際使用的芯片選擇。
NOPASS!
試過的方法二:
要Jlink或Ulink沒壞,建議降低燒寫速度,我們一般降到500K就可以了。
NOPASS!
試過的方法三:
首先,我們看到提示信息是有關flash的,那么我們來查看一下STM32F103XB的數據手冊關于這部分的描述(我使用的芯片是STM32F103RB,有128kflash。)知道了原來flash在此芯片中的地址是從
0x0800 0000到0x0801 FFFF這段,也就是說這段存儲空間是用來存儲程序。而在STM32芯片方面,它又有一個規則,那就是芯片啟動的方式,如果你把程序下載到了flash中,那么在復位芯片之前或者通
電之前,要將boot0,boot1兩個引腳拉到高電平,這樣在啟動時,芯片初始化之后,運行程序代碼才是從flash地址開始執行的。
當你認為修改一個程序總是往flash里燒寫測試比較費芯片,那么你可以把程序下載到SDRAM中,配置跟上文類似,這里就不再贅述。不過地址是從0x20000000 開始的,結束地址要看你的芯片SDRAM的大
小,也可以根據你的程序的大小來定。設置好之后,一定要重新編譯鏈接!這樣就可以。
后來發現兩種解決方法:1boot0置高燒完再置低,2:芯片通電的“同時”(應該就是復位前),點MDK里面的flashdownload就能下載。
NOPASS!
試過的方法四:
使用mcuisp的“清除芯片”

NOPASS!
試過的方法五:
試過了上面的方法后,就不在懷疑是KEIL的設置或者是J-Link的問題,說明芯片己經被鎖死。工程文件存于“百度網盤/05、組裝維修/4、單片機/2、STM32F103VCT6被鎖”下。

再通過mcuisp軟件燒寫進去,PASS。
|