完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
内容描述:Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。
注:本文章只适用于在线仿真形式,需要使用能够进行在线仿真的调试器(Jlink,Stlink),串口方式不能进行仿真。 RAM模式下调试程序优点:1.调试效率高,能够设置断点,及进行单步调试等。2.程序无需写入芯片FLASH,延长芯片使用寿命,(之前看到过别的文章提到因为调试程序,FLASH频刷会导致芯片出现一些诡异问题)。 适用范围:Cortex-M系列内核芯片,本文章只展示STM32系列单片机的具体操作,其他单片机请参考相应步骤进行差异性操作。 文章作用:1.解决程序不能够在线仿真。2.在线仿真情况下,STM32不能进入中断程序,导致中断不响应。 RAM调试配置流程(开发软件设置) 第一步:修改内存地址 打开目标配置:Project -> Options for Target -> Target或“工程目标配置”点击快捷按钮。 将ROM和RAM地址映射到如下图地址。 我们使用STM32F103ZE芯片,该芯片的RAM大小为0x10000即64KB,我们这里平分RAM,即各自的大小为0x5000。 注意:配置的地址范围不能超过芯片实际的大小,芯片RAM大小请查阅芯片手册获取。 第二步:配置向量表 同上,打开目标配置:Project -> Options for Target -> C/C++,使用宏定义VECT_TAB_SRAM。如下图: 这里的宏定义是为了让向量表指向RAM(我们默认是指向ROM),重要的一个目的就是让中断向量表指向RAM,上面“代码功能”中断的意义就是为了验证向量表的正确性。 注意:这里的宏定义是在工具链中配置的,多个宏定义之间需要有“逗号”隔离开来(英文状态)。 其实这里的宏定义配置也可以在源代码中实现,打开system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定义,如下图: 第三步:调试配置 同上:Project -> Options for Target -> Debug, 这里是关于调试的配置。 1.去掉“Load Application at Startup”前面的勾选项 2.导入RAM初始化文件(为避免其他问题,RAM.ini文件最好放在工程文件夹下)。 3.parameter等参数设置。 第四步:调试不更新目标程序 同上:Project -> Options for Target -> Utilities,不勾选“更新”。意思就是在线调试时,不更新芯片(下载FLASH)程序。 启动模式设置(硬件设置) 以上两个设置缺一不可,至此,STM32内部RAM在线调试配置方法就完成了,连接开发板就可以使用RAM在线调试代码了。 补充:关于RAM调试模式下不能进入外部中断的解决方法,还可以通过另外一种方式实现,可依据各自习惯选择! 在时钟设置语句中或在main.c初始化语句中加入: NVIC_SetVectorTable(0x20000000,0x0); 原理是让中断向量表映射到SRAM中。 |
|
|
|
只有小组成员才能发言,加入小组>>
3280 浏览 9 评论
2958 浏览 16 评论
3460 浏览 1 评论
9004 浏览 16 评论
4052 浏览 18 评论
1115浏览 3评论
573浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
571浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2303浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1860浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 16:17 , Processed in 1.111735 second(s), Total 50, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号