目錄
前言
步驟一:準備工作
步驟二:安裝Keil?MDK-ARM開發(fā)工具
步驟三:創(chuàng)建工程
步驟四:配置工程
步驟六:編寫代碼
步驟七:下載程序?
?總結(jié)
前言 ?
在物聯(lián)網(wǎng)時代,嵌入式系統(tǒng)的應用越來越廣泛,而STM32作為業(yè)內(nèi)領(lǐng)先的嵌入式芯片之一,受到了越來越多開發(fā)者的關(guān)注和喜愛。然而,對于初學者來說,學習STM32還是有一定難度的,需要具備一定的電子、嵌入式系統(tǒng)的基礎(chǔ)知識。
STM32是一款非常強大的嵌入式芯片,它的應用領(lǐng)域非常廣泛。在學習STM32的過程中,首先需要掌握的是基本的硬件知識和編程語言,然后才能深入學習STM32的應用和開發(fā)。本教程將手把手教你如何入門STM32(標準庫),讓你快速掌握STM32的基礎(chǔ)知識和開發(fā)技巧。
本教程包含豐富的實例代碼和實驗,每一節(jié)都附有詳細的圖文解釋和操作步驟,讓初學者能夠輕松理解和掌握。
最后,希望本教程能夠成為初學者STM32學習的得力助手,也希望讀者在學習過程中能夠不斷探索、實踐和創(chuàng)新,不斷提高自己的技能水平。
步驟一:準備工作
- 硬件?
- STM32開發(fā)板(本文章使用STM32F103VET6芯片)
- 仿真燒錄下載器(本文章使用?ST-LINK V2?下載器)
(你也可以使用其他開發(fā)板芯片和仿真下載器,不妨礙繼續(xù)閱讀本文章)?
- 軟件?
- Keil?MDK-ARM開發(fā)工具
- STM32標準庫
步驟二:安裝Keil?MDK-ARM開發(fā)工具
本文章使用Keil5(MDK)開發(fā)平臺,但你可以用STM32CubeIDE、或VScode,根據(jù)個人使用喜好開發(fā)。
如果你沒安裝Keil5(MDK)軟件(如果你已經(jīng)安裝跳過),提供以下鏈接參考下載:
首先需要下載Keil?MDK-ARM開發(fā)工具,并且安裝好。安裝過程中需要選擇安裝的組件,選擇CMSIS和Device?Support即可。
安裝教程 :Keil5安裝教程(包含C51與MDK共存)WIN10 親測可用
網(wǎng)盤下載:Keil5 MDK 下載 提取碼:1234
步驟三:創(chuàng)建工程
- 創(chuàng)建文件夾
先下載標準庫:?標準庫下載 提取碼:1234
?下載到桌面上,右擊該壓縮包進行解壓?
解壓完了后,新建文件夾,命名隨意,但最好不用中文,防止出現(xiàn)不明錯誤。然后在建好的文件夾再以下文件夾并命名(方便移植標準庫)? 如圖:?
??文件夾釋義:Core(架構(gòu)Cortex?-M3內(nèi)核)、Fwlib(標準庫中的.c和.h頭文件)、Project(用來放工程)、Startup(芯片啟動文件)、User(用戶文件,用來放主函數(shù))
- ?新建完成后進行庫移植?
1.Core移植
打開文件夾 路徑:“STM32F10x_StdPeriph_Lib_V3.5.0”-“Libraries”-“CMSIS”-“CM3”-“CoreSupport”,然后右擊長按選中兩個-“core_cm3.c”和“core_cm3.h”,選中后右擊復制粘貼到“Test”-“Core”的文件夾中
?然后退回到“CM3”文件夾中
?打開文件夾 路徑:“CM3”-“DeviceSupport”-“ST”-“STM32F10x”,然后右擊長按選中三個“stm32f10x.h”和“system_stm32f10x.c”和“system_stm32f10x.h”,選中后復制粘貼到“Test”-“Core”的文件夾中
?2.Fwlib移植 (這個就比較簡單了)
返回到“STM32F10x_StdPeriph_Lib_V3.5.0”中-“Libraries”-“STM32F10x_StdPeriph_Driver”-然后右擊長按選中兩個-“inc”和“src”,選中后右擊復制粘貼到“Test”-“Fwlib”的文件夾中。
inc:是標準庫里的.h文件
src:是標準庫里的.c文件
?3.Startup(啟動文件移植)
?返回到 文件路徑如下:“STM32F10x_StdPeriph_Lib_V3.5.0”- “Libraries”-“CMSIS”-“CM3”-"DeviceSupport"-“ST”-“STM32F10x”-“startup”,然后選中全部一起復制到“Test”-“Startup”文件夾中
?4.User移植
打開文件夾“User”?-右擊選擇新建文本文檔,然后重命名為“main.c”。
打開文件夾 “STM32F10x_StdPeriph_Lib_V3.5.0”->“Project” -“STM32F10x_StdPeriph_Template”
然后選中“stm32f10x_conf.h”和“stm32f10x_it.c”和“stm32f10x_it.h”和“system_stm32f10x.c”復制到文件夾“Test”-“User”中
步驟四:配置工程
雙擊打開Keil5(MDK)
在Keil?MDK-ARM開發(fā)工具中,選擇File->New?Project,然后選擇工程路徑,輸入工程名稱即可創(chuàng)建工程。
建工程中,它會彈一個讓你選擇芯片的彈窗,本文章使用STM32F103VET6芯片,所以選圖中“STM32F103VE”
假如你的開發(fā)板芯片是“STM32F103C8T6”,那么你應該選擇圖中“STM32F103C8”
點OK后會跳出一個“Manage Run-Time Environment”的窗口,不用理會,直接叉掉。
然后按圖步驟繼續(xù)--
將STM32標準庫中的源文件和頭文件添加到工程中,例如:stm32f0x.h、stm32f0x_gpio.h、stm32f0x_rcc.h等。
注意:??圖下在給“Startup”添加文件中選擇了“startup_stm32f10x_hd”啟動文件,芯片容量不同,“STM32F103VET6”容量512KB,屬于高容量
假如你使用 “STM32F103C8T6”芯片,容量為64KB,屬于中容量,應選擇“startup_stm32f10x_md”
?雙擊工程中“main.c”,然后對該文件右擊選擇“l(fā)nsert '#include file”-“stm32f10x.h”,快速添加頭文件。然后在8296行代碼復制USE_STDPERIPH_DRIVER
?復制后打開小魔術(shù)棒-點擊“C/C++”在“Define”框粘貼,然后在"Include Pahs"添加頭文件路徑,然后新建-選擇文件路徑添加進去:“Test”文件夾中的“Core”、“Fwilb/inc”、“Startup”、“User”,這幾個文件夾。
??把以下代碼復制到main.c中,再點Bulid編譯,以下是編譯成功圖片
#include "stm32f10x.h" // Device header
int main(void)
{
}
步驟六:編寫代碼
通過編譯后,繼續(xù)入門第一課? ?點個燈
?首先看看自己的開發(fā)板原理圖有沒有LED燈,如圖
這個原理圖中LED一頭接1K上拉電阻通往PB5引腳,另一頭接去GND。得知該LED高電平點亮,低電平熄滅。
如果你的開發(fā)板的LED是其他引腳,例 PA5,也是一樣原理能點燈。
開始配置,在main.c中添加代碼 :
打開“stm32f10x_rcc.h”,把這個函數(shù):
“void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);”
Q:復制到主函數(shù)函數(shù)里,為什么要用這個函數(shù)呢?
A:這個RCC是內(nèi)部時鐘,必須開時鐘才能運行,GPIOB在APB2總線上,所以選這個函數(shù)。
函數(shù)里面的第一個形參是選擇GPIO位置,我的開發(fā)板PB5口,所以選擇RCC_APB2Periph_GPIOB。
然后,函數(shù)里面的第二個形參是使能端,ENABLE就是打開,DISABLE就是關(guān)閉。
?RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
然后就是GPIO配置
打開“stm32f10x_gpio.h”,把這個函數(shù):
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
這個函數(shù)需要引出結(jié)構(gòu)體進行配置,再賦給這個函數(shù).
第一個形參是GPIO位,如果你是PA5即GPIOA,本文章是PB5即GPIOB
第二個形參是結(jié)構(gòu)體變量名,這個結(jié)構(gòu)體跟枚舉差不多,直接&上結(jié)構(gòu)體變量地址就行了
GPIO_Init(GPIOB, &GPIO_InitStructure); //PB5
例 :GPIO_Init(GPIOA, &GPIO_InitStructure); //PA5
?GPIO_InitTypeDef中要引出3個結(jié)構(gòu)體進行配置
第一個是GPIO工作模式,LED一般都是推挽輸出?,具體內(nèi)容參考STM32入門-GPIO端口的八種工作模式
?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//設(shè)置為推挽輸出
第二個是GPIO引腳,因為原理圖是PB5,所以直接改后面的數(shù)字就可以了???
?GPIO_InitStructure.GPIO_Pin ? ? ?= GPIO_Pin_5;
第三個是速度,一般直接50Mhz
? GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
配置好了,最后就是直接置1點亮(高電平)
直接調(diào)函數(shù)就可以置高電平了?
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//GPIO設(shè)置為高電平
第一個參數(shù)為 GPIO位置,假如是PA5,那就GPIOA。如果是PB5,那就GPIOB.第二個參數(shù)是引腳位置,GPIO_Pin_x(x:引腳位置,例:PB5 = GPIO_Pin_?5).
GPIO_SetBits(GPIOB, GPIO_Pin_5);//PB5
步驟七:下載程序?
?后面就是通過仿真燒錄器下載,將ST-LINK?V2仿真器連接到STM32芯片上,然后在Keil?MDK-ARM開發(fā)工具中選擇Flash->Download,將程序下載到芯片中。
打開小魔術(shù)棒-Debug
如果你是芯片是64KB的,下載時候這個位置要選擇合適的Flah 參考網(wǎng)站:STM32下載程序
成功點亮截圖
代碼奉上?
#include "stm32f10x.h" // Device header
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
int main(void)
{
LED_Config();
while(1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
}
?總結(jié)
?本教程介紹了如何入門STM32(標準庫),包括安裝開發(fā)工具、安裝仿真器驅(qū)動、創(chuàng)建工程、配置工程、添加文件、編寫代碼、編譯程序和下載程序等步驟。希望可以幫助初學者快速掌握STM32的基礎(chǔ)知識和開發(fā)技巧。文章來源:http://www.zghlxwxcb.cn/news/detail-650571.html
沒有人一開始是大佬,都是從小白入門的.謝謝閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-650571.html
到了這里,關(guān)于手把手教你STM32入門教程(標準庫)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!