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