STM32-StdPeriph函數庫使用的預備知識

1.概述

STM32-StdPeriph庫是st(意法半導體)官方針對stm32系列單片機編寫的固件函數庫,由程序、數據結構和宏構成,包括了微控制器所有的性能特徵。使用該庫能大大減少開發週期,使開發人員得以拋開繁重的硬件細節,將精力集中於算法和功能實現之上。

2.STM32存儲結構

一言以蔽之,單片機開發編程就是使用C和彙編語言,對單片機寄存器進行讀寫操作,從而實現特定功能。因此,瞭解MCU的存儲結構非常重要。stm32單片機的程序、數據、寄存器和IO口統一編址,採用32位總線,最大可尋址空間達4GB。此處解釋一下4GB的由來:32位總線可表示2^32=4G個地址,每個地址對應1字節的存儲空間。下面以stm32f0xx型單片機爲例,介紹MCU通用的存儲結構。
stm32f0xx內存映射圖
上圖來源:stm32f030 reference manual.

3.STM32初始化

單片機上電後,CPU首先採樣BOOT0和BOOT1兩個引腳的電平值,根據它們的bit組合確定啓動模式,若BOOT0和BOOT1已被接地(00模式),則Flash memory的地址(上圖中從0x08000000開始的編址區)將被映射到0x00000000。程序從0x00000000開始執行。
Tips:有的同學可能會問:嵌入式系統不是有個bootloader用於系統啓動嗎,爲什麼你沒有提到?事實上stm32單片機同樣有一段bootloader代碼,在每片MCU出廠時由廠家燒入system memory,但它的主要作用是通過片上可用的串行外設(如USART、USB及SPI等)下載應用程序到Flash memory,本身並不提供硬件初始化程式。通過BOOT0和BOOT1置位可設置爲system memory啓動,調用bootloader程序。簡單來講,我們通過SWD接口已將應用程序燒入Flash memory的情況下不需要多此一舉。
顯然最開始執行的是硬件初始化程序,stm32f0xx系列單片機使用ARM CortexM0內核的MCU,遵循統一的CMSIS接口標準,所以它們的初始化程序已由ARM寫好,開發時先從CMSIS庫中找到該啓動文件,一般格式爲startup_stm32f0xx.s(根據具體型號選擇),將它加入工程。編譯器在編譯和鏈接時會把這段代碼放在最低地址處,當程序的最終形態——二進制流通過SWD燒入片上Flash後,首先運行該段代碼。
startup_stm32f0xx.s主要完成三件事:1. 分配heap和stack的片上RAM空間;2. 將中斷向量表映射到起始地址;3.執行Reset_Handler,進入系統初始化程序,完成後跳轉到main()函數入口地址。系統初始化程序的任務是確定系統時鐘來源,形成時鐘樹(分配時鐘到各級資源),它的一般格式是system_stm32f0xx.c,同樣位於CMSIS庫,需事先加入工程。
此後按照main()函數語句順序執行,mcu進入正常工作狀態。
Tips:程序運行時,代碼、const數據位於主Flash內存區,CPU通過Flash接口調用指令和數據,根據指令執行寄存器尋址及邏輯運算;全局變量、靜態局部變量位於SRAM的靜態存儲區,它們所佔空間已在編譯階段確定;局部變量位於事先分配好的SRAM  stack區內,動態申請的變量位於SRAM  heap區,其空間需人工釋放。

4.stm32f0xx.h和core_cm0.h

前面提到,單片機編程的實質是操作寄存器,而這些寄存器都有相應的統一編址。通過閱讀參考手冊,瞭解特定寄存器 各位的功能,根據需要置位或復位。stm32單片機片上資源豐富,外設繁多,因此寄存器數目衆多。stm32f0xx.h是st官方基於CM0微處理器架構編寫的外設寄存器訪問層頭文件,包含了stm32f0xx設備所有外設寄存器的定義、位定義及內存映射。core_cm0.h是ARM官方基於CM0架構編寫的MCU core Peripheral access layer 頭文件(尚未找到準確的翻譯,此處使用英文)。使用兩者及它們包含的其他輔助頭文件便能設計出完整的應用代碼。但這種讀寫寄存器的方式顯得原始而複雜,也不符合現代軟件工程硬件抽象、分層封裝的思想。爲了給開發人員提供輕便簡易的應用編程接口,st官方基於以上文件定義的寄存器和數據類型,遵循其代碼風格開發了StdPeriph固件函數庫,將寄存器定義爲結構或聯合類型,對寄存器的操作定義爲結構類型,對寄存器的賦值定義爲宏,同一性質賦值的集合定義爲枚舉類型,它們通過特定功能的函數實現調用。由此,單片機應用開發者只需根據庫提供的接口函數,就能完成各項資源的配置和初始化,以及完成一些常用的外設操作。

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