找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10665|回復(fù): 3
收起左側(cè)

CoIDE建立STM32F103ZET6工程

[復(fù)制鏈接]
ID:82083 發(fā)表于 2015-6-9 00:09 | 顯示全部樓層 |閱讀模式
開(kāi)發(fā)板:
本文使用ALIENTEK出品的warship開(kāi)發(fā)板,該開(kāi)發(fā)板使用stm32f103zet6主控MCU。請(qǐng)使用USB線連接PC供電,并通過(guò)JTAG插座連接JLINK或者ULINK仿真器。


環(huán)境安裝:
1)  JLINKV8/V9, 對(duì)應(yīng)windows驅(qū)動(dòng)包為4.90. 或者使用STLINKV2(可安裝官方驅(qū)動(dòng))。
2)  Coocox 出品的開(kāi)發(fā)工具CoIDE_V2Beta和Flash燒錄工具CoFlash(1.4.9.0)。
3)  下載GNUARM編譯工具鏈“gcc-arm-none-eabi-4_8-2014q2-20140609-win32”,或者codesourcery的編譯工具鏈(2011.03-42)。

工程創(chuàng)建:
參考工程打包文件:工程創(chuàng)建:
參考工程打包文件:stm32f429Demo.zipstm32f429Demo.zip,請(qǐng)從如下地址下載:
http://pan.baidu.com/s/1o6ywAQA#path=/CooCox?

1)  打開(kāi)CoIDE,指定編譯工具鏈(任何一個(gè))。





2)  為STM32F103ZET6創(chuàng)建工程。

首先需要在Repository選項(xiàng)卡中選擇目標(biāo)MCU,這里是stm32f103zet6。



找到目標(biāo)MCU選中,然后在彈出菜單中選擇“newproject”。



然后為當(dāng)前工程命名,點(diǎn)擊“finish”結(jié)束。





3)  為工程添加鏈接庫(kù)支持。
在“repository”選項(xiàng)卡中依次添加“C_library”(標(biāo)準(zhǔn)C庫(kù)),“cmsis_core”(DSP庫(kù))以及“STM32F10x_HD_STDLIB”(MCU外設(shè)庫(kù))。當(dāng)然,如果不需要DSP庫(kù),可以不選。




完成后,可以看到工程選項(xiàng)卡中,已經(jīng)出現(xiàn)了這三個(gè)庫(kù)。



4)  在main.c中,基于外設(shè)庫(kù)改寫main函數(shù)。

#include

//定義GPIO結(jié)構(gòu)體
GPIO_InitTypeDefGPIO_InitStructure;

int main(void)
{
   //使能GPIO時(shí)鐘
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

   //GPIO結(jié)構(gòu)體配置
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

   //GPIO初始化
   GPIO_Init(GPIOB, &GPIO_InitStructure);

   //點(diǎn)亮小燈
   GPIO_SetBits(GPIOB, GPIO_Pin_5);

   //無(wú)限循環(huán)
   while(1)
   {
   }
}
5)  編譯工程。


?完成編譯后,在“console”窗口,可以看到成功的提示。


編譯生成的可下載鏡像為”stm32f103zet6Demo.elf”。
6)  開(kāi)始調(diào)試。
經(jīng)本人實(shí)驗(yàn),JLINKV8/V9和ULINKV2都可以進(jìn)行調(diào)試。但是只有ULINKV2可以進(jìn)行獨(dú)立的燒寫。
要進(jìn)行在線調(diào)試和燒錄,必須進(jìn)行相關(guān)配置-在configuration選項(xiàng)卡中。1)  開(kāi)始調(diào)試。
經(jīng)本人實(shí)驗(yàn),JLINKV8/V9和ULINKV2都可以進(jìn)行調(diào)試。但是只有ULINKV2可以進(jìn)行獨(dú)立的燒寫。
要進(jìn)行在線調(diào)試和燒錄,必須進(jìn)行相關(guān)配置-在configuration選項(xiàng)卡中。
對(duì)于硬件調(diào)試工具的設(shè)置,主要是在“Debugger”子項(xiàng)中進(jìn)行配置。默認(rèn)為ST-LINK,如下圖所示。



對(duì)于Port選擇框,根據(jù)實(shí)際情況選擇是”SWD”還是”JTAG”硬件接口。對(duì)于warship目標(biāo)板來(lái)說(shuō),應(yīng)該選JTAG接口。
當(dāng)然,鑒于目前使用的JLINK仿真器,應(yīng)該進(jìn)行修改。修改后如下圖所示。
這里需要注意的是,“GDBServer cmdlinetool”選擇框中,應(yīng)該指向當(dāng)前系統(tǒng)中JLINK驅(qū)動(dòng)工具包安裝目錄下的“JLinkGDBServerCL.exe”。


?


上邊的設(shè)置完成后,就可以開(kāi)始調(diào)試-點(diǎn)擊”startDebug”按鈕(快捷快為ctl+f5)。



程序進(jìn)入main函數(shù)后,會(huì)自動(dòng)停在第一個(gè)有效語(yǔ)句處。



接下來(lái),就可以進(jìn)行單步或者其他方法調(diào)試了。當(dāng)然,右側(cè)的”peripherial”窗口可以觀察MCU寄存器的當(dāng)前值。而”debug”窗口中,也顯示了當(dāng)前的調(diào)用棧。讀者也可以用”Variable”窗口觀察局部變量取值。

7)  固件下載。
目前CoIDE中,只支持通過(guò)STLINKV2直接進(jìn)行flash擦寫和燒錄。而對(duì)于JLINKV8/V9,就只能通過(guò)”debug”方式間接完成燒錄了。
在STLINKV2連接的情況下,以下兩個(gè)按鈕(download和erase)是激活的。





回復(fù)

使用道具 舉報(bào)

ID:206748 發(fā)表于 2017-6-1 16:07 | 顯示全部樓層
ULINKV2  用這個(gè) 編譯器    里面沒(méi)有相應(yīng)的型號(hào)? 你是選的哪個(gè)?
回復(fù)

使用道具 舉報(bào)

ID:247659 發(fā)表于 2017-11-10 21:32 | 顯示全部樓層
startup_stm32f10x_hd_vl.s 這個(gè)文件怎么感覺(jué)是將程序 COPY
回復(fù)

使用道具 舉報(bào)

ID:247659 發(fā)表于 2017-11-10 21:36 | 顯示全部樓層
startup_stm32f10x_hd_vl.s這個(gè)程序感覺(jué)是將程序源碼COPY到RAM中去執(zhí)行。我在單步調(diào)試中遇到很奇怪的問(wèn)題,在完全不該死機(jī)的地方死機(jī),僅僅是初始化程序中自編函數(shù)。其它的無(wú)法解釋,我的程序已經(jīng)50多K,如果COPY到RAM中,stm32f103rct的片子也就64KRAM.加上我定義的大量數(shù)組結(jié)構(gòu),根本不夠用。不知我理解的對(duì)不對(duì),請(qǐng)問(wèn)這個(gè).S函數(shù)有沒(méi)有其它選擇?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表