最近嘗試試用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)\stm32f1***x\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
預熱2 什麼是STM32?認識STM32
1 什麼是stm32 stm32是由arm公司設計,意法半導體 st 公司生產的基於 arm cortex m 核心的32 位的mcu 系列。2 stm32能做什麼?stm32 屬於乙個微控制器,適用於控制類,自帶了各種常用通訊介面,比如 usart i2c spi 等,可接非常多的感測器,可以控制...
stm32晶元休眠模式 stm32實現待機喚醒
stm32的低功耗模式有3種 1 睡眠模式 cm3核心停止,外設仍然執行 2 停機模式 所有時鐘都停止 3 待機模式 1.8v核心電源關閉 進入待機模式的方法,以及設定wk up引腳用於把stm32從待機模式喚醒的方法 一般步驟如下 1 設定sleepdeep位 scb scr的第二位 2 使能電源...
STM32學習筆記(3) 什麼是STM32
既然已經做好了開發stm32的準備,軟體硬體都準備好了,那麼我們來了解一下何為stm32吧。stm32是意法半導體 st 設計的一系列32位晶元的名字,細分為l f h三個系列。f系列是最經典的系列。f系列的基礎晶元是f1系列,低廉,麻雀雖小五臟俱全,我做課程設計最喜歡用的就是stm32f103c8...