STM32F407VET6之IAR之ewarm7.80.4工程建立(基於官方韌體庫1.6版本)
今天把stm32F407的工程之IAR建立完成了,特此記錄下。
下載官方韌體庫,STM32F4xx_DSP_StdPeriph_Lib_V1.6.1,V1.8.0版本的同理。
新建以下幾個檔案
src放官方的各個c檔案
inc放官方的各個h檔案,以及使用者的h檔案,這樣可以方便在options裡只需要一個目錄即可,方便點。
cmsis 放官方的.s彙編檔案,.icf檔案,icf檔案是iar特有的,keil建立工程沒有這個檔案的。
user,放使用者自己的C檔案
project,放置iar工程,就是工程檔案*.ewp所在目錄
無obj目錄,iar會自動建立該檔案的。
最後的目錄如下所示:
檔案的來源,可以在STM32F4xx_DSP_StdPeriph_Lib_V1.6.1檔案中查詢,
韌體庫的目錄展開如下:有點長啊~~部落格上面放不下。
針對STM32F407需要的,我摘錄了部分,主要是拷貝
1、STM32F4xx_StdPeriph_Driver下的inc,src兩個資料夾,
2、Libraries\CMSIS\下的Include資料夾,
3、STM32F4xx_StdPeriph_Templates模板當中的檔案,
4、STM32F4xx_StdPeriph_Templates\EWARM下的icf檔案,
5、Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar下的彙編檔案
其實工程需要的檔案可以參考下官方自帶的模板,相互結合,就可以了。
工程設定:
0、選擇stm32f407VE晶片
1、庫配置Library Configration(在general options下),如果需要使用某些標準的庫函式介面(如我們使用的printf and scanf),就需要選擇Full。
2、預處理Preprocessor - 新增h標頭檔案的路徑,這裡我比較簡單,所有h檔案都放在一起的,因此新增
$PROJ_DIR$\..\inc\
即可,新版的IAR可以自動把絕對路徑轉換成上述的路徑,可以自行試試看,挺方便的。這樣的好處是工程可以拷貝到另外一個資料夾,而不需要在設定標頭檔案路徑了
3、新增巨集定義,
USE_STDPERIPH_DRIVER
STM32F40_41xxx
一行一個即可
4、use cmsis不打鉤也可以編譯成功。。
5、輸出hex檔案,output convert選項中,打鉤generate...選擇Intel extended,再輸入輸出名稱override default。
6、linker選擇,新增$PROJ_DIR$\..\cmsis\stm32f4xx_flash.icf。另外iar自帶了$TOOLKIT_DIR$\config\linker\ST\stm32f407xE.icf檔案,也可以編譯成功的。
最後,stm32F407,沒有fmc.c的功能,因此可以remove該檔案,不然一大堆編譯錯誤
7、如果需要jlink,等,可以參考其他的文章,線上模擬有jtag,swd兩種方式。