找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9857|回复: 3
打印 上一主题 下一主题
收起左侧

CoIDE建立STM32F103ZET6工程

[复制链接]
跳转到指定楼层
楼主
ID:82083 发表于 2015-6-9 00:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开发板:
本文使用ALIENTEK出品的warship开发板,该开发板使用stm32f103zet6主控MCU。请使用USB线连接PC供电,并通过JTAG插座连接JLINK或者ULINK仿真器。


环境安装:
1)  JLINKV8/V9, 对应windows驱动包为4.90. 或者使用STLINKV2(可安装官方驱动)。
2)  Coocox 出品的开发工具CoIDE_V2Beta和Flash烧录工具CoFlash(1.4.9.0)。
3)  下载GNUARM编译工具链“gcc-arm-none-eabi-4_8-2014q2-20140609-win32”,或者codesourcery的编译工具链(2011.03-42)。

工程创建:
参考工程打包文件:工程创建:
参考工程打包文件:stm32f429Demo.zipstm32f429Demo.zip,请从如下地址下载:
http://pan.baidu.com/s/1o6ywAQA#path=/CooCox?

1)  打开CoIDE,指定编译工具链(任何一个)。





2)  为STM32F103ZET6创建工程。

首先需要在Repository选项卡中选择目标MCU,这里是stm32f103zet6。



找到目标MCU选中,然后在弹出菜单中选择“newproject”。



然后为当前工程命名,点击“finish”结束。





3)  为工程添加链接库支持。
在“repository”选项卡中依次添加“C_library”(标准C库),“cmsis_core”(DSP库)以及“STM32F10x_HD_STDLIB”(MCU外设库)。当然,如果不需要DSP库,可以不选。




完成后,可以看到工程选项卡中,已经出现了这三个库。



4)  在main.c中,基于外设库改写main函数。

#include

//定义GPIO结构体
GPIO_InitTypeDefGPIO_InitStructure;

int main(void)
{
   //使能GPIO时钟
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

   //GPIO结构体配置
   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);

   //点亮小灯
   GPIO_SetBits(GPIOB, GPIO_Pin_5);

   //无限循环
   while(1)
   {
   }
}
5)  编译工程。


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


编译生成的可下载镜像为”stm32f103zet6Demo.elf”。
6)  开始调试。
经本人实验,JLINKV8/V9和ULINKV2都可以进行调试。但是只有ULINKV2可以进行独立的烧写。
要进行在线调试和烧录,必须进行相关配置-在configuration选项卡中。1)  开始调试。
经本人实验,JLINKV8/V9和ULINKV2都可以进行调试。但是只有ULINKV2可以进行独立的烧写。
要进行在线调试和烧录,必须进行相关配置-在configuration选项卡中。
对于硬件调试工具的设置,主要是在“Debugger”子项中进行配置。默认为ST-LINK,如下图所示。



对于Port选择框,根据实际情况选择是”SWD”还是”JTAG”硬件接口。对于warship目标板来说,应该选JTAG接口。
当然,鉴于目前使用的JLINK仿真器,应该进行修改。修改后如下图所示。
这里需要注意的是,“GDBServer cmdlinetool”选择框中,应该指向当前系统中JLINK驱动工具包安装目录下的“JLinkGDBServerCL.exe”。


?


上边的设置完成后,就可以开始调试-点击”startDebug”按钮(快捷快为ctl+f5)。



程序进入main函数后,会自动停在第一个有效语句处。



接下来,就可以进行单步或者其他方法调试了。当然,右侧的”peripherial”窗口可以观察MCU寄存器的当前值。而”debug”窗口中,也显示了当前的调用栈。读者也可以用”Variable”窗口观察局部变量取值。

7)  固件下载。
目前CoIDE中,只支持通过STLINKV2直接进行flash擦写和烧录。而对于JLINKV8/V9,就只能通过”debug”方式间接完成烧录了。
在STLINKV2连接的情况下,以下两个按钮(download和erase)是激活的。





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:206748 发表于 2017-6-1 16:07 | 只看该作者
ULINKV2  用这个 编译器    里面没有相应的型号? 你是选的哪个?
回复

使用道具 举报

板凳
ID:247659 发表于 2017-11-10 21:32 | 只看该作者
startup_stm32f10x_hd_vl.s 这个文件怎么感觉是将程序 COPY
回复

使用道具 举报

地板
ID:247659 发表于 2017-11-10 21:36 | 只看该作者
startup_stm32f10x_hd_vl.s这个程序感觉是将程序源码COPY到RAM中去执行。我在单步调试中遇到很奇怪的问题,在完全不该死机的地方死机,仅仅是初始化程序中自编函数。其它的无法解释,我的程序已经50多K,如果COPY到RAM中,stm32f103rct的片子也就64KRAM.加上我定义的大量数组结构,根本不够用。不知我理解的对不对,请问这个.S函数有没有其它选择?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表