软件调试............................................................................................................................1硬件调试............................................................................................................................2FLASH调试(0x08000000)..............................................................................................3SRAM调试(0x20000000)..........................................................................................----OptionforTarget‘STM32_template’(修改工程的Option属性)Target选项C/C++选项Debug选项(软件调试)2硬件调试本文以STM32F103RC芯片为例,根据STM32F103RCDatasheet可知芯片的片内FLASH基址为0x08000000,大小为256K(0x40000);片内RAM基址为0x20000000,大小为48K(0xc000)。芯片启动模式如下:芯片的启动模式需要根据你程序下载的具体地址进行正确设置这里主要介绍两种硬件调试方法FLASH调试(程序下载到FLASH中,0x08000000)SRAM调试(程序下载到SRAM中,0x20000000)FLASH调试(0x08000000)用JLink连接好电脑跟实验箱,实验箱BOOT0接0(短路帽接上面两个引脚)�FLASH调试的参数设置1)单击菜单Project----OptionforTarget‘STM32_template’(修改工程的Option属性)前面的选项跟软件调试设置一样,对下列选项进行配置:Debug选项,选择调试工具选择“Settings”,见下图进入“CortexJLink/JTraceTargetDriverSetup”Debug选项(默认)Trace选项(默认)FlashDownload选项配置如下,点击“Add”选好之后,点击“Add”返回点击“OK”返回。Utilities选项�---->rebuildtargetfiles�--->StartDebug整个调试界面图,在调试窗口中可看到汇编代码的地址为0x0800开头,说明代码烧进到了FLASH中:点击全速运行,观察实验结果,调试完成。SRAM调试(0x20000000)用JLink连接好电脑跟实验箱,实验箱BOOT0接1(短路帽接下面两个引脚)PB2/BOOT1接+5V(1)STM32的中断向量表默认存放在0x08000000,如果使用SRAM调试,需要对中断向量表进行重映射到0x20000000,否则中断服务函数进入不了。(如果你整个程序都没有用中断则不需要)将下面这段程序加在main()函数开头。#ifdefVECT_TAB_RAM/*SettheVectorTablebaselocationat0x20000000*/NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//向量表位于RAM#else/*VECT_TAB_FLASH*//*SettheVectorTablebaselocationat0x08000000*/NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//向量表位于FLASH#endif(2)打开一个工程,选择Flash菜单下的ConfigureFlashTools,打开选项对话框。如上图所示,在target选项中修改IROM1的Start值为:0x20000000,Size:0x8000(32K);IRAM1的Start值为0x20008000,Size:0x4000(16K)。即把48K的内存分为32K的FLASH和16K的RAM。(3)C/C++选项,添加宏VECT_TAB_RAM(4)在Debug选项中仿真器选择Cortex-M3J-LINK,(D:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB
STM32调试方法 来自淘豆网m.daumloan.com转载请标明出处.