日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释

發布時間:2025/3/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初學STM32,在RealView MDK 環境中使用STM32固件庫建立工程時,初學者可能會遇到編譯不通過的問題。出現如下警告或錯誤提示:

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

  這時候我們需要在“Target Options”中的“C/C++”選項卡中如圖-2所示紅框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。這樣才能使編順利通過。

圖-2

  知其然了,我們還得知其所以然。下面就聽Herison給大家一一道來。我們知道,程序的執行是從“main.c”文件開始的,其中必須包含有頭文件“stm32f10x.h”。我們打開“stm32f10x.h”,按下“Ctrl+F”鍵,查找USE_STDPERIPH_DRIVER,在“Find What”欄中輸入“USE_STDPERIPH_DRIVER”。如圖-3所示。點擊“Find Next”,出現“USE_STDPERIPH_DRIVER”對應的代碼行,重復上邊操作三次,第三次的時候我們能在第8296-8298行找到如圖-4所示代碼段。

圖-3

圖-4

?

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

圖-5

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

(1)USE_STDPERIPH_DRIVER:預編譯有他的話,程序可包含"stm32f10x_conf.h"

(2)STM32F10X_HD :

#ifdef STM32F10X_HD
? ADC1_2_IRQn???????????????? = 18,???? /*!< ADC1 and ADC2 global Interrupt?????????????????????? */
? USB_HP_CAN1_TX_IRQn???????? = 19,???? /*!< USB Device High Priority or CAN1 TX Interrupts?????? */
? USB_LP_CAN1_RX0_IRQn??????? = 20,???? /*!< USB Device Low Priority or CAN1 RX0 Interrupts?????? */
? CAN1_RX1_IRQn?????????????? = 21,???? /*!< CAN1 RX1 Interrupt?????????????????????????????????? */
? CAN1_SCE_IRQn?????????????? = 22,???? /*!< CAN1 SCE Interrupt?????????????????????????????????? */
? EXTI9_5_IRQn??????????????? = 23,???? /*!< External Line[9:5] Interrupts??????????????????????? */

啟動文件,對應的編譯對象不一樣

(3)USE_STM3210B_EVAL 是給st的開發板來說的,如果用USE_STM3210B_EVAL,那么它的許多資源定義就確定了,比如某個引腳用的led燈,某個引腳接蜂鳴器啥的

?

?

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。