終于在不用keil5自帶添加庫的基礎(chǔ)上0 error的新建了一個(gè)工程??目慕O絆搞了快一個(gè)下午,各種小問題搞到崩潰。
首先是庫文件添加路徑的問題 ,只要是你工程中用到的頭文件,都需要在工程選項(xiàng)配置中添加相應(yīng)的路徑,另外,通過一個(gè)下午的掙扎,發(fā)現(xiàn)最好還是在學(xué)習(xí)的過程中逐漸構(gòu)建自己的代碼庫,最好自己添加需要的庫文件,這樣便于程序的移植。也便于熟悉各種啟動(dòng)文件。
另外一定要注意程序中不能有漢語輸入。
千萬不要有漢語輸入!千萬不要有漢語輸入!千萬不要有漢語輸入!
一開始我一直以為是keil壞了,誰知道最后還是發(fā)現(xiàn)是自己的錯(cuò)。所以一定要細(xì)心。跟著他提示的錯(cuò)誤代碼行去找,記住,一定要細(xì)心。不要老是懷疑別人。一點(diǎn)點(diǎn)漢語輸入的空格導(dǎo)致我浪費(fèi)了兩個(gè)小時(shí)的時(shí)間。
找到這行,通常是里面的某個(gè)參數(shù)或者變量不符合格式。找個(gè) 里面的變量 ,把一行全部刪除,然后切換英文輸入,注意半角英文,如果還是不對(duì)的話,那就是你的keil壞了。
總結(jié)的合理的文件結(jié)構(gòu)(養(yǎng)成自己的代碼風(fēng)格):
USERS文件:
存放自己編輯的源文件和頭文件。工程中包含自己的源文件,路徑中包含頭文件。另外,在USERS中,最好在包含it.c and conf.h。
it中寫中斷函數(shù),conf中釋放自己需要的固件庫頭文件,屏蔽自己不需要的頭文件。也就是說你在lib文件夾中包含了什么固件庫,就需要在這里釋放什么頭文件。這和我們平時(shí)編寫頭文件和源文件的思路一樣呀,一個(gè)頭文件總是跟著一個(gè)源文件。
CMSIS文件:
中存放工程都必須的啟動(dòng)代碼,core_cm3.c / system_stm32f10x.c / startup_stm32f10x_hd.s
LIB文件:
中存放程序用到固件庫的源程序,同時(shí)注意包含misc.c文件。
另外,不要忘了在C++選項(xiàng)卡中寫入U(xiǎn)SE_STDPERIPH_DRIVER,寫下這句話就意味著在stm32f10x.c中包含了conf.h頭文件,(具體原理點(diǎn)這里)不然需要自己在文件中包含這個(gè)頭文件,有點(diǎn)麻煩。
上面 提到的幾個(gè)文件的作用
1、core_cm3.c文件
在CoreSupport文件夾中有core_cm3.c和頭文件core_cm3.h,它的作用是采用Cortex-M3內(nèi)核設(shè)計(jì)的SoC芯片廠商設(shè)計(jì)的芯片提供了一個(gè)進(jìn)入CM3內(nèi)核的接口。core_cm3.c中還有一些與編譯器(MDK、IAR等)有關(guān)的代碼。較重要的是core_cm3.c中包含stdio.h頭文件,這是一個(gè)ANSI C文件,主要作用是提供一些新類型的定義。
2、system_stm32f10x.c文件
DeviceSupport文件夾下是啟動(dòng)文件、外設(shè)寄存器定義、中斷向量定義層的一些文件,這些文件由ST公司提供。system_stm32f10x.c的主要作用是設(shè)置系統(tǒng)時(shí)鐘和總線時(shí)鐘。
3、stm32f10x.h文件
這個(gè)文件非常重要,是非常底層的文件,包含了寄存器地址和結(jié)構(gòu)體類型的定義,在使用到stm32固件庫的地方都要包含它。
3、stm32f10x_it.c和stm32f10x_conf.h文件
stm32f10x_it.c這個(gè)文件主要是編寫中斷程序的,stm32f10x_conf.h被包含在stm32f10x.h文件中主要是配置外設(shè)的頭文件,我們需要什么在這里打開。
4、startup_stm32f10x_hd.s文件
在這個(gè)文件中有一段啟動(dòng)文件,啟動(dòng)文件中先初始化系統(tǒng)時(shí)鐘,然后才執(zhí)行主函數(shù),因此我們要注意配置時(shí)鐘在這個(gè)文件里配置。
基本上上面這些就能夠完整的編譯一個(gè)keil5的工程了。
5、關(guān)于misc.c文件:
STM32 V3.5版本的庫函數(shù)中沒有原來版本中單獨(dú)對(duì)于NVIC(中斷向量嵌套)的外設(shè)驅(qū)動(dòng),把NVIC的外設(shè)驅(qū)動(dòng)放在了misc.c中,實(shí)際上是代替原來的stm32f10x_nvic.c.
上一篇:keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
下一篇:stm32的VCC/VDD/VSS/VEE/VBAT的區(qū)別
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- RISC-V人才該怎么培養(yǎng)?專家這樣說
- 割草機(jī)器人,四大流派的巔峰之戰(zhàn)
- 車載顯示迎來三大革命丨“形態(tài)”革命
- 什么是“CDC+空懸”?
- 汽車電子信息安全:如何有效保護(hù)硬件Debug口?
- 新能源汽車核心技術(shù)之“大三電”、“小三電”
- 芯原如何推動(dòng)RISC-V嵌入式軟件人才發(fā)展?
- Arm 技術(shù)助力《國(guó)家地理》探險(xiǎn)家繪制地球海洋圖景
- Arm SME2 技術(shù)加速安卓 AI 升級(jí),驅(qū)動(dòng)移動(dòng)應(yīng)用下一代功能革新
- VGA接口定義、功能用途和種類
- 閱讀并了解是德科技示波器、校準(zhǔn)服務(wù)精彩專題,答題贏好禮!
- 新書推薦《ARM Cortex-M0從這里開始 》
- DIY FPGA初級(jí)學(xué)習(xí)板
- 看視頻,了解泰克高性價(jià)比頻譜分析儀,填卷贏好禮!
- 邀請(qǐng)函:EEWorld 十五周年嘉年華系列活動(dòng)開啟,有你真好!
- 下載MPS AI電源資料包,贏【Keep體脂秤、按摩眼罩、電腦支架】
- PI 電源小課堂:集成式半橋驅(qū)動(dòng)IC BridgeSwitch 2, 助力高效永磁同步電機(jī)逆變器的設(shè)計(jì)
- 逛村田在線云展廳,看干貨,闖關(guān)贏好禮!
- Luminar 收購獨(dú)家激光雷達(dá)芯片合作伙伴OptoGration
- GlobalFoundries否認(rèn)收購傳聞
- 消費(fèi)電子旺季來臨:華為、榮耀將先后發(fā)新機(jī)
- 納思達(dá)H1預(yù)增39.31%,部分芯片售價(jià)適時(shí)上漲
- 攜手共度缺芯的難關(guān),寧德時(shí)代/蔚來/上汽牽手寒武紀(jì)子公司
- 全國(guó)政協(xié)委員張?jiān)朴拢?G消息處于測(cè)試階段,三季度會(huì)商用
- 總投資30億,威海新區(qū)恒嘉輝半導(dǎo)體產(chǎn)業(yè)園8月底完成施工
- 總投資50億,北斗芯片SIP封裝及集成電路設(shè)計(jì)項(xiàng)目落戶珠海
- 京東方無緣iPhone 12系列屏幕供應(yīng)商! LGD將改變命運(yùn)
- 甬矽電子8億顆通信用高密度集成電路及模塊封裝項(xiàng)目獲融資