<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于STM32 MDK中USE_STDPERIPH_DRIVER問(wèn)題

          關(guān)于STM32 MDK中USE_STDPERIPH_DRIVER問(wèn)題

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          初學(xué)STM32,在RealViewMDK環(huán)境中使用STM32固件庫(kù)建立工程時(shí),初學(xué)者可能會(huì)遇到編譯不通過(guò)的問(wèn)題。出現(xiàn)如下警告或錯(cuò)誤提示:

            warning:#223-D:function"assert_param"declaredimplicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

          本文引用地址:http://www.ex-cimer.com/article/201611/319411.htm

            這時(shí)候我們需要在“TargetOptions”中的“C/C++”選項(xiàng)卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。這樣才能使編順利通過(guò)。

            知其然了,我們還得知其所以然。下面就一一道來(lái)。我們知道,程序的執(zhí)行是從“main.c”文件開(kāi)始的,其中必須包含有頭文件“stm32f10x.h”。我們打開(kāi)“stm32f10x.h”,按下“Ctrl+F”鍵,查找USE_STDPERIPH_DRIVER,在“FindWhat”欄中輸入“USE_STDPERIPH_DRIVER”。點(diǎn)擊“FindNext”,出現(xiàn)“USE_STDPERIPH_DRIVER”對(duì)應(yīng)的代碼行,重復(fù)上邊操作三次,第三次的時(shí)候我們能在第8296-8298行找到

            #ifdefUSE_STDPERIPH_DRIVER

            #include"stm32f10x_conf.h"

            #endif

            這段代碼的意思是,只有用預(yù)編譯指令預(yù)定義了“USE_STDPERIPH_DRIVER”,才會(huì)將"stm32f10x_conf.h"包含進(jìn)“stm32f10x.h”中,從而被"main.c"用到。這就解釋了,為什么我們沒(méi)有在“main.c”中包含"stm32f10x_conf.h",而在編譯之后卻被包含進(jìn)了"main.c"中。"stm32f10x_conf.h"文件相當(dāng)于一個(gè)開(kāi)關(guān)文件,如果要用到STM32固件庫(kù)驅(qū)動(dòng)標(biāo)準(zhǔn)外設(shè),則外設(shè)驅(qū)動(dòng)頭文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我們通過(guò)代碼

            #include"stm32f10x_gpio.h"

            來(lái)實(shí)現(xiàn)這個(gè)操作。

            說(shuō)到這兒估計(jì)大家已經(jīng)對(duì)“USE_STDPERIPH_DRIVER”的來(lái)龍去脈有個(gè)清晰的認(rèn)識(shí)了吧?其實(shí)單從字面意思理解就是“使用標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)”,在C/C++預(yù)定義中加入“USE_STDPERIPH_DRIVER”就是允許“使用標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)”了。至于加入的“STM32F10X_HD“同樣能在文件”stm32f10x.h“通過(guò)如上所述的方法通過(guò)功能查找來(lái)進(jìn)行解釋,其實(shí)它也是對(duì)于對(duì)應(yīng)硬件的某些定義起開(kāi)關(guān)作用罷了。

            另外需要注意的是,在使用不同版本庫(kù)的時(shí)候,因?yàn)橛兴煌ó?dāng)然包括MDK自帶的庫(kù)),所以我們需要在包含的時(shí)候一定要注意選對(duì)路徑,免得不同版本之間的一些定義由于所處的文件不同而產(chǎn)生沖突。



          關(guān)鍵詞: STM32MD

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();