久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

學(xué)習(xí)筆記7

 SDNUC 2022-11-23 發(fā)布于山東

主要針對一些使用較多,、但本人并不十分清楚其作用的stm32官方.c/.h文件進(jìn)行系統(tǒng)的梳理。貼上官網(wǎng)標(biāo)準(zhǔn)庫下載地址(操作如下圖),,或是直接下載這個附件,。在這里插入圖片描述

簡介

首先要搞清楚文件之間的關(guān)系,。上圖,。

在這里插入圖片描述
打開固件庫文件。Libraries 文件夾下面有CMSISSTM32F1xx_StdPeriph_Driver 兩個目錄,,這兩個目錄包含固件庫核心的所有子文件夾和文件,。
Libraries
1)CMSIS存放的是符合CMSIS規(guī)范的文件。包括STM32F1核內(nèi)外設(shè)訪問層代碼,,DSP 軟件庫,,RTOS API,以及 STM32F1 片上外設(shè)訪問層代碼等,。
2)STM32F1xx_StdPeriph_Driver放的是 STM32F1 標(biāo)準(zhǔn)外設(shè)固件庫源碼文件和對應(yīng)的頭文件,。inc 目錄存放的是 stm32f1xx_ppp.h 頭文件,無需改動。src 目錄下面放的是 stm32f1xx_ppp.c 格式的固件庫源碼文件,。每一個.c 文件和一個相應(yīng)的.h 文件對應(yīng),每個外設(shè)對應(yīng)一組文件,。
***Project ***
1)STM32F1xx_StdPeriph_Examples 文件夾下面存放的的 ST 官方提供的固件實(shí)例源碼,日后開發(fā)可修改這個官方提供的實(shí)例來快速驅(qū)動自己的外設(shè),。
2)STM32F1xx_StdPeriph_Template 文件夾下面存放的是工程模板,。
Utilities
存放官方評估板的對應(yīng)源碼。

CMSIS共三層:核內(nèi)外設(shè)訪問層Core Peripheral Access Layer(CPAL),,中間件訪問層Middleware Access Layer(MWAL),,設(shè)備訪問層Device Peripheral Access Layer(DPAL)。
CPAL用于訪問內(nèi)核的寄存器和組件,,如NVIC,,調(diào)試系統(tǒng)等。
MWAL用于對中間件的訪問,。
DPAL用于定義一些硬件寄存器的地址和一些外設(shè)訪問函數(shù),。由芯片制造商實(shí)現(xiàn)。
CPAL層的實(shí)現(xiàn)——Core_cm3.c文件,,DPAL層的實(shí)現(xiàn)——system_stm32f10x.c文件

STM32全部的標(biāo)準(zhǔn)外設(shè)名稱如下表所示,。在這里插入圖片描述

工程目錄

比較喜歡這樣建工程

1、STARTUP----啟動文件
			startup_stm32f10x_hd.s
2,、CMSIS------CMSIS標(biāo)準(zhǔn)文件
			core_cm3.h			      內(nèi)核功能定義
			system_stm32f1xx.c		  系統(tǒng),c文件
			system_stm32f1xx.h		  系統(tǒng).h文件
			stm32f10x.h			      頭文件
3,、FWLIB------庫文件
			misc.c/.h
			stm32f10x_rcc.c/.h		庫函數(shù)源文件及對應(yīng)頭文件	
			stm32f10x_gpio.c/.h
			....
4、HARDWARE---外設(shè)文件
			oled,、key文件...
5,、SYSTEM-----系統(tǒng)文件
			位帶操作函數(shù)sys文件、延時函數(shù)delay文件,、串口操作函數(shù)usart文件...
6,、USER-------用戶文件
			main.c		              主源文件
			stm32f1xx_it.c		      中斷源文件
			stm32f1xx_it.h		      中斷.h文件
			XXX		                  工程文件

1、misc.c/h

一些版本的庫函數(shù)中沒有單獨(dú)對于NVIC的外設(shè)驅(qū)動,而是放在了misc.c ,,以替代原stm32f10x_nvic.c,。
定義了中斷優(yōu)先級分組以及 Systick 定時器相關(guān)的函數(shù)。

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src

2,、startup_stm32f10x_hd.s

不同F(xiàn)lash容量不同啟動文件(見下),。作用:設(shè)置堆棧、PC指針,、初始化中斷向量表,、配置系統(tǒng)時鐘等,。
在這里插入圖片描述啟動文件要引導(dǎo)進(jìn)入main 函數(shù),。Reset_Handler 中斷函數(shù)是唯一實(shí)現(xiàn)了的中斷處理函數(shù),其他的中斷函數(shù)基本都是死循環(huán),。Reset_handler 在系統(tǒng)啟動的時候會調(diào)用,。

; Reset handler
Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main
                IMPORT  SystemInit
                LDR     R0, =SystemInit
                BLX     R0               
                LDR     R0, =__main
                BX      R0
                ENDP

此段代碼的作用是在系統(tǒng)復(fù)位后引導(dǎo)進(jìn)入 main 函數(shù),同時在進(jìn)入 main 函數(shù)之前,,首先要調(diào)用 SystemInit()系統(tǒng)初始化函數(shù),。

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

3、system_stm32f10x.c/h

初始化時鐘的頻率,、系統(tǒng)時鐘,,設(shè)置中斷向量表的基地址和偏移地址。(這里有一個非常重要的SystemInit( )函數(shù)申明,,在系統(tǒng)啟動時都會調(diào)用,,以設(shè)置系統(tǒng)的整個系統(tǒng)和總線時鐘)
HSE=8M,經(jīng)過PLL倍頻為72M,。

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

5,、stm32f10x_conf.h

相當(dāng)于包含了所有的ST的3.5庫的頭文件,用戶在上層調(diào)用時只需要打開這個文件的注釋即可,。實(shí)際使用中,,會根據(jù)不同項(xiàng)目做改動(可注釋掉不需用到的文件)。
在這里插入圖片描述
stm32f10x.h頭文件中包含了stm32f10x_conf.h ,。

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

6,、stm32f10x_it.c/h

相當(dāng)于所有中斷函數(shù)入口,stm32f103的中斷入口名稱都固定,,方便移植,。事實(shí)上,用戶也可以把各自的中斷函數(shù)放在各自的模塊中而不使用該文件,,效果相同,。實(shí)際使用會根據(jù)不同項(xiàng)目做改動。
.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

7、core_cm3.c/h

由ARM 公司提供,。是CMSIS的核心文件,,提供進(jìn)入 M3 內(nèi)核接口,實(shí)現(xiàn)了內(nèi)核里面外設(shè)的寄存器映射,。不需要修改這個文件,。

1、NVIC相關(guān)的變量和函數(shù),。
中斷向量的使能 中斷向量的禁止 中斷向量的掛起 清除掛起的中斷 設(shè)置中斷的優(yōu)先級 讀取中斷的優(yōu)先級
2,、systick定時器的配置,static __INLINE uint32_t SysTick_Config(uint32_t ticks),;用來使能中斷,、開啟systick定時器。

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

8,、stm32f10x.h

十分重要的文件,!主要功能:

  1. 定義各種中斷向量表的順序
  2. 定義數(shù)據(jù)類型
  3. 定義MCU外設(shè)相關(guān)的結(jié)構(gòu)體
  4. 定義外設(shè)在FLASH中的地址
  5. 進(jìn)行外設(shè)寄存器的位定義

實(shí)現(xiàn)了內(nèi)核以外的外設(shè)的寄存器映射(映射到存儲區(qū)),相當(dāng)于51單片機(jī)中的<reg51.h>,。

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
   __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

//外設(shè)別名區(qū)的基地址
#define PERIPH_BASE         ((uint32_t)0x40000000) 
//APB2外設(shè)總線上寄存器的基地址,,GPIO掛在APB2總線上
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x10000) 
// GPIO外設(shè)的地址
#define GPIOA_BASE          (APB2PERIPH_BASE + 0x0800)
// 將外設(shè)地址強(qiáng)制轉(zhuǎn)化為結(jié)構(gòu)體的指針,然后就可以通過指針GPIOx區(qū)訪問某個端口中的寄存器
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)

.c路徑:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

9,、stm32f10x_xx.c/.h

stm32f10x_xx.c:外設(shè)的驅(qū)動函數(shù)庫文件
stm32f10x_xx.h:存放外設(shè)的初始化結(jié)構(gòu)體,,外設(shè)初始化結(jié)構(gòu)體成員的參數(shù)列表、外設(shè)固件庫函數(shù)的聲明

參考文章:1,、2,、34


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多