1. 程式人生 > >手把手教你在STM32下搭建屬於自己的第一個應用程式

手把手教你在STM32下搭建屬於自己的第一個應用程式

 準備資料:

      下載STM32F10x_StdPeriph_Lib_V3.5.0韌體庫。如下圖:

     

     下載後解壓,可以看到如下目錄:

         

開始搭建:

1、 在桌面建立一個資料夾,命名為STM32_TEST(此名字可隨意命名),然後分別建立子資料夾USER、CORE和STM32F10x_StdPeriph_Driver分   別用來存放使用者檔案、啟動檔案和韌體庫。如下圖:

           

2、 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport路徑下的兩個檔案core_cm3.c 和core_cm3.h拷貝到CORE資料夾下,

      並將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm路徑下的所有檔案也拷貝到CORE資料夾中。拷貝後如圖所示:

           

3、 把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver路徑下的inc資料夾和src資料夾一起拷貝到上面建立的STM32F10x_StdPeriph_Driver資料夾下,如圖:

          

4、將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路徑下的stm32f10x.h,system_stm32f10x.c,

system_stm32f10x.h檔案複製到USER資料夾下。

     同時將STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template路徑下的stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h檔案也拷貝到USER資料夾下。

     然後在USER資料夾下建立一個新檔案,命名為STM32_TEST.c,並新增如下程式碼:

 int main(void)

{

       return 0;

}

    如下圖:

       

5、 至此準備工作告一段落,接下來開始建工程。開啟MDK,新建工程,在STM32_TEST下新建一個資料夾,命名為Project,此資料夾用來放置工程檔案和中間檔案。將USER、CORE和STM32F10x_StdPeriph_Driver資料夾裡的.c檔案新增到工程中,CORE 資料夾中的啟動檔案(.s)檔案只需要新增startup_stm32f10x_md.s即可,因為我用的STM32F103RB,是針對中等容量晶片的MCU。讀者可以根據自己的MCU容量選擇不同的啟動檔案。在此注意,如果不需要用到STM32F10x_StdPeriph_Driver裡面的那麼多功能,可以去掉不必要的檔案,節省資源。同時還要記得在下圖中新增標頭檔案路徑,否則包含標頭檔案時要指定完整路徑。  

       

      點選OK後,編譯,發現一大堆報錯,找到第一個報錯的條目,如下:

..\USER\stm32f10x.h(96): error: #35: #error directive: "Please select first the target STM32F10x device used in your  application (instm32f10x.h file)"

      雙擊該錯誤,跳轉到stm32f10x.h中:

   

      提示你要選擇應用程式使用的STM32F10x目標裝置。由於我使用的是中等容量的STM32F103RB,所以在此選STM32F10X_MD。在如圖中新增:

      

      再次編譯,還是報錯,拉到最下面,會看到此行:

      STM32_TEST.axf: Error: L6218E: Undefinedsymbol assert_param (referred from misc.o).

      這個錯誤提示說assert_param沒定義,出現這個問題的原因是我們剛才工程中包含了韌體庫(即STM32F10x_StdPeriph_Driver資料夾下的內容),裡面的很多.c檔案都呼叫了assert_param。為了解決此問題,可以在工程中的查詢assert_param,可以看到其定義體是在stm32f10x_conf.h檔案中,如下圖:

       

      繼續在工程中查詢stm32f10x_conf.h,可以看到如下:

      

      則只需要再定義USE_STDPERIPH_DRIVER巨集就可以了。定義後如圖:

      

       至此,編譯通過。如圖:

       

       接下來,可以自己寫一個測試程式進行測試了。在STM32_TEST.c中輸入以下程式碼,實現LED的閃爍:

#include"stm32f10x.h"

void Delay(int x)

{

       int y,z;

       for(y = 0;y < x;y++)

              for(z = 0;z < 1000;z++);

}

void LedInit()

{

       GPIO_InitTypeDef  GPIO_InitStructure;

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //使能PA埠的時鐘                               

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                         //LED埠配置

       GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;                //推輓輸出

       GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

       GPIO_Init(GPIOA, &GPIO_InitStructure);

       GPIO_SetBits(GPIOA,GPIO_Pin_1);                                      //PA1 輸出高

}

 int main(void)

 {

       SystemInit();

       LedInit();

       while(1)

       {

              GPIO_SetBits(GPIOA,GPIO_Pin_1);                                      //PA.8 輸出高

              Delay(1000);

              GPIO_ResetBits(GPIOA,GPIO_Pin_1);

              Delay(1000);

       }

 }

       並勾選Output欄下的Create HEX File選項。

       

         編譯即可在STM32_TEST資料夾下生成STM32_TEST.hex檔案,燒寫進開發板即可。

相關推薦

手把手STM32搭建屬於自己第一應用程式

 準備資料:       下載STM32F10x_StdPeriph_Lib_V3.5.0韌體庫。如下圖:            下載後解壓,可以看到如下目錄:           開始搭建: 1、 在桌面建立一個資料夾,命名為STM32_TEST(此名字可隨意命名),然

手把手用Java搭建自己的網站

經過一段時間的開發,更新,迭代,新浪雲容器 Java 環境逐漸成熟起來,相比過去的 Java 執行環境,可用性和易用性都得到了大量的提升。同時也收到了不少使用者反饋的使用問題,特此在這篇文章裡綜合介紹一下容器 Java 使用以及相關服務的整合。 環境說明 新浪雲容器 Java 環境基於 Docker 搭

手把手用jumpserver搭建堡壘機!

ict 添加用戶 以及 這一 用戶名 端口 cal cti tom 首先,jumpserver是什麽呢? Jumpserver 是一款由Python編寫開源的跳板機(堡壘機)系統,實現了跳板機應有的功能。基於ssh協議來管理,客戶端無需安裝agent。 特點: 完全開源,G

手把手用webpack3搭建react項目(開發環境和生產環境)(一)

stc reac config nod top llb cor git history 開發環境和生產環境整個配置源碼在github上,源碼地址:github-webpack-react 如果覺得有幫助,點個Star謝謝!! (一)是開發環境,(二)是生產環境。 一、首

用 jVectorMap 製作屬於自己的旅行足跡

jVectorMap JVectorMap 是一個優秀的、相容性強的 jQuery 地圖外掛。 它可以工作在包括 IE6 在內的各款瀏覽器中,向量圖輸出,除官方提供各國地圖資料外,使用者可以使用資料轉換程式定製地圖資料。例如街道地圖、小區地圖等等。 JVectorMap 官方網站提供了很多相關文件和使用示例

如何搭建Spring環境?--手把手安裝Spring+搭建Spring開發環境。

手把手教你安裝Spring+搭建Spring開發環境。 步驟一:安裝eclipse 如果你已經下載安裝,可忽略此步。 就是這傢伙: 官網下載地址(64位):https://www.eclipse.org/downloads/download.phpfile=/oomp

【 專欄 】- 手把手如何用nginx開發自己的伺服器

手把手教你如何用nginx開發自己的伺服器 博主希望能夠通過自己的nginx學習經驗,給希望學習nginx的同學一些參考的經驗,這個專欄的目的是教會完全不懂nginx的同學如何利用nginx去開發自己的web伺服器或者代理伺服器

不能再詳細!!!手把手用Faster-RCNN訓練自己的資料集

一、環境安裝準備 python2.7以及相關的包cython, python-opencv, easydict 本文假設你已經按照上面的教程完成了安裝,並可以執行demo.py 並且可以訓練 二、準備自己的資料集 在實際的應用中,這個資料集肯定是自己專案裡面拍攝的。

手把手在Github上建立自己的個人部落格網站

概述 之前閒著沒事,就利用Github建了一個個人部落格網站,效果還不錯,今天就來分享一下. 建立自己個人部落格網站的好處: 1.面試裝逼,這個不必多說… 2.把平時積累的知識和專案記錄下來,方便日後檢視使用 3.不受其他部落格平臺的限制 準備工作

手把手linuxgoogle chrome瀏覽器root使用者無法執行,以及flash外掛安裝

週末終於被卡爆的win7折騰煩了,無奈之下終於下決心裝了雙系統,好不容易折騰好雙系統,愉快的在linux下寫了一個hello world後不愉快的事情終於發生了。 由於裝的是kali,沒有自帶火狐或者

手把手從頭開始搭建友善之臂ARM-tiny4412開發環境(史上最詳細!!)

建立一個ARM目錄 mkdir   /disk/A9  -p 接下來你需要準備以下的東西 1、arm-linux-gcc-4.5.1     交叉編譯器 2、linux-3.5-tiny4412   

手把手配置最漂亮的PyCharm介面,Python程式設計師必備!

高逼格超美的IDE介面,是每個程式設計師的夢想!隨著人工智慧/機器學習的興起,Python作為一門“漂亮的語言”,再次獲得廣大程式設計師的關注。而JetBrains出品的PyCharm無疑是最好用的Python IDE之一。俗話說“工欲善其事,必先利其器”,把自己的IDE配置得既有逼格又好看,這是每個Pyth

手把手寫電商爬蟲(1):找軟柿子捏捏

工具要求:教程中主要使用到了 1、神箭手雲爬蟲框架 這個是爬蟲的基礎,2、Chrome瀏覽器和Chrome的外掛XpathHelper 這個用來測試Xpath寫的是否正確 基礎知識:本教程中主要用到了一些基礎的js和xpath語法,如果對這兩種語言不熟悉,可以提前先學習下,都很簡單 教程正式開始,現在電商網

Kubernetes系列之三:部署第一應用程式到k8s叢集

部署你的第一個應用程式到k8s叢集 看到這裡,求知慾飢渴難耐的你一定在想,怎麼部署的我們應用程式到叢集裡面去呢?來個簡單的,只需要兩步:(這裡本文使用nginx映象當我們的應用程式,因為nginx 簡單,執行起來後直接可以用瀏覽器訪問網頁了。) 第一步:在master 節點上建立一個

從0到1使用Kubernetes系列(四):搭建第一應用程式

上一篇文章《從0到1使用Kubernetes系列(三):使用Ansible安裝Kubernetes叢集》中,我們搭建了一套Kubernetes叢集,接下來將在本文中介紹如何使用Kubernetes部署一個Nginx並通過Pod IP、Service IP、Ingress這三種方式訪問Nginx。 傳統Kube

Spring Boot第一應用程式

簡單的一個功能:瀏覽器傳送hello請求,伺服器收到請求並進行處理,響應helloworld字串 1:建立一個maven工程(jar) 2:匯入springboot相關的依賴 <parent> <groupId>org.springfram

Docker on Windows: 部署第一應用程式

Docker 執行在Linux上,可能你已經瞭解很多,但執行在windows上呢,本文來試一下部署一個靜態檔案在IIS上,目的不在於練習docker, 而在於讓你瞭解windows的一些映象 前提條件 需要在windows上安裝docker,然後切換到windows 容器

手把手用Hexo+Github 搭建屬於自己的部落格

歡迎關注我的微信公眾號,掃一掃下方二維碼或搜尋微訊號 stormjun,即可關注。 目前專注於 Android 開發,主要分享 Android開發相關知識和一些相關的優秀文章,包括個人總結,職場經驗等。 閒聊 在大三的時候,一直就想搭建屬於自己的一個

「山禾說成長」:手把手搭建一個完全屬於自己的技術部落格

搭建前的準備 在我們正式開始搭建一個完全屬於我們自己的部落格之前,我們首先要做好一些事前的準備(當然,如果你沒有做好準備也沒有關係,下面會一步一步的教你搞定這些) 伺服器一臺 or github 賬號一個(二選一)域名一個(可選)node.js(建議10.0以上版本)git 域名和伺服器的購買我這裡就不在文

在Linux搭建屬於自己的git伺服器(MAC版)

環境說明 本地mac系統,一般都有git程式安裝(如果沒有則使用:brew install git) 伺服器版本是ubuntu-14.04 直入主題 ​ 使用mac終端遠端連線linux伺服器(命令:ssh [伺服器ip], 之後輸入伺服器密碼)預設都是ro