备案可以不关闭网站吗,wordpress 文章主题图,网站公司缺点,品牌网站建设策划聊天界面发送嵌入式大杂烩获取1TB大杂烩资料包STM32的FLASH擦写次数有限(大概为1万次)#xff0c;所以为了延长FLASH的使用时间#xff0c;我们平时调试时可以选择在SRAM中进行硬件调试。除此之外#xff0c;SRAM 存储器的写入速度比在内部 FLASH 中要快得多#xff0c;所以… 聊天界面发送嵌入式大杂烩获取1TB大杂烩资料包STM32的FLASH擦写次数有限(大概为1万次)所以为了延长FLASH的使用时间我们平时调试时可以选择在SRAM中进行硬件调试。除此之外SRAM 存储器的写入速度比在内部 FLASH 中要快得多所以下载程序到SRAM中的速度较快。所以我们很有必要建立两个版本的工程配置在SRAM中调试程序完毕后再把代码下载到FLASH中即可。这篇笔记主要分享在keil5中配置FLASH调试与SRAM调试的详细配置方法及如何切换两种配置。本篇笔记以STM32F103ZET6为例。其FLASH大小为512KBSRAM的大小为64KB。FLASH基地址为0x08000000SRAM基地址为0x20000000。在STM32F10XXX里可以通过BOOT1、BOOT0引脚来选择三种不同的模式我们要在FLASH中进行硬件仿真调试还是在RAM中进行硬件仿真调试需要对这两个boot脚进行对应的设置以及程序下载的地址进行设置。在FLASH中进行硬件仿真调试1、硬件设置BOOT0配置为0BOOT1随意设置。2、keil设置本文以keil5为例。步骤如下(1)点击如下按钮修改target的名称target的名称是可以随意更改的这里我们改为FLASH。(2)点击Project-Options for Target Flash...(也可以点击魔术棒那个图标)进行配置。首先对Target选项卡设置设置IROM1的起始地址为0x8000000大小为0x80000即FLASH的基地址与大小。设置IRAM1为0x20000000大小为0x10000即SRAM的基地址与大小。(3)Debug选项设置调试器根据实际进行选择我们这里使用的调试器是ULINK2。其它的按默认设置即可然后点击Settings:(4)编译然后按CtrlF5进入调试界面然后点击全速运行在Disassembly窗口中可看到地址为0x0800xxxx说明代码烧进了FLASH中这时候就可以像使用其他C语言IDE调试C语言程序一样打断点、单步运行我们的STM32程序啦。在SRAM中进行硬件仿真调试在SRAM的仿真调试配置比FLASH中的配置要麻烦一点~1、硬件设置BOOT0配置为1BOOT1配置为1。2、keil设置(1)新建一个target并修改名称为SRAM(2)切换至SRAM Target(3)点击Project-Options for Target SRAM ...(也可以点击魔术棒那个图标)Target选项卡设置设置IROM1的起始地址为0x2000000大小为0x8000(32KB)设置IRAM1的起始地址为0x2008000大小为0x8000(32KB)。即把64KB的SRAM分为32KB的FLASH(当然这是SRAM虚拟出来的FLASH掉电易失)和32KB的RAM。(4)C/C选项设置为什么在RAM中调试要设置这个宏而在FLASH中调试却不需要这是因为我们的中断向量表默认位于FLASH中而此时我们要在RAM中进行调试所以需要把中断向量表拷贝到RAM中相关代码在system_stm32f10x.c的SystemInit函数中其实system_stm32f10x.c文件中也有宏VECT_TAB_SRAM相关的代码把这行代码打开即可把中断向量表拷贝到RAM中。但是这里选择在C/C选项选项里添加宏因为这样可以保证SRAM版本与FLASH版本代码的一致性。(5)Debug设置与在FLASH中调试不同的是这里需要加入.ini文件这个.ini可以自己创建(也可以在芯片支持包里找到)这里我们建为Dbg_RAM.ini。文件里的内容如下其中这里的第11行是需要根据实际进行修改的需要把工程编译得出的.axf格式文件的路径及其文件名填到这里。这里因为我们这里的的.ini文件在.axf的上一级目录所以此处以./Objects来表示。如果觉得麻烦的话可以把.axf文件与.ini放在同一个目录下。其它的按默认设置即可然后点击Settings并进行如下设置:图中我们需要勾选Verify Code Download及Download to FLASH选项也就是说点击调试按钮后本工程的程序会被下载到内部 SRAM 中只有勾选了这两个选项才能正常仿真。(至于为什么 FLASH 版本的程序不需要勾选不太清楚) 。Download Function中的擦除选项配置为Do not Erase。这是因为数据写入到内部 SRAM 中不需要像 FLASH 那样先擦除后写入。Programming Algorithm 的地址要与我们Target选项卡里设置的地址一致否则可能会出现如下错误(6)编译然后按CtrlF5进入调试界面然后点击全速运行在Disassembly窗口中可看到地址为0x2000xxxx说明代码烧进了SRAM中这时候就可以像使用其他C语言IDE调试C语言程序一样打断点、单步运行我们的STM32程序啦。以上就是在FLASH中调试与在SRAM中调试的设置方法调试代码时可以选择SRAM版本的配置调试完成再切换回FLASH版本的配置把程序下载到FLASH中。切换方法在RAM中调试的优缺点以下来自《【野火】零死角玩转STM32—F429挑战者V2.pdf》。优点1、载程序非常快。RAM 存储器的写入速度比在内部 FLASH 中要快得多且没有擦除过程因此在 RAM 上调试程序时程序几乎是秒下的对于需要频繁改动代码的调试过程能节约很多时间省去了烦人的擦除与写入 FLASH 过程。另外STM32 的内部 FLASH 可擦除次数为 1 万次虽然一般的调试过程都不会擦除这么多次导致 FLASH 失效但这确实也是一个考虑使用 RAM 的因素。2、不改写内部 FLASH 的原有程序。3、对于内部 FLASH 被锁定的芯片可以把解锁程序下载到 RAM 上进行解锁。缺点1、存储在 RAM 上的程序掉电后会丢失不能像 FLASH 那样保存。2、SRAM空间较小。以上就是本次分享的关于RAM调试与FLASH调试的笔记更多的相关原理、细节可查阅《【野火】零死角玩转STM32—F429挑战者V2.pdf》。可在本公众号聊天界面回复关键字调试进行获取本笔记对应的keil工程及《【野火】零死角玩转STM32—F429挑战者V2.pdf》。本篇笔记如有错误欢迎指出谢谢猜你喜欢STM32的ISP下载的原理是什么呢STM32串口IAP分享C语言代码优化的一些技巧(四)【DSP笔记】TI官方例程中切换RAM、FLASH工程版本的方法我的个人博客https://zhengnianli.github.io等你来撩聊天界面发送嵌入式大杂烩获取1T大杂烩资料包聊天界面发送m获取往期笔记目录