1. 程式人生 > >visualgdb下stm32工程模板修改

visualgdb下stm32工程模板修改

最近嘗試試用Visualgdb來調stm32。由於剛從Keil轉到visualgdb,有一些部分還不是很習慣。比如visualgdb中ST的std periph lib是以只讀的形式儲存在軟體安裝路徑下,而不是在工程檔案路徑下的。因此和keil的工程有部分難以相容。

因此在這裡整理區分並記錄一下。

首先分析keil中常用的Proj結構:

1、/user 中放stm32f10x_it.c main.c delay.c等使用者修改程度較大的檔案

2、/CMSIS 中儲存system_stm32f10x.c core_cm3.c 主要和cortex M3核有關。使用者基本不做修改。

3、/Liberaries 中儲存ST官方外設驅動庫

4、/Startup 放彙編啟動程式碼

可以看到使用者作修改的部分基本只有/user。

然後是分析visualgdb的結構:

1、/Source files/Device-specific files/StdPeriph 放core_cm3.c 和ST官方外設驅動庫

2、/Source files/Device-specific files 放startup_stm32f103xe.c和stm32.mak

3、/Source files 放main.c和system_stm32f10x.c

兩者對比差異如下:

1、keil中,所有檔案包含stm32f10x.h,而stm32f10x.h又包含了stm32f10x_conf.h。這個stm32f10x_conf.h裡包含了ST官方外設驅動庫的所有的*.h檔案。因此在呼叫這些外設庫函式時,只要包含stm32f10x.h即可。而根據vs的例程,visualgdb的庫中,一般用到哪個外設,就include這個外設的標頭檔案。而不是#include "stm32f10x.h"。此外,visualgdb的外設庫沒有stm32f10x_conf.h。

2、visualgdb的/Source files/Device-specific files下所有內容均在軟體安裝目錄下,不在工程資料夾中。工程資料夾中的檔案只有:main.c system_stm32f10x.c gcc_debug.h gcc_release.h。

為使得visualgdb相容keil的工程結構,修改如下

1、用keil的stm32f10x.h替換visualgdb的stm32f10x.h。原因是:我們需要stm32f10x_conf.h,但是這個檔案中有assert的巨集定義,而visualgdb的stm32f10x.h裡也有assert的巨集定義,會衝突。因此需要keil自己的stm32f10x.h和stm32f10x_conf.h。因此刪除stm32.mak中包含的$(BSP_ROOT)\STM32F1xxxx\CMSIS_StdPeriph\CM3\DeviceSupport\ST\STM32F10x

這條路徑。但是這個路徑下還有system_stm32f10x.c system_stm32f10x.h。前者在工程資料夾下也有,路徑沒了沒關係。但是後者工程資料夾下沒有。因此,從keil處拷貝一份到工程資料夾下。

因此,第1條中,要從keil複製的有:stm32f10x.h stm32f10x_conf.h system_stm32f10x.h。並且要刪除對應原有的內容或者移除路徑。

2、按照需要複製stm32f10x_it.c