今天把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兩種方式。