本人在學(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 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_SizeHeap Size (in Bytes) <0x0-0xFFFFFFFF:8> ;
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,微秒級延時。
上一篇:入門單片機stm32定時器詳解
下一篇:STM32代碼的啟動過程
推薦閱讀最新更新時間:2025-05-30 11:47





設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機的無刷直流電機驅(qū)動器設(shè)計
- 超高速攝影機電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- STM32L053C8 MCU探索套件
- 帶有看門狗定時器的 CAT824MTDI-GT3 4.38V 系統(tǒng)監(jiān)控電壓監(jiān)視器的典型應(yīng)用
- ADR444A 4.096 Vout 超低噪聲、LDO XFET 電壓基準的典型應(yīng)用,具有電流吸收器和電流源
- AM1G-1215DH30Z ±15V 1 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- VN7008AJ評估板
- L7885C 帶溫度補償?shù)目烧{(diào)輸出電壓的典型應(yīng)用
- 使用 Analog Devices 的 LTC1596BISW 的參考設(shè)計
- LTC3634MPFE 降壓型穩(wěn)壓器的設(shè)計示例電路
- DER-832 - 基于LinkSwitch-TN2和Nordic BLE微控制器的兩線制(無中性線)、寬范圍、隔離式反激式藍牙墻壁開關(guān)
- 采用 EM3588 的 ZigBee Wi-Fi 以太網(wǎng)網(wǎng)關(guān)參考設(shè)計
- 清華 AIR 研究院發(fā)布全球首個車路協(xié)同數(shù)據(jù)集 DAIR-V2X
- AMD稱準備開發(fā)Arm芯片
- 美格智能獨家中標了中國聯(lián)通5G AIoT智能模組
- 國內(nèi)某一線手機下半年將大規(guī)模裁員:比例20%
- 上半年江蘇集成電路產(chǎn)業(yè)銷售總收入超1540億元,同比增超37%
- 三星宣布首款搭載 MRAM 非易失磁阻內(nèi)存的電腦:可用于AI運算
- 選擇基礎(chǔ)示波器的10個因素
- 歌爾微電子UWB SiP模組賦能多元場景應(yīng)用
- 2021年亞洲供應(yīng)鏈市值百強:大陸半導(dǎo)體企業(yè)上榜9家合計市值2091億美元
- 51單片機——數(shù)碼管動態(tài)顯示
- AI時代的孩子,如何成為未來的開創(chuàng)者?
- 通用汽車轉(zhuǎn)向LFP電池,LG新能源和三星SDI擬在美建廠
- 蓋世汽車研究院:政策助推疊加技術(shù)迭代 全固態(tài)電池蓄勢待發(fā)
- 小鵬汽車董事長預(yù)測:2027年激光雷達非智能駕駛必備
- 解碼大眾汽車中國戰(zhàn)略 - 決戰(zhàn)智能化電氣化的三板斧
- 2025從具身智能大腦展望人形機器人發(fā)展
- “荊楚”人形機器人即將量產(chǎn),智能時代的新篇章!
- 小鵬純視覺方案:技術(shù)突圍與市場下沉的雙重博弈
- 為什么無人出租車能“零”事故,而智能駕駛輔助卻事故頻發(fā)?
- 重磅!一顆要顛覆全球智駕的芯片點亮了!