假期備戰藍橋杯stm32學習筆記(一)

版權聲明:本文爲博主原創文章,轉載註明出處。 https://blog.csdn.net/Adrian_1/article/details/50514662

在core_cm3.c文件中有關於類型的定義

 

Core_cm3.c與啓動文件一樣都是底層文件

Ststem_stm32f10x.c文件是用來設置系統時鐘和總線時鐘 實現系統時鐘的時候要用到

PLL(鎖相環),需要操作寄存器。寄存器十一存儲器映射的方式訪問的。所以

這個c文件需包含stm32f10x.h

Stm32f10x.h包含了 stm32中的寄存器地址和結構體類型定義。

 

啓動文件的作用:

初始化堆棧指針sp

初始化程序計數器指針pc

設置堆、棧的大小。

設置異常向量表的入口地址

配置外部SRAM作爲數據存儲器

設置C庫的分支入口__main

調用了ststem_stm32f10x.c文件中的SystemIni()函數配置系統時鐘

 

Stm32f10x_it.c是專門寫中斷服務函數的,定義了一些系統異常的接口

其他的普通中斷函數由我們自己添加

 

Stm32f10x_conf.h 文件被包含進了stm32f10x.h.用來配置使用了哪些外設的

頭文件,可以把用不到的頭文件註釋掉


PERIPH_BASE = 0x40000000, 0x40000000這個地址是偏上512Mb尋址空間的第一個地址。即外設基地址、

 

APB2PERIPH_BASE = PERIPH_BASE + 0x10000.因爲stm32的不同外設掛在不同的總線上。Stm32有AHB總線、APB2總線、和APB2總線。

那APB2PERIPH_BASE爲APB2總線外設基地址、

APB1 = 0x40000000

AHB = 0x40018000

 

STM32 參考手冊的各個寄存器左上角一般有。地址偏移

 

這個地址偏移。這就是該寄存器組對應所在寄存器組基地址的偏移量。

 

Stm32爲了實現低功耗, 設計了一個功能完善但非常複雜的時鐘系統。普通的MCU一般只要設置好GPIO寄存器就可以使用了,但是STM32還有一個步驟就是開啓外設時鐘。

 

STM32有4個時鐘源

1.高速外部時鐘(HSE):以外部晶振作爲時鐘源,晶振頻率可取範圍爲4~16MHz

2.高速內部時鐘(HSI):由內部RC振盪器產生,頻率爲8MHz,不穩定

3.低速外部時鐘(LSE):以外部晶振作爲時鐘源,主要提供給實時時鐘模塊,所以一般採用 32.768kHz

4.低速內部時鐘(LSI):由內部RC振盪器產生,也提供給實時時鐘模塊,頻率大約40kHz

 

與我們開發密切相關的時鐘。

1.SYSCLK:系統時鐘,是STM32大部分器件的時鐘來源, 主要由AHB預分頻器分配到各個部件

 

2.HCLK: 有AHB預分頻器直接輸出得到, 他是高速總線AHB的時鐘信號, 提供給存儲器、DMA及Cortex內核, 是Cortex內核運行的時鐘,CPU主頻就是這個信號,它的大小與STM32運算速度、數據存取速度密切相關。

 

3.FCLK:同樣由AHB預分頻器輸出得到,是內核的“自由運行時鐘”。 “自由”表現在它不來自時鐘HCLK, 因此在HCLK時鐘停止時FCLK也繼續運行。它的存在可以保證,在處理其休眠時也能夠採樣到終端和跟蹤事件,它與HCLK互動同步。

 

4.PCLK1: 外設時鐘, 由APB1預分頻器輸出得到,最大分頻爲36MHz, 提供給掛載在APB1總線上的外設。

 

5.PCLK2: 外設時鐘, 由APB2預分頻器輸出得到,最大分頻爲36MHz, 提供給掛載在APB2總線上的外設。

 

每個外設都配備有外設時鐘的開關, 當不使用某個設備時, 可以把這個外設時鐘關閉, 從而降低功耗, 所以,當我們使用外設的時候就要記得開啓外設時鐘。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章