久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2770|回復: 0
打印 上一主題 下一主題
收起左側

關于STM32 MDK中USE_STDPERIPH_DRIVER問題及 STM32F10X_LD STM32F10X_MD STM32F10X...

[復制鏈接]
跳轉到指定樓層
樓主
ID:201965 發表于 2017-5-17 21:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我之前更改了stm32f103的芯片型號,編譯無法通過。  c8t6->rct6
解決步驟:
1.“C/C++”選項卡框中的STM32F10X_MD 更換為  STM32F10X_HD
2.工程中相應的添加 startup_stm32f10x_hd.s
3.如果提示Error:Undefined symbol SystemInit  在工程中添加system_stm32f10x.c即可。


一.關于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“通過如上所述的方法通過功能查找來進行解釋,其實它也是對于對應硬件的某些定義起開關作用罷了。
二. STM32F10X_LD STM32F10X_MD STM32F10X_HD STM32F10X_CL宏定義的選擇
如果你使用stm32f10x_stdperiph_lib,會發現在stm32f10x.h文件會有一段關于宏選擇的代碼,如:
[cpp] view plaincopy
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
#define STM32F10X_CL /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
至于要使用哪個宏,則需要根據具體的芯片來進行選擇。那么,這些宏又對應著哪些具體的芯片呢?其實我們可以在《Reference manual》的第九章中找到答案,如文檔截圖:

這段話的意思很明顯,如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,則宏定義選擇的是STM32F10X_CL;如果是別的型號,則根據FLASH的容量來進行選擇。可能文字寫的有點不太清楚,還是以表格來說明:




MCU 型號
FLASH大小
STM32F10X_LD
STM32F101xx
STM32F102xx
STM32F103xx
16 ~ 32 Kbytes
STM32F10X_MD
STM32F101xx
STM32F102xx
STM32F103xx
64 ~ 128 Kbytes
STM32F10X_HD
STM32F101xx
STM32F103xx
256 ~ 512 Kbytes
STM32F10X_CL
STM32F105xx
STM32F107xx
忽略
這些參數,和MDK的設備參數一致,如圖所示:


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩插插 | 中文字幕在线观看第一页 | 国产福利小视频 | 国产美女自拍视频 | av第一页 | 黄页网址在线观看 | 欧美一区2区三区4区公司二百 | 成人精品鲁一区一区二区 | 精久久久 | 成人高清视频在线观看 | 国产精品99久久久精品免费观看 | 久久亚洲二区 | 麻豆视频国产在线观看 | 欧美精品一区二区三区在线播放 | 性一交一乱一伦视频免费观看 | 久久久久国产精品一区二区 | 欧美综合一区二区 | 欧美一级三级 | 免费观看色| 日韩精品免费视频 | 91国内外精品自在线播放 | 亚洲精品一区二区三区丝袜 | 成人在线精品视频 | 久久久久国产成人精品亚洲午夜 | 日本黄色影片在线观看 | 国产成人网 | 欧美在线观看网站 | 日本在线免费视频 | 不卡视频一区 | 久久久久av | 一区二区三区小视频 | 2022国产精品 | 国产精品99久久久久久动医院 | 国产亚洲成av人在线观看导航 | 国产激情视频网站 | av网站在线看 | 亚洲精品中文字幕中文字幕 | 一级黄片一级毛片 | 久久久久亚洲精品 | 欧美精品一二区 | 亚洲第一福利视频 |