娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32入門之文件結(jié)構(gòu)

發(fā)布者:GoldenEclipse最新更新時間:2025-01-02 來源: jianshu關(guān)鍵字:STM32  入門  文件結(jié)構(gòu) 手機看文章 掃描二維碼
隨時隨地手機看文章

本人在學(xué)習STM32過程中,主要使用的是B站洋桃電子的課程(之前使用過正點原子的視頻,感覺不適合本人這種小白),因而其中許多代碼借鑒(抄)了其課程,故在此說明。


文件樹

stm32文件樹


可以看到,該文件分為六大部分,不同人對其起名可能有出入,或者文件結(jié)構(gòu)有略微區(qū)別。但其關(guān)鍵的幾個部分及開發(fā)方式是基本相同的。

STARTUP

其中STARTUP是STM32的啟動代碼,用匯編語言編寫。
我們正常在操作一款單片機的時候,都是從main函數(shù)開始進行編程的,但是單片機上電是從main函數(shù)開始執(zhí)行的嗎?答案當然是否定的,在main函數(shù)之前單片機最先執(zhí)行的是硬件設(shè)置SP、PC然后是“啟動文件”,一般主要是項目文件里面的startup_xxxxx.s文件。其實這個就是我們常說的Bootloader。

其實不光STM32系列單片機是這樣,我們接觸的NXP的微控制器、TI的MSP430以及51單片機等等其實都是有上述的啟動文件的。啟動文件負責的就是從單片機復(fù)位開始到main函數(shù)之前這段時間所需要進行的工作。我們一般很少接觸啟動文件的主要原因是開發(fā)環(huán)境往往給開發(fā)者自動的提供了這個啟動文件,不需要我們再去操心,直接從main函數(shù)開始進行設(shè)計就可以了。
這里我們嵌入一些匯編代碼(我也看不懂)在做單片機開發(fā)的時候,這一塊不用改動

Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


;  Heap Configuration
;     Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; Heap_Size       EQU     0x00000200

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

                PRESERVE8
                THUMB


; Vector Table Mapped to Address 0 at Reset
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors
                EXPORT  __Vectors_End
                EXPORT  __Vectors_Size

CMSIS

CMSIS


這一塊的.c文件有兩個,分別是Arm Coxert-M3(單片機內(nèi)核)和STM32F103系列的系統(tǒng)文件(官方提供文件,無需編寫)

FWLB

即固件庫
這部分是STM32的固件庫文件,這個庫就是“庫函數(shù)版”的“庫”,STM32有使用標準庫版本開發(fā)的,有使用HAL庫開發(fā)的,有使用LL庫,也有使用寄存器版本的,當然,也有大佬使用自己寫的庫。
這部分可以根據(jù)自己項目需求添加或者刪除,但是最基本的misc.c,gpio.c,rcc.c需要保留,如果項目中要用到SPI通信連接外設(shè),則需添加spi對應(yīng)的固件庫。

以下是所有的固件庫文件


QQ截圖20210414211725.png

例如在實際開發(fā)中,比如這個點燈,我只使用了兩個:


QQ截圖20210414211754.png

USER

用戶文件夾,用于編寫工程中外設(shè)的源文件和頭文件,以及main函數(shù),這是單片機開發(fā)程序編寫的主要文件。


QQ截圖20210414212446.png

這是點燈程序的文件目錄,包括一個main文件,一個系統(tǒng)的it.c文件,還有l(wèi)ed燈外設(shè),一個按鍵外設(shè)。

當然還有人將所有外設(shè)統(tǒng)一放置在一個HARDWARE文件下。

#include 'stm32f10x.h'

#include 'bsp_led.h'  

#include 'bsp_key.h' 



int main(void)

{   

    

    LED_GPIO_Config();

    LED1_ON;



    Key_GPIO_Config();

    

    

    while(1)                            

    {      

        if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  )

        {

        

            LED1_TOGGLE;

        } 


        if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON  )

        {

            /*LED2·′×a*/

            LED2_TOGGLE;

        }       

    }

}


在main.c文件中引用外設(shè)的頭文件,即可調(diào)用相關(guān)函數(shù)進行編寫。這里main函數(shù)主要是1通過掃描按鍵狀態(tài)控制led燈反轉(zhuǎn)。


DOC

即doc文檔,負責對代碼進行說明,不屬于代碼文件,主要是為了記錄代碼開發(fā)過程中的說明,便于閱讀代碼。


Basic

這一塊主要放一些公用性極強的代碼文件,比如sys.c,dalay.c(用于實現(xiàn)軟件延時)


QQ截圖20210414213608.png


在單片機中實現(xiàn)精準的延時是非常重要的,這里我們參考了大神的延時方法:

#define AHB_INPUT  72 void delay_us(u32 uS){  
    SysTick->LOAD=AHB_INPUT*uS;      
    SysTick->VAL=0x00;        
    SysTick->CTRL=0x00000005;
    while(!(SysTick->CTRL&0x00010000)); 
    SysTick->CTRL=0x00000004;}void delay_ms(u16 ms){                
    while( ms-- != 0){
        delay_us(1000); 
    }}
 void delay_s(u16 s){              
    while( s-- != 0){
        delay_ms(1000);
    }}

通過對滴答定時器的操作實現(xiàn)了精準的s,ms,微秒級延時。


關(guān)鍵字:STM32  入門  文件結(jié)構(gòu) 引用地址:STM32入門之文件結(jié)構(gòu)

上一篇:入門單片機stm32定時器詳解
下一篇:STM32代碼的啟動過程

推薦閱讀最新更新時間:2025-05-30 11:47

《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第4章 庫開發(fā)簡介
4.1 STM32 系統(tǒng)架構(gòu) STM32 的系統(tǒng)架構(gòu)比 51 單片機就要強大很多了。首先我們看看 STM32 的系統(tǒng)架構(gòu)圖: 圖1 系統(tǒng)架構(gòu) STM32 主系統(tǒng)主要由四個驅(qū)動單元和四個被動單元構(gòu)成。 四個驅(qū)動單元 ? 內(nèi)核 DCode 總線; ? 系統(tǒng)總線; ? 通用 DMA1; ? 通用 DMA2; 四被動單元 ? AHB 到 APB 的橋:連接所有的 APB 設(shè)備; ? 內(nèi)部 FlASH 閃存; ? 內(nèi)部 SRAM; ? FSMC; 下面我們具體講解一下圖中幾個總線的知識: ① ICode 總線:該總線將 M3 內(nèi)核指令總線和閃存指令接口相連,指令的預(yù)取在該總線上面完成。 ② DCode 總線:該總
[單片機]
《嵌入式-<font color='red'>STM32</font>開發(fā)指南》第一部分 <font color='red'>入門</font>篇 - 第4章 庫開發(fā)簡介
如何學(xué)習STM32STM32入門學(xué)習經(jīng)驗總結(jié)
一、入門總結(jié) 1.1為什么要把時間花在“猶豫”上? 每當我們在入門之前(ARM是這樣,DSP也一樣),總會有很多疑問,會有很多顧慮。我們渴望知道學(xué)習STM32前景如何?需要啥基礎(chǔ)?難不難?適不適合我?但是什么時候能心潮澎湃地、相當著急地開始學(xué)STM32?日子在一天一天過去!你開始行動了嗎?沒有行動的思索,永遠都不可能入門!把這些時間用來看書吧,效果能好一萬倍。 大家可能是從51單片機過來的,回想一下,我們之前學(xué)單片機時如何入門呢?實際上都是先看書(理論),再玩板子(實踐)。嚴格地說,應(yīng)該是模仿實驗。熟悉之后才會自己寫程序代碼實現(xiàn)某個功能。因此,如果你正在咨詢STM32;如果你正對STM32心潮澎湃;如果你想入門STM32;那么
[單片機]
STM32入門學(xué)習筆記之MPU6050傳感器解析實驗4
(2)創(chuàng)建mpu6050.c文件,輸入以下代碼。 /********************************************************************************************************* MUP6050 驅(qū) 動 程 序 *********************************************************************************************************/ #include mpu6050.h #include delay.h /***********
[單片機]
STM32入門學(xué)習筆記之時鐘樹架構(gòu)(下)
(2) 時鐘配置寄存器 :RCC_CFGR 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 - MCO - USBPRE PLLMUL PLLXTPRE PLLSRC 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADCPRE PPRE2 PPRE1 HPRE SWS SW Bit 26~Bit 24:芯片時鐘輸出 0xx:禁止輸出 100:選擇系統(tǒng)時鐘SYSCLK 101:選擇HSI時鐘 110:選擇HSE時鐘 111:選擇PLL分頻輸出(2分頻) Bit 22:U
[單片機]
<font color='red'>STM32</font><font color='red'>入門</font>學(xué)習筆記之時鐘樹架構(gòu)(下)
STM32入門開發(fā)--LED模塊實現(xiàn)跑馬燈
1、案例描述 利用STM32F103ZE開發(fā)板實現(xiàn)控制LED燈實現(xiàn)跑馬燈現(xiàn)象。 正在不斷學(xué)習嵌入式開發(fā)中,博客還會持續(xù)更新,敬請關(guān)注! 2、開發(fā)環(huán)境 keil 5.14 + Windows 10 + FlyMcu 參考資料:STM32參考手冊 3、實現(xiàn)原理 A.根據(jù)硬件接口圖: 由接口圖發(fā)現(xiàn),開發(fā)板上面的兩個LED分別接在PB5,和PE5接口處。即我們可以操作GPIO口的寄存器從而操作GPIO端口的控制器。 B、初始化(使能)PB,PE端口,查找手冊發(fā)現(xiàn)端口PB,PE分別由APB2ENR端口的第三位和第六位控制。我們就將該位置1,其他位不變(|=操作) APB2ENR:外設(shè)時鐘使能寄存器
[單片機]
<font color='red'>STM32</font><font color='red'>入門</font>開發(fā)--LED模塊實現(xiàn)跑馬燈
STM32學(xué)前班教程之二:怎么開發(fā)-入門需知
該產(chǎn)品為簡易STM32調(diào)試器和DEMO板一體化的調(diào)試學(xué)習設(shè)備,價格在一百多塊。 2、硬件配置 仿真部分:USB口,reset,指示燈,JTAG DEMO部分:4按鍵(IO),4LED(IO),一個串口,啟動方式跳線,所有引腳的焊盤(可自行焊接插針進行擴展) DEMO芯片:STM32F103C8T6(程序空間64K) 參數(shù)和擴展: 注:學(xué)習的目標芯片是STM32F103CBT6(7 7mm,128K flash,16K RAM)以及STM32F103RET6(10 10mm,512K flash,64K RAM)。 STM32-SK的硬件連接方法(用板載調(diào)試器調(diào)試板載DEMO): JP3、JP5 須全部短接 USB通
[單片機]
STM32CubeMx入門教程(2):USART的使用
?硬件 野火指南者開發(fā)板 ?軟件 CubeMx & MDK & 串口調(diào)試助手 1.STM32CubeMx 配置 USART的配置 我們延續(xù)LED項目的時鐘配置,在LED的基礎(chǔ)上配置USART。使用CubeMX打開LED燈的項目。 原理圖 我們從原理圖中可以看出串口1使用的是PA10 & PA9 這兩個引腳。 CubeMx 在cubeMx的配置中,我們主要按照上圖的配置就可以了,使能串口1 ,異步模式,硬件流控制關(guān)閉,在參數(shù)設(shè)置中,波特率為115200,8位數(shù)據(jù),無優(yōu)先級,1位停止位,方向發(fā)送和接收。Project 和Code Generator , Advanced Settings 和第一個LED項目設(shè)置是一樣的,可
[單片機]
STM32CubeMx<font color='red'>入門</font>教程(2):USART的使用
msp432快速入門第九節(jié)之pwm輸出
(一)定時器TA輸出PWM介紹 首先查看下TI的usermanual,支持PWM輸出的定時器只有TAx定時器,Timer32是不支持直接PWM輸出,所以采用TA輸出PWM,首先查看一下他的寄存器和說明: 這里指出使用輸出比較來輸出PWM波,主要需要注意的就是PWM的頻率配置,最大比較計數(shù)值,連續(xù)模式使能即可 (二)配置PWM輸出 在這里我們使用連續(xù)模式進行輸出比較來輸出PWM波,參照TI的driver lib進行直接配置,使用TA0輸出一路PWM信號驅(qū)動5V舵機MG996R,輸出引腳為P2.4,注意SMCLK總線頻率是已經(jīng)配置好為12M,配置PWM的周期為20ms,以一個0.5~2.5ms的高電平方波來控制舵機角度:
[單片機]
msp432快速<font color='red'>入門</font>第九節(jié)之pwm輸出
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 隆子县| 淅川县| 宜君县| 台北县| 高尔夫| 南投市| 柳州市| 伊宁县| 澄城县| 高碑店市| 孝义市| 弥勒县| 西华县| 永兴县| 舒兰市| 长沙市| 金阳县| 宁德市| 大安市| 延长县| 昌宁县| 淳安县| 阳曲县| 当雄县| 温泉县| 克山县| 锡林浩特市| 茂名市| 宜良县| 三门县| 镶黄旗| 昌江| 儋州市| 如东县| 策勒县| 广水市| 凤山市| 彰化县| 青州市| 土默特右旗| 孟州市|