熟悉 KEIL 的人都知道,KEIL 下載時使用 axf 格式的文件,里面不僅有代碼指令信息,也包含了調試信息,比如C代碼和匯編代碼之間的對應關系(這些信息不會下載到單片機中,不然單片機可能裝不下,哈哈),地址信息等。
事實上,KEIL 也能下載 HEX 文件,同時也能保存數據為HEX文件。
很多道友可能會問,既然有 axf 文件,為啥還要學 HEX 文件下載呢?我們知道,公司為了保密或者其他一些原因,不會給你源代碼編譯后再下載,還有一種可能是單片機有兩份程序,BOOT_LOADER 程序可能是別人編寫與維護的,只給你 HEX 文件,如果說你掌握了 KEIL 下載方式,那么就不需要找其他工具下載了,方便快捷(還有一種情況,代碼使用 GCC 編譯,文件格式為 elf)。
所以,掌握 KEIL 下載 HEX 文件的方法還是很重要的。
那么今天就教你如何使用 KEIL 下載 HEX 文件到單片機中。
首先,復制一個 STM32 工程模板
打開工程,看看有沒有勾選 HEX 文件生成功能:
勾選這個只是為了讓工程生成一個 HEX 文件,方便我們做測試,在實際 HEX 文件下載過程中,不需要勾選這個。
最后生成的文件的文件名你會發現和axf文件名是一致的,只是后綴不同,變成了 hex:
所以你在工程目錄下可以搜到 rtthread-stm32.hex 文件,為了接下來更好的進行說明,魚鷹將這個文件名修改為 rtthread.hex,這樣就不會認為我們接下來下載的是 axf 文件了。
下載 HEX 文件最關鍵的兩點來了:
最后選擇合適的調試器,配置好下載 axf 文件時的相關參數(即能用調試器正常下載 axf 文件即可)。
最后點擊下載按鈕即可完成下載。
是不是很簡單?
如果說經常需要下載hex文件,每次要新建一個工程、打開工程、然后再修改參數,還是挺麻煩的,為了方便起見,我們可以為常用工程添加一個下載的目標,即多目標工程,類似這種:
這樣一來,只要事先設置好,切換目標后,即可快速完成下載,方便快捷。
什么,你還不知道怎么設置多目標工程?看這里:
《STM32工程模板建立之Simu 目標》
《STM32工程模板建立之RAM目標》
好了,再說說怎么保存 FLASH 或者 RAM 數據的問題。
有些時候,FLASH或 RAM保存了很多參數或者代碼,如果通過串口助手之類的工具打印出來再保存未免有些麻煩,事實上 KEIL 有命令可以幫助你快速將一塊數據保存為 HEX 文件,比如我想保存從地址 0x0800 0000 開始,大小為 0xC00 的數據,那么只要在 KEIL 命令行輸入以下命令即可完成保存,方便快捷,你值得擁有:
當然,你也可以在該命令后增加以下參數(后面加一個逗號再跟這個參數)以實現不同的訪問方式,是不是很貼心啊。
如果命令執行正確的話(上圖表示命令已執行正確,如果不正確會報錯的),你應該就能在工程目錄下找到你所需的 data.hex 文件了,然后用 HEX文件查看工具即可輕松查看,再也不需要串口打印啦!
是不是心動了?那就試試吧!
有相同愛好的可以進來一起討論哦:企鵝群號:1046795523
學習視頻資料:http://www.makeru.com.cn/live/1392_1164.html?s=143793