stm32 51讓單片機項目運行在內存中 stm32 51讓單片機項目運行在內存中
注意:
RAM要查詢芯片手冊,找到其容量,而工程固件(hex)文件不要大于RAM的容量。。。
1 三種啟動模式,根據說明配置相應引腳的電平。 2
2 Project manager 里面增加一個編譯目標選項 2
3 選擇編譯目標選項3
4 進行內存配置4
41 Output 配置: 5
5 添加宏定義 VECT_TAB_SRAM(中斷向量搬移到 SRAM)/逗號要加上。6
6 勾選相關選項7
7 debug 頁面勾選 Load Application at Startup(如果取消勾選此選項則 Debug 時打斷點無效,即 不能真正的仿真調試,建議勾選)并在 Initialization File 添加文件8
71 注意 9
72 Debug 選項的其它默認配置:10
8 程序下載相關配置12
9 Utilities 頁面,勾選 Update Target before Debugging。 13
91 注意 14
10 保存工程14
11 編譯工程(0 錯誤 0 警告) 15
12 板子和電腦用 ST-Link v2 連接好 16
13 首次上電使用需下載程序到板子上(顯示 ok) 16
14 進入 DeBug 17
15 效果 18
16 調試完成而最終產品定型時---把引腳轉換成 FLASH 啟動及相關配置 20
1. 三種啟動模式,根據說明配置相應引腳的電平。(這里選擇 SRAM 即 RAM 啟動需 BOOT0
和 BOOT1 皆為高電平/記得加電阻限流)

2.Projectmanager里面增加一個編譯目標選項
 
3.選擇編譯目標選項

4.進行內存配置

4.1Output配置:

5.添加宏定義 VECT_TAB_SRAM(中斷向量搬移到SRAM)/逗號要加上。

6.勾選相關選項
7.debug頁面勾選 LoadApplicationatStartup(如果取消勾選此選項則 Debug時打斷點無效,
即不能真正的仿真調試,建議勾選)并在 InitializationFile添加文件 | 文件內容如下: |
|
| FUNC void Setup (void) { SP = _RDWORD(0x20000000); //設置堆棧指針 PC = | _RDWORD(0x20000004); //設置 PC 指針 _WDWORD(0xE000ED08, 0x20000000); //設置 | 中斷向量表地址 } //工程配置選項請勾選"Load Application arStartup" |
|
| LOAD ..\Objects\led.axf INCREMENTAL // 裝 載 代 碼 到 CPU 內 部 | RAM(Objects\led.axf 自己工程的路徑和文件名) Setup(); //再調用 Setup 函數修改 | 堆棧指針和 PC 指針 因為 SP 的值要從目標代碼中讀取 g, main //運行到 main 函數 |
|
文件里面的 Objects\led.axf 需要更換成你的編譯輸出目錄和文件名,參考第 4 步 Output 配置部分。
 
7.1注意:如若取消勾選 LoadApplicationatStartup選項則 debug時打的斷點將失去作用。

7.2 Debug 選項的其它默認配置:

8.程序下載相關配置
9.Utilities頁面,勾選 UpdateTargetbeforeDebugging。
9.1注意:如若不勾選 Update Target before Debugging 則每次更改完程序后要重新下載程序到 
芯片內才能使用 DEBUG 調試。
10.保存工程
 
11.編譯工程(0錯誤 0警告)
12.板子和電腦用 ST-Linkv2連接好
13.首次上電使用需下載程序到板子上 (顯示 ok)
 首次上電使用需下載。若勾選了 Update Targetbefore Debugging(第 9 步)中途更改過代碼但沒 斷過電源則無需下載亦能 debug
 14.進入 DeBug
 
15.效果 (成功了,當把電源拔掉時數據丟失,即成功把程序下載到 SRAM中運 行了,調試時應該多使用此方法以減少燒錄 flash的次數 延長芯片 flash的壽 命的效果。當調試完成而最終產品定型時記得把引腳轉換成 FLASH啟動 ...)
 16.調試完成而最終產品定型時---把引腳轉換成FLASH啟動及相關配置...
以上圖文的pdf格式文檔下載(內容和本網頁上的一模一樣,方便大家保存):
本文的pdf格式.pdf
(2.94 MB, 下載次數: 9)
2022-2-28 21:40 上傳
點擊文件名下載附件
|