以前搞過stm32開發,不過長時間不搞已經忘的差不多了,最近手頭一個項目要用stm32開,幾經周折,查閱了大量的資料,博客終于搞出來個helloworld,記錄下過程,為自己也為入門的朋友們做個提醒吧!首先說下我的環境:
編譯工具:Keil V4.10
下載工具:Flash Loader Demonstrator
固件庫版本:V3.5.0
下載方式:串口下載(沒用仿真器)
前兩個工具百度一下就行,固件庫我是從官網下載的,路徑如下
登錄st官網,右上角選擇中文,然后 支持-->Tools andSoftware-->軟件-->微控制器軟件-->STM32微控制器軟件。
然后在Software Type 下勾選Firmware,在Software Version下勾選3.5.0,點擊篩選之后的那個選項,并下載它(固件庫),感覺下載工具也可以在官網下載的,但是沒時間去摸索了,有興趣的朋友可以去找找。
有了下載工具,編譯軟件,固件庫之后,我們的任務就是通過keil生成hex文件,并通過下載工具將其下載到stm32中,下面介紹一下工程的建立規范吧。
……
算了,不介紹了,太麻煩了,我給出我當時參考的博文吧:
http://www.cnblogs.com/emouse/archive/2012/03/01/2375146.html
參照以上文章給的步驟,就能建立起一個比較規范的工程,這里我再補充幾點,
1. 啟動文件的容量選擇上參考以下標準:
小容量是16~32K
中容量是64~128K
大容量是大于256K
至于你的芯片容量是多少,請對照手冊自行翻譯吧:

2. 我選擇復制的第一個工程是
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\Printf
編譯過程中遇見一些bug,這里說下解決辦法:
1)..\USER\main.c(24): error: #5: cannot opensource input file "stm32_eval.h": No such file or directory
關于這個bug,搜了一下,大致就是官方給的程序調用了比較高一層的封裝函數,而上面博文給出的步驟顯然沒有將這個文件考慮在內,所以我們要多進行幾步。
這個函數在 STM32F10x_StdPeriph_Lib_V3.5.0\Utilities\STM32_EVAL下,復制它到我們的工程的LIB目錄下,然后添加它的路徑到我們我們的工程中,就是鏈接博文的這一步:
然后將stm32_eval.c添加到我們工程的User目錄下
編譯后,發現錯誤變成了這樣:
..\LIB\Utilities\STM32_EVAL\stm32_eval.h(169): error: #35: #errordirective: "Please select first theSTM32 EVAL board to be used (instm32_eval.h)"
..\LIB\Utilities\STM32_EVAL\stm32_eval.h: #error "Please selectfirst the STM32 EVAL board to beused (in stm32_eval.h)"
關于這個錯誤,請大家打開stm32_eval.h,中間有下面這樣一段話:
#if !defined (USE_STM32100B_EVAL) && !defined(USE_STM3210B_EVAL) && !defined(USE_STM3210E_EVAL)\
&& !defined (USE_STM3210C_EVAL)&& !defined (USE_STM32L152_EVAL)&& !defined(USE_STM32100E_EVAL)
//#define USE_STM32100B_EVAL
//#define USE_STM3210B_EVAL
//#define USE_STM3210E_EVAL
//#define USE_STM3210C_EVAL
//#define USE_STM32L152_EVAL
//#define USE_STM32100E_EVAL
#endif
這段話,我猜測是根據STM32不同的官方樣品板,上層的封裝函數可能有不同,故設計一個宏定義來進行配置,對,應該就是這樣……
假如誰用的是官方樣品板子的話,就根據自己的型號進行宏定義,我是自己畫的板子,所以隨便選嘍!就以
USE_STM32100E_EVAL為例進行宏定義。
第一種方法,你可以把自己型號前的那個注釋個去掉。
第二種方法,在keil中配置宏定義,如下
顯然,第二種方法比較高大上一些,也利于管理,推薦給大家。
再次編譯,通過了。
然后就是下載了。
插上板子,啟動模式調成 boot0 :1 boot1:0
上電,打開下載工具,選擇串口號,一路默認,選擇hex文件,下載。
斷電,啟動模式調成 boot0:0 boot1:0
上電,成功運行(希望如此吧)。
對了,鏈接所給的那個博文有幾個地方在稍微提醒一下:
由于我們使用的是串口下載,故這個地方我們就選擇默認的左側的那個紅圈。
還有
宏定義之間使用英文的","分開,剛開始我還以為是空格那。
對了還有最重要一點:
圖中的那個Use MicroLIB一定要勾選上,一定要勾選上,一定要勾選上,重要的事情說三遍!
寫這篇文章的時候,我同步創建了一個新工程,應該沒有問題了。 恩,就這樣了,希望有幫助到人。
|