亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > STM32F030 Nucleo-開發環境的搭建和工程建立

STM32F030 Nucleo-開發環境的搭建和工程建立 時間:2018-09-26      來源:未知

忍不住,還是在公司的電腦里安裝了開發環境,我個人比較喜歡Keil,所以就裝個MDK513!環境安裝好了!包括如果在電腦中還有其他ARM的開發工具,那么Keil5就需要在環境變量中修改路徑。不過這點不需要說了,度娘里面資料非常多!搜搜就好!

環境搭好后,為了驗證,我就迫不及待的解壓前面下載的標準外設庫STM32F0xx_StdPeriph_Lib_V1.5.0,然后再路徑:......\STM32F0xx_StdPeriph_Lib_V1.5.0\Projects\STM32F0xx_StdPeriph_Templates\MDK-ARM 中打開標準外設庫提供的工程模板,然后就是編譯了!

然后,然后,悲催的事情出現了:報錯!報錯!報了很多的錯!!但是基本上都是一個錯誤如下:

..\..\..\Libraries\CMSIS\Device\ST\STM32F0xx\Include\stm32f0xx.h(479): error: #5: cannot open source input file "core_cm0.h": No such file or directory

#include "core_cm0.h"

..\system_stm32f0xx.c: 0 warnings, 1 error

從錯誤中來看!很明顯:找不到這個core_cm0.h頭文件

雙擊錯誤然后就可以看到出錯的地方:

注意一點:#include "core_cm0.h"使用的是””號,而不是<>尖括號。所以在庫里面找到添加即可!

添加之后!再編譯!又來了!錯誤如下:

..\Libraries\CMSIS\core_cm0.h(127): error: #5: cannot open source input file "core_cmInstr.h": No such file or directory

#include /* Core Instruction Access */

進去之后如下:

這個文件是<>尖括號包含的,那么就是說是從Keil的庫中包含的,而不是我們自己添加的!(當然,要解決這個問題也可以自己添加頭文件,然后將<>改成“”,但是這么多文件都包含了這個頭文件,這種傻缺的事咱還是別玩了!所以另想辦法!!)。于是乎我進如我的Keil5安裝目錄,在路徑:D:\Program Files\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Include找到了core_cmInstr.h這個頭文件(我在D盤安裝的keil5),那么說明在keil路徑下是存在這個文件的,但是為毛就是沒有被調用呢?

百度了一下,找到了很多相關的東西,但是都是解釋這是啥??有的哥們是用了上面的方法編譯通過了!反正就是沒明說!

然后,我才想起來,這個問題早在好久以前我就在我的筆記本解決過了!那時候沒記錄下來,所以現在又忘了!但是我想起了,之前經過跟蹤代碼發現一個問題,在keil工程中,core_cm3.c/core_cm0.c這個文件里面的內嵌匯編代碼根本就沒有調用,調用的是core_cmInstr.c和core_cmFunc.c這兩個文件的內容,是作為內核處理的依據,所以,不用說了,就是和它倆有關系!!而且經過實際驗證core_cm3.c/core_cm0.c等這個文件再keil工程中可以干掉。

那么隨著又想起了一個問題,keil472以前的keil在安裝的時候,在安裝目錄下X:\Program Files\Keil\ARM\目錄下存在CMSIS文件夾,而在keil5安裝好之后,是不存在這個文件夾的所以才出現以上的錯誤!于是乎!我將

D:\Program Files\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\目錄下的CMSIS文件夾拷貝到了D:\Program Files\Keil_v5\ARM\目錄下,這個文件夾整整有239M哇(我磁盤空間不多了,小小螞蚱也是肉)!果斷的將CMSIS\目錄下的除了Include文件夾之外的所以文件/文件夾都干掉了!在編譯!。。。。。0錯誤0警告通過了!

迫不及待的就從標準外設庫STM32F0xx_StdPeriph_Lib_V1.5.0中將必要文件拷貝出來,自己建一個工程!!!建好之后!同樣編譯!哇靠!好長的警告!

..\Libraries\FWlib\src\stm32f0xx_wwdg.c(152): warning: #223-D: function "assert_param" declared implicitly

進去一看!就是找不到這個函數!啥情況呢??文件添加不完全??其實不是的,我相信只要是玩過ST的MCU的人都知道,ST的庫在編譯的時候,可以可控的選擇編譯一些必要的驅動文件,一些用不到的可以不編譯!就是這個stm32f0xx_conf.h頭文件了!進入這個頭文件就可以看到(1)驅動文件的頭文件!

(2)上面報警告的“函數”,其實它是個宏!先不管他!編譯通過再說!

那么也就說明stm32f0xx_conf.h這個頭文件沒有被包含在工程中,但是一查看

確實是包含了!而且頭文件也在keil的C/C++->Include添加了!

那么啥情況呢??看來還沒有找到根本的問題所在!

同樣的我也是憑著經驗的記得!這個stm32f0xx_conf.h頭文件是在stm32f0xx.h頭文件下包含的!于是乎,找到文件就可以查找到了如下圖:

在stm32f0xx.h頭文件的底部找到了這句話:

#ifdef USE_STDPERIPH_DRIVER

#include "stm32f0xx_conf.h"

#endif

如果定義USE_STDPERIPH_DRIVER這個宏,那么stm32f0xx_conf.h頭文件將被包含!那么問題就解決了!我們只需要定義這個宏就好!

這里提供兩種解決辦法!

(1)如下圖

直接在上面添加宏定義語句:

#define USE_STDPERIPH_DRIVER

之后編譯!0錯誤0警告!

但是本人不推薦使用這種方法!推薦使用方法(2)

(2)如下圖

在上圖頁面Define添加宏:USE_STDPERIPH_DRIVER

確定!再編譯!同樣的0錯誤0警告!

那么為什么不建議使用第一種方法呢?

因為對于庫來說為了更靈活的使用(有些東西是沒必要時時存在的),當需要某部分的庫時,在添加即可,在keil上添加是全局的,而且不改變庫的源文件!并且容易修改!如果是第一種方法!可能那天就忘了!有時候想關個東西都得找半天!其實言下之意就是,這樣的宏在庫中還存在著很多!

OK了!STM32F030牛客板卡的第一個工程就建好了!我是個懶人!將其作為模板!以后直接拷貝它使用就好!

當然!對于不想使用庫進行開發的童鞋,可能猶豫!因為STM32F103系列的,有很多大神寫好了在直接操作寄存器時候的一些封裝,所以可以直接用,但是這里,就不同了!那么咋辦呢?

其實只需要添加stm32f0xx.h文件和startup_stm32f030.s啟動文件,再包含必要的內核文件/頭文件即可!這才是操作寄存器了!哈哈!那么有人可能不理解了,在F103的時候,我們自己寫的中斷函數還有一個什么函數,并且中斷函數隨意命名!哈哈!!建議自己去研究M0內核的中斷向量表吧!嘿嘿!

上一篇:Xml文件約束規則使用詳解

下一篇:STM32F030 Nucleo-開發前要做的事

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 国产福利区一区二在线观看 | 精品一区二区国语对白 | 青草久久影院 | 国产精品99久久免费黑人 | 国产精品欧美日韩精品 | 亚洲天堂网2018 | 青青操手机看 | 久久人人青草97香蕉 | 国产精品视频一区二区猎奇 | 一级做a爰性色毛片免费 | 日本-区二区三区免费精品 日本全黄录像视频 | 日韩经典在线 | 内地电视剧大全免费观看 | 精品一区二区三区在线观看l | 啪啪网址免费网址 | 女人挨操 | 久久久精品免费热线观看 | 天天爽天天爽夜夜爽毛片 | 日本高清视频www夜色资源 | 久久精品韩国三级 | 久久亚洲精品成人 | 一级毛片牲交大片 | 韩国三级hd中文字幕有哪些 | 日本xxxx人 | 亚洲大片免费观看 | 天天爱天天色天天干 | 久久国产精品免费专区 | 欧美a免费 | 久久久这里有精品 | 久久狠狠干 | 欧美国产综合视频在线观看 | 精品国产夜色在线 | 久久99精品国产一区二区三区 | 久久最新精品 | 性xxxx视频播放免费 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 国产亚洲精品九九久在线观看 | 九九99久久精品在免费线bt | 国产旗袍丝袜在线观看视频 | 亚洲高清中文字幕 | 日本一区视频在线 |