关于Keil-MDK
近來上ARM選修課找老師借了STM32來玩玩,準確來說是一塊集成icore3和CycloneIV的雙核心板。
之前一直以為keil是專門為51單片機而設計的,沒想到比想象中的要強大(怪我太辣雞==),C語言是獨立于指令集的高級語言,大部分情況下代碼都是一致的,但是不同單片機廠商和各家的IDE頭文件定義形式不同或者編譯器解釋(編譯)差別等等,造成了不同的開發環境,就好比用IAR也能開發51一樣。
新手剛開始接觸STM32F407,以最簡單的LED閃爍來說說keilMDK的工程創建步驟:
1.下載標準固件庫
ST官方提供的固件庫實際上就是一些底層,提供用戶函數調用的接口,減少了用戶對寄存器的直接操作。
- 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()函數注釋掉即可
下面正式建立一個工程,類似51單片機建立步驟將工程放在MDK-ARM目錄下,具體可以省略了,彈出的Mnange Run 窗口點擊 Cancel
在左欄工程目錄下右鍵選擇 Manage Projct Iterms 并添加如圖所示的源文件
3.LED實現
貼一波程序....實現LED閃爍還是比較容易的,主要利用官方給的底層就行.
4.折騰了好久的一個小問題
按照上述步驟之后,就連編譯一個最簡單的 main 加 while(1) 循環老是出錯
Fatal error: L6002U: Could not open file main.o: No such file or directory
后面一大串的地址,比如 C:\User\王某某...... .o后綴文件是編譯過程中產生的,每個文件都生成.o文件,再把所有的.o文件鏈接成最后的執行程序,具體解決方法是,在電腦的高級系統設置下修改環境變量temp和tmp
C:\useramily這個是文件夾名可以隨意,但是可能你發現修改了這個之后依然無法成功編譯,重點在這,你需要先在C盤創建這個文件夾,然后再修改!!!這個坑跳了半天才跳出來....
哇,久違的寫文章,實在是被這個創建工程弄的很煩,下一個可以考慮 vivado 工程創建。
2016/4/11
amilyxy
轉載于:https://www.cnblogs.com/amilyxy/p/6702549.html
總結
以上是生活随笔為你收集整理的关于Keil-MDK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于事件的异步模式——Backgroun
- 下一篇: struts2 的国际化