久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用codelite搭建stm32開(kāi)發(fā)環(huán)境

 山峰云繞 2022-03-15

https://blog.csdn.net/u012750409/article/details/52516653

本教程適用stm32f205  如果是f103 gcc編譯的時(shí)候會(huì)有幾處內(nèi)聯(lián)匯編代碼編譯不過(guò) 需要修改下源代碼

1.下載 安裝codelite

官網(wǎng)http:// 如果打不開(kāi)就去這里下載 鏈接: http://pan.baidu.com/s/1mirTPzE 密碼: rtv5
安裝 一直點(diǎn)next就ok了
2. arm GCC編譯器安裝
官網(wǎng)下載:https:///gcc-arm-embedded/ 下載zip版本的 安裝是直接解壓 注意不要解壓到帶中文路徑的目錄下 然后把編譯器的bin目錄的路徑添加到系統(tǒng)環(huán)境變量里 安裝就完成了

比如我的 D:\STM32\gcc-arm-none-eabi-5_3-2016q1-20160330-win32


3. 給codelite 添加arm gcc編譯器



4. 創(chuàng)建工程
codelite 要?jiǎng)?chuàng)建工程 先要?jiǎng)?chuàng)建工作空間 一個(gè)工作空間下可以有多個(gè)工程




5. 添加stm32標(biāo)準(zhǔn)庫(kù)到工程
也可以把標(biāo)準(zhǔn)庫(kù)編譯成.a文件 工程直接連接使用 這里不講這個(gè)
標(biāo)準(zhǔn)庫(kù)的添加 基本跟mdk差不多
1. 打開(kāi)工程所在目錄 在下面創(chuàng)建 User  StdPeriph_Driver  CMSIS 三個(gè)目錄
2. 
STM32F2xx_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\Device\ST\STM32F2xx\Include 目錄下stm32f2xx.h system_stm32f2xx.h 復(fù)制到CMSIS文件夾下
STM32F2xx_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\Include 目錄下 core_cm3.h  core_cmFunc.h  core_cmInstr.h 復(fù)制到CMSIS文件夾下
STM32F2xx_StdPeriph_Lib_V1.1.0\Libraries\STM32F2xx_StdPeriph_Driver\inc 目錄下所有文件復(fù)制到StdPeriph_Driver目錄下
STM32F2xx_StdPeriph_Lib_V1.1.0\Libraries\STM32F2xx_StdPeriph_Driver\src 目錄下所有文件復(fù)制到StdPeriph_Driver目錄下
STM32F2xx_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\Device\ST\STM32F2xx\Source\Templates\gcc_ride7 目錄下startup_stm32f2xx.s 復(fù)制到User目錄
STM32F2xx_StdPeriph_Lib_V1.1.0\Project\STM32F2xx_StdPeriph_Template 目錄stm32f2xx_conf.h  stm32f2xx_it.c  stm32f2xx_it.h  system_stm32f2xx.c 復(fù)制到User目錄
在User目錄下創(chuàng)建main.c 文件 寫(xiě)上main函數(shù)
最后把這些文件都添加到工程里 這里可以用批量添加功能


6. 配置工程的編譯參數(shù)
c/c++ 編譯參數(shù) -g;-O0;-Wall;-mcpu=cortex-m3;-mthumb;-mthumb-interwork;-ffunction-sections;-fdata-sections
匯編編譯參數(shù) -mcpu=cortex-m3;-mthumb;-mthumb-interwork
頭文件包含目錄 .;CMSIS;StdPeriph_Driver;User
宏定義 STM32F2XX;USE_STDPERIPH_DRIVER;HSE_VALUE=8000000   這個(gè)HSE_VALUE=8000000 是我的板子是8m的晶振所以要加上 這些宏定義完全跟mdk一樣 mdk設(shè)置了什么宏抄過(guò)來(lái)就行

鏈接參數(shù)-Wl, -T stm32-gnu.ld;-Wl,--gc-sections;-nostartfiles;-mcpu=cortex-m3;-mthumb;-mthumb-interwork
鏈接庫(kù) g_nano;c_nano  連接的libg_nano.a libc_nano 這兩個(gè)是標(biāo)準(zhǔn)c里面的庫(kù) 如果不用標(biāo)c函數(shù) 可以不添加




-ffunction-sections;-fdata-sections 這兩個(gè)參數(shù)意思是給每一個(gè)函數(shù) 和數(shù)據(jù)  都定義一個(gè)單獨(dú)的段
-Wl,--gc-sections; 表示鏈接時(shí)不鏈接沒(méi)有使用到的段 這樣可以減小編譯體積 注意必須跟-ffunction-sections;-fdata-sections配合使用
-Wl, -T stm32-gnu.ld; 給編譯器指定連接腳本
-nostartfiles 不使用編譯器的啟動(dòng)代碼 因?yàn)槲覀冇衧tartup_stm32f2xx.s啟動(dòng)代碼


因?yàn)閏odelite編譯好后生成的可執(zhí)行文件是elf格式的 我們需要hex格式來(lái)下載到板子是
gcc有提供objdump命令來(lái)進(jìn)行轉(zhuǎn)換
使用格式是:
arm-none-eabi-objcopy -O binary elf文件名 生成的bin文件名  這個(gè)是轉(zhuǎn)換成bin(-O binary)
arm-none-eabi-objcopy -O ihex elf文件名 生成的hex文件名
這兩個(gè)命令我們不需要手動(dòng)敲 可以在codelite工程設(shè)置項(xiàng)里設(shè)置編譯后執(zhí)行的命令里
arm-none-eabi-objcopy  -O binary $(IntermediateDirectory)/$(ProjectName).elf $(IntermediateDirectory)/$(ProjectName).bin
arm-none-eabi-objcopy  -O ihex $(IntermediateDirectory)/$(ProjectName).elf $(IntermediateDirectory)/$(ProjectName).hex






7. 創(chuàng)建鏈接腳本stm32-gnu.ld
1. 在工程目錄下建立 stm32-gnu.ld文件 內(nèi)容如下

/*_estack _sidata _sdata _sbss 這幾個(gè)標(biāo)號(hào)比較重要啟動(dòng)代碼中要用到的*/

_estack = 0x20020000; /*棧頂?shù)刂?/
MEMORY
{undefined
rom (rx): ORIGIN = 0x08000000, LENGTH = 1M /*rom起始地址以及大小*/
ram(rwx): ORIGIN = 0x20000000, LENGTH = 128K /*ram起始地址以及大小*/
}
 
SECTIONS
{undefined
.isr_vector : { /*這個(gè)段是中斷向量表段 必須放在最前面*/
. = ALIGN(4);
KEEP(*(.isr_vector))
. = ALIGN(4);
} > rom

.text : { /*代碼段*/
*(.text*)
*(.rodata*)
} > rom

.ARM.exidx : { /*好像是使用了浮點(diǎn)計(jì)算之類的必須有這個(gè)*/
*(.ARM.exidx*)
*(.gnu.linkonce.armexidx.*)
} > rom
 
_sidata = .; /*data段在rom中存儲(chǔ)位置*/
.data : AT(_sidata) { /*data段 */
_sdata = .; /*data段在ram中的存儲(chǔ)位置  啟動(dòng)代碼要干的活 其中就有把data段從rom中拷貝到ram里去*/
*(vtable)
*(.data*)
_edata = .;
} > ram
 
.bss : { /*bss段*/
_sbss = .;
*(.bss*)
*(COMMON)
_ebss = .;
} > ram
}


2. 把stm32-gnu.ld文件添加到工程虛擬文件夾User下 因?yàn)閯?chuàng)建模板時(shí) 模板只會(huì)包含添加在工程里的文件 所以我們要先添加進(jìn)來(lái)
添加很簡(jiǎn)單右擊工程虛擬文件夾User 選Add an Existing File 然后找到stm32-gnu.ld 添加就可以了


8. 編譯工程
編譯的時(shí)候有報(bào)錯(cuò) stm32f2xx_it.c里有包含main.h頭文件我們沒(méi)有這個(gè)文件 所以把對(duì)這個(gè)文件的包含去掉
還有一個(gè)錯(cuò)誤 undefined reference to `TimingDelay_Decrement' 還是在stm32f2xx_it.c文件里 調(diào)用了TimingDelay_Decrement函數(shù) 我們沒(méi)有實(shí)現(xiàn)這個(gè)函數(shù) 所以刪除這個(gè)調(diào)用
如果不想使用stm32f2xx_it.c stm32f2xx_it.h 這兩個(gè)文件 直接把他們從工程中移除出去就不會(huì)報(bào)錯(cuò)了


9. 設(shè)置一鍵燒寫(xiě)(使用Jflash +jlink)
Jflash 是jlink驅(qū)動(dòng)自帶的工具 只要裝了jlink驅(qū)動(dòng)就有 在jlink的安裝目錄下
我的是D:\Program Files (x86)\SEGGER\JLinkARM_V472a\JFlashARM.exe
1. 首先把你的jlink鏈接到電腦上 然后 打開(kāi)jflash 創(chuàng)建一個(gè)工程
2. 設(shè)置jflash工程用于stm32f205下載 不同的芯片設(shè)置不一樣我的是stm32f205vg
3. 保存jflash工程到我們的工程目錄下 名為down.jflash 并把它添加到工程User虛擬文件夾下
4. 使用codelite插件里的External Tools 來(lái)執(zhí)行jflash下載命令(jflash支持命令行模式)
D:\Program Files (x86)\SEGGER\JLinkARM_V472a\JFlashARM.exe
命令參數(shù)-openprj$(ProjectPath)\down.jflash -open$(ProjectPath)\$(IntermediateDirectory)\$(ProjectName).hex -connect -auto -startapp -exit
-openprj選項(xiàng)指定jflash要打開(kāi)的工程文件后面直接跟文件絕對(duì)路徑 中間沒(méi)有空格
-open 指定打開(kāi)的hex文件
-connect 連接設(shè)備
-auto 自動(dòng)擦除flash 校驗(yàn) 燒寫(xiě)
-startapp  下載完畢后啟動(dòng)程序
-exit 之前的操作執(zhí)行完畢后自動(dòng)退出jflash
這里用到了一些codelite的環(huán)境變量$(ProjectPath) 表示工程所在路徑 $(IntermediateDirectory)輸出中間目錄$(ProjectName)工程名 $(ProjectName).hex輸出文件
如果有問(wèn)題可以不用變量 直接指定文件的絕對(duì)路徑 配置的時(shí)候可以去掉-exit選項(xiàng) 這樣可以看到j(luò)flash是不是正常下載成功了 確定命令工作正常后再加上-exit
配置完畢后就可以一鍵下載了 只要點(diǎn)擊下剛建立的那個(gè)工具項(xiàng) 或者使用快捷鍵  快捷鍵默認(rèn)的是ctrl+shift+ 0 到9  剛好對(duì)應(yīng)0到9個(gè)工具條

JFlash設(shè)置:





codelite設(shè)置



10. 配置遠(yuǎn)程調(diào)試(使用gdb客戶端 和JLinkGDBServer.exe(跟JFlashARM.exe在同一個(gè)目錄))
還是在工程設(shè)置
使用調(diào)試功能JLinkGDBServer.exe需要一直運(yùn)行

JLinkGDBServer設(shè)置



codelite里調(diào)試的配置 在工程設(shè)置里



11. 其它






https://blog.csdn.net/u012750409/article/details/52516653

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多