久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5780|回復: 2
打印 上一主題 下一主題
收起左側

如何使用STM32_V3.5版本固件庫建立工程模板詳解

[復制鏈接]
跳轉到指定樓層
樓主
ID:233074 發表于 2018-9-4 20:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
推薦準備工作如下:
1:下載STM32_V3.5的固件庫。
下載地址:http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip

2:準備Keil uVision3.8( 我用的是此版本 ) 軟件,并安裝到電腦上。
下載地址:(見附件)

開始:
1:首先解壓縮下載的固件庫(保留一個備份)
   里面有,
   _htmresc :  ST的 logo完全無用,不用理會,
Libraries:  比較重要的文件 包含STM32的系統文件和大量頭文件,也就是庫文件了。
Project:   包含大量外設的例程,和各個軟件版本的評估版工程模板。
      KEIL對應的就是 MDK-ARM 文件下的工程模板。你也可以利用這個工程模板來修改,得到你自己的工程模塊,本文不用此法 。
Utilities: 就是評估版的相關文件:本文也不會用到,無視既可。
這四個文件,(先去掉文件的只讀屬性吧,相信你會的)

2:安照一般的方法,建立工程模板先建立一些文件夾,比如工程模板要建在D盤,下面的
  C:\Documents and Settings\Administrator\桌面\GPIO(項目名字,自己隨便定) 再該文件夾下面新建以下文件夾
   Libraries:直接復制上述的的Libraries文件夾,把其中的CMSIS剪切出來,放到GPIO目錄下,直接成為另一個文件夾。另外把STM32F10x_StdPeriph_Driver下的inc和src文件夾剪切出來,放在Libraries目錄下,STM32F10x_StdPeriph_Driver文件夾就可以刪除了。會發現里面就只剩下頭文件了。  
   CMSIS:就是從上面粘貼來的。在CMSIS\CM3\DeviceSupport\ST\STM32F10x目錄下直接將Startup文件剪切出來,放在Libraries目錄下,其他的不需要動。里面存放的就是重要的系統文件,先不要理會是什么作用吧,慢慢就明白了。
   Startup 就是從上面粘貼來的。我們要用的比如是:STM32F103VC,只要把startup\arm目錄下的startup_stm32f10x_hd.s文件剪切出來,放到Startup 下面就好。Startup只要這個文件,其它全刪吧。這個就是啟動文件,根據芯片存儲容量來選擇。
   USER:請在里面放個main.c的文件,里面就一個WHILE(1)循環就好,但請加上這個頭文件:#i nclude "stm32f10x.h"。  另外從固件庫的Project\STM32F10x_StdPeriph_Template目錄下復制 stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h。這四個h文件是Libraries里面沒有的,理論上要自己寫好的,但是固件庫里有就直接復制吧,呵呵。另外你還發現那個目錄下有個system_stm32f10x.c文件,有人問,這個怎么不一起復制了,很簡單,因為CMSIS這個文件夾里面已經有了,個人認為還是放在這里比較好,因為是系統文件。  
   Project :這個文件夾用來存放項目文件。比如你等下要建立的工程名字MAIN.uvproj,就放在這里。
   文件夾分配到此結束,為什么要這么分配文件夾呢,其實是個人理解的問題,我這樣的目的是為了比較清楚,也符合一般程序員的設置方法。等你了解了,隨便安排文件下都可以。
下面開始建立工程模板。
3:打開KEIL 軟件,建立新工程。
比如建MAIN.uvproj,保存在剛才的Project 文件夾下面。
選擇你使用的STM32芯片,比如我用的是103RB的,就選擇那個,確定后,會跳出來個窗口,問你是否復制啟動代碼,選擇否,因為我們已經弄好了,前面的準備工作不是白做的。

然后右鍵TARGET 1,選擇Manage Ccmponents,把文件給加進去吧。


加好文件后,出現如下的文件架構。

接下來要設置編譯文件的路徑,設置好后如下圖:
點...


現在編譯,還是有錯誤的。可以先編譯下,
因為main.c中有#i nclude "stm32f10x.h"這句,在這個重要的頭文件里,并沒有定義好一些東西,分別在stm32f10x.h的0070行,取消對 #define STM32F10X_HD  的屏蔽,
0105行   取消對#define USE_STDPERIPH_DRIVER的屏蔽,這兩個定義好,才能正常工作,第一個是選擇存儲容量的型號,每種芯片都不太一樣,所以讓你選擇,第二個是使用標準庫文件,因為我們是要用庫的,所以必須選擇,默認是不用庫的,直接進行寄存器的操作。
像初學者是用庫比較好,所以肯定選擇的。
也可以直接如下圖操作。
作用是一樣的。
選擇好后,直接編譯,恭喜你,成功了。
4:最后要說明的就是:
圖4

這個庫文件,是必須選擇misc.c 和stm32f10x_rcc.c的。
另外就是你選擇用什么功能,就把什么功能的c文件加進去,我這里已經加了一個對IO口的應用的一個c文件。

5:一些重要文件的說明吧

core_cm3.c/core_cm3.h
該文件是內核訪問層的源文件和頭文件,查看其中的代碼多半是使用匯編語言編寫的。

stm32f10x.h
該文件是外設訪問層的頭文件,該文件是最重要的頭文件之一。例如
向量等等。除了這些該頭文件還定義了和外設寄存器相關的結構體,如:
typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;
  包含了那么多寄存器的定義,那么在應用文件中(例如自己編寫的 main 源文件)只需要包含
stm32f10x.h即可。
在stm32f10x.h  8296行
#ifdef USE_STDPERIPH_DRIVER
  #i nclude "stm32f10x_conf.h"
#endif
這里定義了 #i nclude "stm32f10x_conf.h"
system_stm32f10x.c/h
該頭文件也可以稱為外設訪問層的頭文件和源文件。在該文件中可以定義系統的時鐘頻率,定義低速時鐘總線和高速時鐘總線的頻率,其中最關鍵的函數就是 SystemInit()了,這個后面會詳細介紹。總之這兩個文件是新固件庫V3.5的重點,有了它糧也大大簡化了使用 stm32的初始化工作。

stm32f10x_conf.h
這個文件和 V2 版本的庫的內容是一樣的,需要使用哪些外設就取消哪些外設的注釋。

stm32f10x_it.c/h
  這兩個文件包含了 stm32中斷函數,在源文件和頭文件中并沒有把所有的中斷入口函數都寫出來,而只寫了 ARM內核的幾個異常中斷,其他的中斷函數需要用戶自己編寫。stm32f10x_it.c的最后給了這樣一個模板。
/******************************************************************************/
/*                 STM32F10x Peripherals Interrupt Handlers          */
/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the   */
/*  available peripheral interrupt handler's name please refer to the startup    */
/*  file (startup_stm32f10x_xx.s).                                    */
/******************************************************************************/
/**
  * @brief  This  handles PPP interrupt request.
  * @param  None
  * @retval None
  */
/*void PPP_IRQHandler(void)
{
}*/
從注釋中的英文提示可以看出,中斷向量的名稱可以從相應的啟動代碼中找出,例如可以
startup_stm32f10x_md.s 中找到 USART1 中斷函數的名稱——USART1_IRQHandler。其他的中斷函
名可以以此類推,一一獲得,在這里我就不一一復述了。

Libraries文件夾
  該文件夾有包含兩個文件夾,一個是 src文件夾,另一個是 inc文件夾,顧名思義,一個里面放的是元件一個里面放的是頭文件。這兩個文件夾包含了所有的 STM32 的外設驅動函數,其實和 V2 版本也沒有太大的變化。簡單來說,外設的驅動相當于 windows的驅動函數 API,這些驅動函數看到函數名基本就可以明白這個函數的作用,例如:GPIO_SetBits 可以置位某個 IO 口,相反 GPIO_ResetBits 則可以復位某個 IO 口。我個人認為熟練使用庫可以大大提高編程的效率,同時規范使用庫函數也可以提高程序的可讀性,讓團隊中的其他程序員可以快速的明白代碼的作用。

完整的Word格式文檔51黑下載地址:
如何使用STM32_V3.5版本固件庫建立工程模板.docx (208.08 KB, 下載次數: 20)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:233074 發表于 2018-9-5 19:44 | 只看該作者
修改了,不知道為什么沒有顯示圖片
回復

使用道具 舉報

板凳
ID:33544 發表于 2018-9-20 17:10 | 只看該作者
不錯不錯學習了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码精品一区二区三区中文 | www.亚洲免费| 二区视频| 91久久精品国产91久久性色tv | 国产精品成人国产乱一区 | 亚洲香蕉在线视频 | 99久久精品免费看国产高清 | 国产不卡一区 | 国产欧美精品一区二区三区 | 久久久免费 | 欧美激情亚洲激情 | 毛片一区二区 | 国产中文 | 一区欧美| 国产在线观看一区二区三区 | 免费观看av | 成人午夜在线观看 | 欧美中文字幕 | 波多野结衣一区二区 | 91精品国产乱码久久久久久 | 成人av网站在线观看 | 欧美日韩国产传媒 | 中文字幕精 | av中文字幕在线 | 91视频一88av | 精品视频一区二区在线观看 | 久久精品国产a三级三级三级 | 日日夜夜免费精品视频 | 亚洲www啪成人一区二区 | 亚洲成人av | 成人黄色在线观看 | 国产精品不卡一区 | 久久爱黑人激情av摘花 | 成人免费视频 | 午夜精品久久久久久久久久久久 | 亚洲成人免费电影 | 亚洲精品中文字幕在线观看 | 欧美日一区二区 | 欧美精品第一区 | 超碰男人天堂 | 日本午夜网站 |