STM32 ARM學習錦集一
內容簡介
1、最小外圍電路
2、啟動模式儲存器
3、對映暫存器對映
4、訪問暫存器內容
5、GPIO工作模式
6、安裝KEIL5
7、GPIO初始化
8、埠配置及輸出模式
9、啟動檔案功能
10、韌體庫檔案
一、最小外圍電路
電源電路
復位電路
晶振電路
下載電路
二、啟動模式
透過BOOT[1:0]引腳選擇三種;
設定串列埠下載程式碼,需配置BOOT0=1,BOOT1=0;
設定一按復位鍵就開始跑程式碼,需配置BOOT0=0,任何值BOOT1;
將內建SRAM設定為啟動區,需配置BOOT0=1,BOOT1=1;
三、儲存器對映
1、儲存器地址通常是由MCU廠商或使用者分配,而本身是不具有地址資訊的,這一給儲存器分配地址的過程為儲存器對映;
四、暫存器對映
1、暫存器即為自己使用時設定的名稱,該名稱為給具有特定功能記憶體單元所取,且該單元已分配好地址;
2、而這個設定過程即為暫存器對映;
五、訪問暫存器內容
1、採用的方式主要是透過指標的使用來操作STM32記憶體單元;
如設定STM32的GPIOC 0管腳輸出低電平;
首先確定GPIOC掛接於APB2總線上,確定其地址;
STM32匯流排地址
匯流排名稱 匯流排基地址 相對外設基地址的偏移
APB1 0x4000 0000 0x0
APB2 0x4001 0000 0x0001 0000
AHB 0x4001 8000 0x0001 8000
3、宏定義外設基地址
#define MS_BASE ((unsigned int)0x40000000)
4、分別定義APB2匯流排基地址
#define APB2MS_BASE (MS_BASE + 0x00010000)
5、宏定義埠外設地址
#define GPIOC_BASE (APB2MS_BASE + 0x1000)
定義GPIOC埠暫存器地址
#define GPIOC_BSRR *(unsigned int*)(GPIOC_BASE+0x10)
A、BSRR暫存器的BR0置 1為清零,GPIOC引腳0管腳,輸出低電平;GPIOC_BSRR = (0x01<<(16+0));
B、BSRR 暫存器的BS0置1,GPIOC 0管腳輸出高電平;
GPIOC_BSRR = 0x01<<0;
讀IDR暫存器可知GPIOC全部引腳電平狀態;
輸入資料暫存器(GPIOx_IDR),其在每個APB2時鐘週期都會捕捉I/O引腳上的資料;
unsigned int temp;
temp = GPIOC_IDR;
淺談GPIO結構
六、GPIO工作模式
通用輸入輸出埠統稱;
輸入浮空
輸入高阻抗,外部干擾對輸入狀態下的影響較小
輸入上拉
3、輸入下拉
4、模擬輸入
5、開漏輸出
只可輸出低電平,輸出高電平需要外接上拉;
開漏輸出具有線與功能,當內部出現一個匯流排動作為低,則輸出全部為低,如I2C的使用;
開漏複用功能
7、推輓式輸出
8、推輓式複用功能
推輓輸出開關效率高,驅動能力強;
灌電流即為輸出高電平,電流輸出到負載;
七、安裝KEIL5
Keil5需要單獨安裝晶片包,否則無法選擇晶片型別,Keil4則可以不用此操作。
晶片包直接雙擊安裝在KEIL5相應的目錄即可;
使用註冊機破解;
1、管理員身份執行KEIL5;
2、File-LicenseManagement;
3、複製程式碼;
4、Add LIC,完成破解;
八、GPIO初始化
1、確定GPIO的工作模式和工作速度
透過配置暫存器GPIOx_CRL、GPIOx_CRH;
輸出內容
置/復位暫存器:BSRR;
資料輸出暫存器:ODR;
九、埠配置及輸出模式
十、啟動檔案功能
1、初始化堆疊指標SP;
2、初始化程式計數器指標PC;
3、設定堆/棧的大小;
A、堆是程式在執行時,申請/給予記憶體的過程,由系統自動分配釋放;
B、棧/堆疊是指一種使用堆的方法-先進後出,由程式設計師分配釋放;
4、設定中斷向量表入口地址;
5、配置外部SRAM作為資料儲存器;
6、呼叫 SystemInit() 函式配置系統時鐘;
ARM Cortex微控制器軟體介面標準CMSIS;
十一、韌體庫檔案
1、標準外設庫稱為韌體庫;
2、是一個韌體函式包,由程式、資料結構、宏組成;
3、使用韌體庫可減少程式編寫開發時間;