新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 關于STM32 MDK中USE_STDPERIPH_DRIVER問題

        關于STM32 MDK中USE_STDPERIPH_DRIVER問題

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

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

        本文引用地址:http://www.104case.com/article/201611/319411.htm

          這時候我們需要在“TargetOptions”中的“C/C++”選項卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。這樣才能使編順利通過。

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

          #ifdefUSE_STDPERIPH_DRIVER

          #include"stm32f10x_conf.h"

          #endif

          這段代碼的意思是,只有用預編譯指令預定義了“USE_STDPERIPH_DRIVER”,才會將"stm32f10x_conf.h"包含進“stm32f10x.h”中,從而被"main.c"用到。這就解釋了,為什么我們沒有在“main.c”中包含"stm32f10x_conf.h",而在編譯之后卻被包含進了"main.c"中。"stm32f10x_conf.h"文件相當于一個開關文件,如果要用到STM32固件庫驅動標準外設,則外設驅動頭文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我們通過代碼

          #include"stm32f10x_gpio.h"

          來實現(xiàn)這個操作。

          說到這兒估計大家已經(jīng)對“USE_STDPERIPH_DRIVER”的來龍去脈有個清晰的認識了吧?其實單從字面意思理解就是“使用標準外設驅動”,在C/C++預定義中加入“USE_STDPERIPH_DRIVER”就是允許“使用標準外設驅動”了。至于加入的“STM32F10X_HD“同樣能在文件”stm32f10x.h“通過如上所述的方法通過功能查找來進行解釋,其實它也是對于對應硬件的某些定義起開關作用罷了。

          另外需要注意的是,在使用不同版本庫的時候,因為有所不同(當然包括MDK自帶的庫),所以我們需要在包含的時候一定要注意選對路徑,免得不同版本之間的一些定義由于所處的文件不同而產(chǎn)生沖突。



        關鍵詞: STM32MD

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 弥勒县| 田阳县| 淮北市| 巴楚县| 梅州市| 巍山| 盐亭县| 西畴县| 布拖县| 巴楚县| 西城区| 贡嘎县| 神木县| 阜平县| 乐清市| 绥芬河市| 泰州市| 锦州市| 彰化市| 确山县| 兴化市| 南木林县| 荣成市| 容城县| 台山市| 海兴县| 龙南县| 富民县| 翁牛特旗| 揭东县| 沧源| 呼玛县| 益阳市| 龙里县| 海原县| 蒙城县| 会昌县| 宿松县| 平阳县| 旅游| 尼勒克县|