STM32安装Keil5、芯片支持包、startup启动文件(启动过程分析)、建立工程、烧写
參考:stm32入門之keil5的安裝以及第一個(gè)工程的建立
作者:SKY丶丿平才
發(fā)布時(shí)間: 2020-12-06 17:08:30
網(wǎng)址:https://blog.csdn.net/weixin_48264057/article/details/110734596
目錄
- 使用的STM32F103C8T6
- 一、Keil5的下載與安裝
- 1.下載鏈接
- 2.安裝步驟
- 二、加載芯片所需要的pack支持包
- 1.下載支持包
- 2.加載支持包
- 三、創(chuàng)建STM32第一個(gè)項(xiàng)目(添加startup啟動(dòng)文件)
- 1.新建第一個(gè)工程以及添加main函數(shù)
- 2.添加startup啟動(dòng)文件
- 3.編寫第一個(gè)程序
- 4.燒寫代碼到開發(fā)板
- ST-LINK燒錄stm32程序步驟
- STM32代碼的啟動(dòng)過程
- STM32三種啟動(dòng)模式
- 關(guān)于啟動(dòng)地址
- 關(guān)于flash死鎖的解決辦法(Flash memory啟動(dòng)方式)
- 從匯編代碼分析STM32啟動(dòng)過程
使用的STM32F103C8T6
江江視頻使用的32型號(hào)。
一、Keil5的下載與安裝
1.下載鏈接
keil5軟件壓縮包百度云盤鏈接(提取碼是1111)
下載后解壓就可以進(jìn)行安裝了
2.安裝步驟
青木安裝教程:https://qingmu.blog.csdn.net/article/details/108948672
按照圖片中的箭頭所指即可完成安裝
選擇安裝位置
這里的信息隨便填一下就可以了
這樣就完成了安裝,這個(gè)時(shí)候桌面就會(huì)多出一個(gè)圖標(biāo)
二、加載芯片所需要的pack支持包
1.下載支持包
芯片支持包百度云盤下載:Keil.STM32F1xx_DFP.2.1.0.pack(提取碼是1111)
把這個(gè)文件下載好就行了,要放在一個(gè)自己找得到的文件夾里,因?yàn)槲覀兊认戮托枰虞d它。
2.加載支持包
注:江江視頻里這個(gè)支持包是直接雙擊進(jìn)行安裝的
支持包主要是為了配合stm32使用才添加的,在我們剛裝好keil5時(shí),它就提醒我們要安裝固件包了。
現(xiàn)在我們打開keil5,然后點(diǎn)擊箭頭所指的位置
然后就進(jìn)入添加文件界面了,在相關(guān)文件夾之中,找到我們剛才下載的支持包
隨后點(diǎn)擊打開,待下方進(jìn)度條到達(dá)100%后即完成了導(dǎo)入
這樣的環(huán)境就搭建了90%了,后面還需要導(dǎo)入Setup包。
三、創(chuàng)建STM32第一個(gè)項(xiàng)目(添加startup啟動(dòng)文件)
1.新建第一個(gè)工程以及添加main函數(shù)
首先點(diǎn)擊軟件上方的protect然后新建一個(gè)工程
這里自己給工程起一個(gè)名字
然后選擇自己的stm32相關(guān)型號(hào)
關(guān)閉這個(gè)窗口,新工程就創(chuàng)建完成了
此時(shí)我們要向編寫程序,在工程目錄下創(chuàng)建一個(gè)main.c文件,然后雙擊箭頭所指的位置,將main.c文件添加進(jìn)來。
2.添加startup啟動(dòng)文件
startup庫文件百度云盤鏈接(提取碼為1111)
先將這個(gè)文件下載好,這是一個(gè)匯編文件,主要進(jìn)行初始化硬件、堆棧指針等,詳細(xì)分析在下面小節(jié)介紹。大家要根據(jù)自己的型號(hào)來添加相關(guān)的文件把它放在工程目錄下。
然后用同樣的方式把它加載進(jìn)來,雙擊箭頭所指
選中所指文件,就可以添加進(jìn)來了
這樣startup文件就添加完畢了
3.編寫第一個(gè)程序
我們寫一個(gè)最簡單的c程序,因?yàn)楹芏鄮爝€沒添加,所以我們就不添加頭文件了
如果直接編譯,將會(huì)報(bào)錯(cuò)
查看錯(cuò)誤的原因,是System函數(shù)沒有定義導(dǎo)致的
main函數(shù)內(nèi)定義之后再次編譯
這一次沒有錯(cuò)誤,卻出現(xiàn)警告
這是由于keil5這個(gè)軟件導(dǎo)致的,必須在最后多加一行空著,才會(huì)消除這個(gè)警告!
添加之后警告果然消除。
4.燒寫代碼到開發(fā)板
首先我們看一下一些燒寫設(shè)置,并勾選一些東西。點(diǎn)擊魔術(shù)棒,選擇output
再選擇燒寫工具(ISP燒寫也可以)
確認(rèn)自己的板子連接完畢后,即可點(diǎn)擊下圖箭頭所指的位置進(jìn)行燒寫
這樣就完成了燒錄
ST-LINK燒錄stm32程序步驟
摘自:ST-LINK燒錄stm32程序步驟 作者:糯米啊啊
地址:https://blog.csdn.net/weixin_43732386/article/details/117375266?spm=1001.2014.3001.5502
此篇文章記錄下STM32使用ST-LINK燒錄程序的步驟
材料
ST-LINK驅(qū)動(dòng)安裝:點(diǎn)我下載st-link驅(qū)動(dòng)
提取碼: 4aw1
安裝包有詳細(xì)教程
stm32f103c8t6
ST-LINK
杜邦線
keil5配置(前提得安裝好STlink驅(qū)動(dòng))
點(diǎn)擊魔術(shù)棒
如下圖配置
點(diǎn)擊上圖的Settings
這里的配置有的人不是這種,反正我是這種,可以成功燒錄。
點(diǎn)擊第三個(gè)項(xiàng)目欄
配置如下
依次點(diǎn)擊確定 OK 即可完成配置。
接線
stm32 st-linkvcc(3.3)<---------------->vccGND<--------------------->GNDSWIO<-------------------->SWDIOSWCLK<------------------->SWCLK- 1
- 2
- 3
- 4
- 5
接好后插入電腦
實(shí)物如圖
燒錄
依次點(diǎn)擊
看到下方有藍(lán)色進(jìn)度條即成功燒錄。
STM32代碼的啟動(dòng)過程
參考:STM32代碼的啟動(dòng)過程
作者:嵌入式ARM
網(wǎng)址:https://mp.weixin.qq.com/s/bkPpwRAlZCjkmltPXfNxDA
STM32三種啟動(dòng)模式
分享這篇文章,談一下STM32啟動(dòng)流程。如果讀者朋友已經(jīng)有過匯編相關(guān)基礎(chǔ),能夠夠好理解本文內(nèi)容。匯編語言是比C語言更接近機(jī)器底層的編程語言(助記符),能讓我們更好的理解和操縱硬件底層。
一般來說就是指我們下好程序后,重啟芯片時(shí),SYSCLK的第4個(gè)上升沿,BOOT引腳的值將被鎖存。用戶可以通過設(shè)置BOOT1和BOOT0引腳的狀態(tài),來選擇在復(fù)位后的啟動(dòng)模式。
-
從主閃存存儲(chǔ)器——Flash memory啟動(dòng),啟動(dòng)地址:0x08000000 是STM32內(nèi)置的Flash,一般我們使用JTAG或者SWD模式下載程序時(shí),就是下載到這個(gè)里面,重啟后也直接從這啟動(dòng)程序。基本上都是采用這種模式。
-
從系統(tǒng)存儲(chǔ)器——System memory啟動(dòng)。啟動(dòng)地址:0x1FFF0000從系統(tǒng)存儲(chǔ)器啟動(dòng),這種模式啟動(dòng)的程序功能是由廠家設(shè)置的。一般來說,這種啟動(dòng)方式用的比較少。系統(tǒng)存儲(chǔ)器是芯片內(nèi)部一塊特定的區(qū)域,STM32在出廠時(shí),由ST在這個(gè)區(qū)域內(nèi)部預(yù)置了一段BootLoader, 也就是我們常說的ISP程序, 這是一塊ROM,出廠后無法修改。一般來說,我們選用這種啟動(dòng)模式時(shí),是為了從串口下載程序,因?yàn)樵趶S家提供的BootLoader 中,提供了串口下載程序的固件,可以通過這個(gè)BootLoader將程序下載到系統(tǒng)的Flash中。但是這個(gè)下載方式需要以下步驟:
-
- 1、將BOOT0設(shè)置為1,BOOT1設(shè)置為0,然后按下復(fù)位鍵,這樣才能從系統(tǒng)存儲(chǔ)器啟動(dòng)BootLoader
-
- 2、在BootLoader的幫助下,通過串口下載程序到Flash中
-
- 3、程序下載完成后,需要將BOOT0設(shè)置為GND,按下復(fù)位,這樣,STM32才可以從Flash中啟動(dòng)。可以看到, 利用串口下載程序還是比較的麻煩,需要跳帽跳來跳去的,非常的不注重用戶體驗(yàn)。
-
從內(nèi)置SRAM——SRAM啟動(dòng),啟動(dòng)地址:0x20000000 內(nèi)置SRAM,既然是SRAM,自然也就沒有程序存儲(chǔ)的能力了,這個(gè)模式一般用于程序調(diào)試。假如我只修改了代碼中一個(gè)小小的 地方,然后就需要重新擦除整個(gè)Flash,比較的費(fèi)時(shí),可以考慮從這個(gè)模式啟動(dòng)代碼(也就是STM32的內(nèi)存中),用于快速的程序調(diào)試,等程序調(diào)試完成后,在將程序下載到SRAM中。
關(guān)于啟動(dòng)地址
理論上,CM3中規(guī)定上電后CPU是從0地址開始執(zhí)行,但是這里中斷向量表卻被燒寫在0x0800 0000地址里(Flash memory啟動(dòng)方式),那啟動(dòng)時(shí)不就找不到中斷向量表了?既然CM3定下的規(guī)矩是從0地址啟動(dòng),SMT32當(dāng)然不能破壞ARM定下的“規(guī)矩”,所以它做了一個(gè)啟動(dòng)映射的過程,就是和芯片上總能見到的BOOT0和BOOT1有關(guān)了,當(dāng)選擇從主Flash啟動(dòng)模式后,芯片一上電,Flash的0x0800 0000地址被映射到0地址處,不影響CM3內(nèi)核的讀取,所以這時(shí)的CM3既可以在0地址處訪問中斷向量表,也可以在0x0800 0000地址處訪問中斷向量表,而代碼還是在0x0800 0000地址處存儲(chǔ)的。
關(guān)于flash死鎖的解決辦法(Flash memory啟動(dòng)方式)
開發(fā)調(diào)試過程中,由于某種原因?qū)е聝?nèi)部Flash鎖死,無法連接SWD以及JTAG調(diào)試,無法讀到設(shè)備,可以通過修改BOOT模式重新刷寫代碼。修改為BOOT0=1,BOOT1=0即可從系統(tǒng)存儲(chǔ)器啟動(dòng),ST出廠時(shí)自帶Bootloader程序,SWD以及JTAG調(diào)試接口都是專用的。重新燒寫程序后,可將BOOT模式重新更換到BOOT0=0,BOOT1=X即可正常使用。
從匯編代碼分析STM32啟動(dòng)過程
STM32的啟動(dòng)文件與編譯器有關(guān),不同編譯器,它的啟動(dòng)文件不同。雖然啟動(dòng)文件(匯編)代碼各有不同,但它們原理類似,都屬于匯編程序。拿基于MDK-ARM的啟動(dòng)文件來舉例,說一下要點(diǎn)內(nèi)容。在基于MDK的啟動(dòng)文件開始,有一段匯編代碼是分配堆棧大小的。
這里重點(diǎn)知道堆棧數(shù)值大小就行。還有一段AREA(區(qū)域),表示分配一段堆棧數(shù)據(jù)段。可以使用STM32CubeMX對上面的數(shù)值大小進(jìn)行配置:
在IAR中,是通過工程配置堆棧大小:
看下面的匯編代碼,程序上電之后,是跳到Reset_Handler這個(gè)位置。
知道代碼是從Reset_Handler開始執(zhí)行,再來看如下Reset_Handler匯編代碼。在啟動(dòng)的時(shí)候,執(zhí)行了SystemInit這個(gè)函數(shù)。
執(zhí)行完SystemInit函數(shù),初始化了系統(tǒng)時(shí)鐘,之后跳轉(zhuǎn)到main函數(shù)執(zhí)行。
總結(jié)
以上是生活随笔為你收集整理的STM32安装Keil5、芯片支持包、startup启动文件(启动过程分析)、建立工程、烧写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLServer 2008安装教程
- 下一篇: STM32F103实现点灯(寄存器方式)