www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]忍不住,還是在公司的電腦里安裝了開發(fā)環(huán)境,我個(gè)人比較喜歡Keil,所以就裝個(gè)MDK513!環(huán)境安裝好了!包括如果在電腦中還有其他ARM的開發(fā)工具,那么Keil5就需要在環(huán)境變量中修改路徑。不過這點(diǎn)不需


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

環(huán)境搭好后,為了驗(yàn)證,我就迫不及待的解壓前面下載的標(biāo)準(zhǔn)外設(shè)庫(kù)STM32F0xx_StdPeriph_Lib_V1.5.0,然后再路徑:......STM32F0xx_StdPeriph_Lib_V1.5.0ProjectsSTM32F0xx_StdPeriph_TemplatesMDK-ARM 中打開標(biāo)準(zhǔn)外設(shè)庫(kù)提供的工程模板,然后就是編譯了!

然后,然后,悲催的事情出現(xiàn)了:報(bào)錯(cuò)!報(bào)錯(cuò)!報(bào)了很多的錯(cuò)!!但是基本上都是一個(gè)錯(cuò)誤如下:

......LibrariesCMSISDeviceSTSTM32F0xxIncludestm32f0xx.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

從錯(cuò)誤中來看!很明顯:找不到這個(gè)core_cm0.h頭文件

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

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

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

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

#include /* Core Instruction Access */

進(jìn)去之后如下:

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

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

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

那么隨著又想起了一個(gè)問題,keil472以前的keil在安裝的時(shí)候,在安裝目錄下X:Program FilesKeilARM目錄下存在CMSIS文件夾,而在keil5安裝好之后,是不存在這個(gè)文件夾的所以才出現(xiàn)以上的錯(cuò)誤!于是乎!我將

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

迫不及待的就從標(biāo)準(zhǔn)外設(shè)庫(kù)STM32F0xx_StdPeriph_Lib_V1.5.0中將必要文件拷貝出來,自己建一個(gè)工程!!!建好之后!同樣編譯!哇靠!好長(zhǎng)的警告!

..LibrariesFWlibsrcstm32f0xx_wwdg.c(152): warning: #223-D: function "assert_param" declared implicitly

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

(2)上面報(bào)警告的“函數(shù)”,其實(shí)它是個(gè)宏!先不管他!編譯通過再說!

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

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

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

同樣的我也是憑著經(jīng)驗(yàn)的記得!這個(gè)stm32f0xx_conf.h頭文件是在stm32f0xx.h頭文件下包含的!于是乎,找到文件就可以查找到了如下圖:

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

#ifdef USE_STDPERIPH_DRIVER

#include "stm32f0xx_conf.h"

#endif

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

這里提供兩種解決辦法!

(1)如下圖

直接在上面添加宏定義語(yǔ)句:

#define USE_STDPERIPH_DRIVER

之后編譯!0錯(cuò)誤0警告!

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

(2)如下圖

在上圖頁(yè)面Define添加宏:USE_STDPERIPH_DRIVER

確定!再編譯!同樣的0錯(cuò)誤0警告!

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

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

OK了!STM32F030??桶蹇ǖ牡谝粋€(gè)工程就建好了!我是個(gè)懶人!將其作為模板!以后直接拷貝它使用就好!

當(dāng)然!對(duì)于不想使用庫(kù)進(jìn)行開發(fā)的童鞋,可能猶豫!因?yàn)镾TM32F103系列的,有很多大神寫好了在直接操作寄存器時(shí)候的一些封裝,所以可以直接用,但是這里,就不同了!那么咋辦呢?

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


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式開發(fā)中,STM32的時(shí)鐘系統(tǒng)因其靈活性和復(fù)雜性成為開發(fā)者關(guān)注的焦點(diǎn)。然而,看似簡(jiǎn)單的時(shí)鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時(shí)鐘源選擇、PLL配置、總線時(shí)鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時(shí)鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測(cè)等場(chǎng)景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

ARM系統(tǒng)幾乎都采用Linux的操作系統(tǒng),而且?guī)缀跛械挠布到y(tǒng)都要單獨(dú)構(gòu)建自己的系統(tǒng),與其他系統(tǒng)不能兼容,這也導(dǎo)致其應(yīng)用軟件不能方便移植,這一點(diǎn)一直嚴(yán)重制約了ARM系統(tǒng)的發(fā)展和應(yīng)用。GOOGLE開發(fā)了開放式的Andro...

關(guān)鍵字: Linux x86 ARM

隨著計(jì)算需求的多樣化,尤其是隨著移動(dòng)設(shè)備、嵌入式系統(tǒng)和云計(jì)算的興起,ARM 和 x86 架構(gòu)之間的爭(zhēng)論變得更加突出。ARM(高級(jí) RISC 機(jī)器)和 x86 代表兩種不同類型的處理器架構(gòu),每種架構(gòu)都針對(duì)不同的工作負(fù)載和用...

關(guān)鍵字: Linux x86 ARM

在能源效率與智能化需求雙重驅(qū)動(dòng)下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革。基于STM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動(dòng)態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

從畫質(zhì)優(yōu)化 (NSS) 到幀率提升 (NFRU) 和光線追蹤(NSSD),Arm 計(jì)劃覆蓋移動(dòng)端圖形處理的多個(gè)維度,推動(dòng)邊緣 AI 圖形革命。而未來通過持續(xù)的技術(shù)迭代,Arm也將保持在移動(dòng)計(jì)算領(lǐng)域的技術(shù)領(lǐng)先,滿足手游、A...

關(guān)鍵字: ARM 神經(jīng)圖形技術(shù) GPU AI ML
關(guān)閉