學習新知識我的一個方法是:
1.先把握住新東西大的一個框架、涉及的內(nèi)容、范圍;
簡而言之:理清架構(gòu),把握重點;
2.在看清楚大的框架所涉及的知識時,再度量哪些是我所需要必須學習的(重點),哪些是現(xiàn)在不急著掌握的可以以后學習;
簡而言之:去我所需,為我所用;
3.理論歸理論,掌握理論知識的基礎(chǔ)上,加以應用,能更深刻的理解這些知識點;
簡而言之:實踐出真知;
聲明:本文部分參考自--《STM32自學筆記集合》
第一講:
STM32是Cortex-M3系列之一,而Cortex-M3處理器采用的是ARMv7-M架構(gòu)。
系統(tǒng)架構(gòu):
希望大家關(guān)注AHB總線,這是貫穿所有外設的一條總線,上圖可知:AHB經(jīng)過橋接,由APB1、APB2控制著幾乎所有外設;
希望大家關(guān)注AHB總線,這是貫穿所有外設的一條總線,上圖可知:AHB經(jīng)過橋接,由APB1、APB2控制著幾乎所有外設;
&& APB2屬于高速設備; (控制著如:ADC、GPIO、EXIT、TIM1等外設)
&& APB1屬于低速設備; (控制著如:DAC、TIMx、USART、I2C等外設)
固件庫函數(shù):
STM32有兩種軟件開發(fā)方式:用庫和不用庫;
我們開講一下用庫開發(fā):
固件庫函數(shù):該函數(shù)庫是一個固件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了為控制器所有的外設性能特征。該函數(shù)還包括每個外設驅(qū)動描述和應用實例。
通過使用固件函數(shù)庫,無需深入掌握細節(jié),用戶也可以輕松包括每一個外設。因此,固件庫大大減少了用戶編程的時間,降低開發(fā)成本;
每個外設驅(qū)動都由一組函數(shù)組成,這組函數(shù)覆蓋了該外設所有功能,每個器件的開發(fā)都由一個通用的API(application programming interface應用編程接口)驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進行了標準化;
用庫函數(shù)開發(fā)的優(yōu)點: 1. 固件庫大大減少了用戶編程的時間,降低開發(fā)成本;
2.對初學者容易上手,無需深入掌握細節(jié),也可以輕松包括每一個外設。
缺點:(1)沒有深入系統(tǒng)架構(gòu),寄存器的控制的掌握和理解;
(2)編譯效率低,速度慢;
不用庫開發(fā)的優(yōu)缺點:反之;
函數(shù)庫一般放在FWlib目錄下的inc文件夾內(nèi):如圖
用庫入門,用寄存器提高:
下面是庫文件的結(jié)構(gòu)圖:
根據(jù)這張圖課家里自己的工程;
應用層軟件是依賴于第二層的定義和第三層相關(guān)庫函數(shù)文件完成的;如果你不想用庫,你可以利用stm32f10x.h中寄存器和結(jié)構(gòu)體的定義直接對寄存器操作。而用庫開發(fā)則是依靠第三層已經(jīng)定義好的一些函數(shù)直接進行函數(shù)調(diào)用。下面將會解釋幾個關(guān)鍵頭文件。
stmf10x.h : 定義了芯片類型及外設,并引入了另外三個頭文件
# include “core_cm3.h” //arm公司為了標準化M3內(nèi)核的一些聲明
# include “system_stm32f10x.h”//系統(tǒng)時鐘APB1、APB2時鐘的一些外部聲明
# include
上圖中stm32f10x_it.c是專門存放中斷函數(shù)的。
在引入頭文件過后,定義了一些變量類型,和外設相關(guān)的結(jié)構(gòu)體、外設常量。
做好這些文件銜接的工程中還需要一個啟動文件,雖然說開發(fā)時不需要你去了解,因為早已有人先寫好了,但是希望有興趣的可以去了解啟動過程下是如何運作的。
一下按照對軟件結(jié)構(gòu)的理解,建立的一套工程模板。原因是如果使用庫,那么建立工程時會很繁瑣,如果有了一套適宜自己的模板,那么開發(fā)起來會很順手。
另外需要知道的縮略詞,如圖:
希望自己理解建立一個工程模板;這樣才是有所用,否則看這篇文章也是浪費時間;