關于keil_MDK

近來上ARM選修課找老師借了STM32來玩玩,準確來說是一塊集成icore3和CycloneIV的雙核心板。
 之前一直以為keil是專門為51單片機而設計的,沒想到比想象中的要強大(怪我太辣雞==),C語言是獨立于指令集的高級語言,大部分情況下代碼都是一致的,但是不同單片機廠商和各家的IDE頭文件定義形式不同或者編譯器解釋(編譯)差別等等,造成了不同的開發環境,就好比用IAR也能開發51一樣。
 新手剛開始接觸STM32F407,以最簡單的LED閃爍來說說keilMDK的工程創建步驟:

1.下載標準固件庫

ST官方提供的固件庫實際上就是一些底層,提供用戶函數調用的接口,減少了用戶對寄存器的直接操作。


STM32F4xx_DSP_StdPeriph_Lib_V1.8.0—固件庫內容
  • Libraries 里面是驅動庫的源代碼及啟動文件
  • Project 用驅動庫寫的例子和工程模板
  • Utilities 官方評估板對應的一些源碼,和第三方軟件庫,如emwin圖形軟件庫、fatfs文件系統
  • .chm 是固件庫幫助文檔

2.創建自己的工程模板

合理的工程結構使得開發變得簡單維護起來也比較方便,首先說明幾個建立工程模板所必要的文件

  • core_cm4.h 提供進入M4內核接口
  • stm32f4xx.h 是 STM32F4 片上外設訪問層頭文件
  • system_stm32f4xx.h 片上外設接入層系統頭文件,主要是申明設置系統及總線時鐘相關的函數,、對應的system_stm32f4xx.c是在系統啟動的時候用來設置系統的整個系統和總線時鐘。
  • stm32f4xx_it.c、stm32f4xx_it.h 中斷相關
  • stm32f4xx_conf.h 外設驅動配置
  • stm32f3xx_rcc.c 和 stm32f4xx_rcc.h 是與 RCC 相關的一些操作函數
  • startup_stm32f40_41xxx.s 重要的啟動文件

下面就來建立一個自己的工程模板,首先建立下面幾個文件夾:

模板目錄

 其中DERIVER用來放置外設庫文件以及啟動文件(將 \Libraries 下的STM32F4xx_StdPeriph_Driver復制到其中),MDK-ARM用來放置工程文件,USER則是用戶自己創建的自定義功能文件
 這里要注意一點,可以刪除main.h,將stm32f4xx_it.c中間的#include "main.h"以及SysTick_Handler()函數里面的TimingDelay_Decrement()函數注釋掉即可

在CMSIS文件夾下添加如下文件

下面正式建立一個工程,類似51單片機建立步驟將工程放在MDK-ARM目錄下,具體可以省略了,彈出的Mnange Run 窗口點擊 Cancel
 在左欄工程目錄下右鍵選擇 Manage Projct Iterms 并添加如圖所示的源文件

3.LED實現

貼一波程序....實現LED閃爍還是比較容易的,主要利用官方給的底層就行.

LED循環閃爍

4.折騰了好久的小問題

  • 編譯提示無法打開.o文件,后面跟著一大串的地址,比如 C:\User\王某某......
    連編譯一個最簡單的 mainwhile(1) 循環老是出錯

Fatal error: L6002U: Could not open file main.o: No such file or directory

.o后綴文件是編譯過程中產生的,每個文件都生成.o文件,再把所有的.o文件鏈接成最后的執行程序,具體解決方法是,在電腦的高級系統設置下修改環境變量temp和tmp


 C:\useramily這個是文件夾名可以隨意,但是可能你發現修改了這個之后依然無法成功編譯,重點在這,你需要先在C盤創建這個文件夾,然后再修改!!!這個坑跳了半天才跳出來....

  • 提示 .initialize=initialize 不是一個預期的表達式
    程序本身我檢查了數遍,沒有問題!!對比了例程發現!!在工程設置中Target中有一個設置不一樣..哭暈

報錯內容

填入--c99

 在 Option for targetTarget 下填入如圖內容,使其支持--c99標準,編譯就能通過,所以我不得不去查一下 --c99 的含義...

C99是在C89/90的基礎上發展起來的,增加了基本數據類型、關鍵字和一些系統函數等
 比如支持可變參數的宏定義
 新增了一種結構體/數組的初始化方式,名叫designated initializers 即:
 struct { int a[3], b; } w[] ={ [0].a = {1}, [1].a[0] = 2 };[9]
還有很多很多,有想法可以去看看~

找到這個原因之后,想了想自己也接觸了一年的單片機竟然連這個都不知道,盡管無數次使用Keil編程,但是真真的熟悉里面的工程配置,ROM地址,匯編標準什么的了解的實在夠少,不管是我還是身邊的人,學習單片機嵌入式FPGA學習IDE環境,都只是簡單的了解創建工程..反正..能用就行,不是么...才疏學淺~

?? 如果還碰到稀奇古怪的問題,我就干脆單獨拿一篇文章來寫問題好了....


哇,久違的寫文章,實在是被這個創建工程弄的很煩,下一個可以考慮 vivado 工程創建。
2016/4/11
    amilyxy

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容