开发板:
本文使用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)是激活的。
|