<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        STM32之keil MDK下建立第一個工程

        作者:忙碌的小姚   來源:忙碌的小姚   點擊數:  更新時間:2014年06月10日   【字體:

        一、使用固件庫建立一個工程

        我打算先從軟件編程學起,以前用過KEIL IAR,IAR我比較熟悉,因為參加電子設計競賽的時候,就是用它編程MSP430程序的。但我還是選擇了KEIL,也許因為資料比較多,或者別的吧,我沒分析過KEIL IAR代碼效率如何,因為這不是我現在要考慮的,軟件都只是工具而已。

        我去百度搜索了幾篇如何在KEIL MDK環境下建立STM32工程,加上自己的實踐。我也把我的初學者步驟貼出來。

        1、了解STM32F103的固件庫

        我在網上下了STM32F103的固件庫-----stm32f10x_stdperiph_lib 3.5V版的,里面內容如圖所示,據說STM32F103STM32F101都能用。


         

        2、創建第一個工程

           1.新建一個文件夾取名如 first_project,也可以建在桌面。


             2.在里面新建 CMSIS ,libraries ,Libaries List(用于鏈接的) Obj(工程文件) output  (輸出hex

             件)User 件夾;

         

             3.  將固件庫里 Libraries--->STM32F10x_StdPeriph_Driver 下的 inc src 文件夾復

                  制到fisrt_project 文件夾下的libraries 里;

         

                將固件庫里 Libraries--->CMSIS--->CM3--->CoreSupport文件夾里面的 core_cm3.c

                  core_cm3.文件復制到我們新建的fisrt_project 文件夾下的CMSIS 里;

         

                將固件庫里 Project---->STM32F10x_StdPeriph_Template(這個文件家里有KEIL

                  IAR建好工程的模板里的stm32f10x_conf.h stm32f10x_it.c  ,

                  stm32f10x_it.h  system_stm32f10x.c  四個文件 復制到我們新建的fisrt_project 

                  文件夾下的User 里;

         

                  如下圖所示




        4、打開keil uvision4 MDK 在菜單欄里點擊project 選擇 new uVision project  



        5、保存工程名,選擇Obj文件夾, 文件名為first_project ,不用加后綴格式,系統默認。


        6、接下來會彈出讓你選擇器件的窗口,這里我們選擇 STmicroelectronics 的 STM32F103C8


        7、最后會彈出是否復制啟動代碼的對話框,選擇YES;


        3、 接下來就是管理工程文件了

             1、在project窗口右鍵點擊Tagert 選擇 manage conponents 或者

         

             找到倒數第二個 品字形圖標;

         

         

             2、在Groups 框下面將Groups1 重命名為startup ,同時添加CMSIS, Libraries, User;

         

                選擇CMSIS Files框下將CMSIS文件夾的core_cm3.c添加進去; 

         

                選擇LibrariesFiles框下將Libraries--->src文件下的所以文件都加進去添加進去;

         

                選擇UserFiles框下將User文件下的所以文件都加進去添加進去;

         

          如下圖所示: 


         

        3、工程構架如下圖所示:


         

        4、編寫main.c 和文件路徑 

         

          1、新建main.c 保存到User文件夾里,將其添加到User工程名下。

         

                #include "stm32f10x.h"

         

                 int main(void)

        {

          while(1)

        {;}

        }

         

          2、在project框下,右鍵點擊Target 1,選擇Options for Target target1 


         

             output 選項下,在create HEX file 前打上鉤, 點擊select Folder for Objects 選擇輸出文   

                     件夾為 output文件夾; 

         

            Listing選項下,點擊select Folder for Listings 選擇鏈接文   

                     件夾為 List文件夾;

         

            在C/C++選項下, define里 填入 USE_STDPERIPH_DRIVER,STM32F10X_MD 中間用英 

                         文的逗號;(一定要記得)

         

                           Include Paths 里,點擊右邊的文件路徑框 ,選擇相應的CMSIS,       

                         libraries 里的INC 和SRC 還有 User ;

         

             也可以填絕對路徑,比如:   C:\Users\Administrator\Desktop\STM32編程練習 

                                        \fisrt_project\CMSIS  這樣比較麻煩



         

         

         

           3、好了,這下開始編譯鏈接:

          Error Warring;

           First_project 就建好了;萬里長征的第一步,總算走出去了。

         4、總結:關鍵是Option for target 的設置,包括output ,listing,和C/C++,尤其是C/C++這個選項里一定要設置對。

              DefineUSE_STDPERIPH_DRIVER,STM32F10X_MD,這是預定義的兩個宏定義。

              stm32f10x.h這個頭文件里搜索 USE_STDPERIPH_DRIVER 有這么一段

                    #ifdef USE_STDPERIPH_DRIVER

                    #include "stm32f10x_conf.h"

                    #endif

             據說是定義控制了是否在應用中啟用外設驅動。

        stm32f10x.h這個頭文件里搜索 STM32F10X_MD, 

               STM32中密度器件

        #ifdef STM32F10X_MD

        ADC1_2_IRQn                18,     

        USB_HP_CAN1_TX_IRQn        19,     

        USB_LP_CAN1_RX0_IRQn       20,     

        CAN1_RX1_IRQn              21,     

        CAN1_SCE_IRQn              22,     

        EXTI9_5_IRQn               23,     

              。

              。    

              。      

        #endif    可能是定義中斷向量的值吧

         

              

        就寫到這里,才發現我自己做也許一個兩個小時就能建好工程,但是要把寫出來我卻用了一個下午。為了大家跟我都盡快學會STM32,我會努力學習將成果與大家分享;

                                                                  20131225

         

        ps:

         自我感覺寫得還是比較清楚,不懂的可以問我。另外可以去看一下李想的STM32的視頻。

         

         理論夠硬,才能走得更遠。 有問題,私信我。

        本文轉自大俠 忙碌的小姚

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮