STM32 KEIL C如何在RAM中调试FREERTOS?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 KEIL C如何在RAM中调试FREERTOS?相关的知识,希望对你有一定的参考价值。

一段FREERTOS程序,非常简单,就是在创建一个任务循环点亮一LED灯,下载到FLASH中运行正常,下载到RAM中运行没有反应,请问该如何设置才能在RAM中调试FREERTOS?

这需要 加入向量表的定义;

加入这段话
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //向量表位于RAM
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); //向量表位于FLASH
#endif

也可以直接写入;
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //向量表位于RAM

祝你成功!
参考技术A 中断的起始地址改了吗?FLASH中运行正常,下载到RAM中不运行有很大可能性是中断的地址没改。

如何解决使用keil下载或者调试程序是提示的“Invalid ROM Table”信息!

在将Discovery的工程移植到Mini-STM32F4x9BI开发板时,使用ULINK2下载程序可能会出现如下图所示的“Invalid ROM Table”这个错误。

技术分享图片技术分享图片

技术分享图片技术分享图片

可能原因是使用Mini-STM32F4x9BI开发板时(STM32F429BITx)外部晶振为25M,而使用Discovery的工程(STM32F429ZITx),其外部晶振为8M,晶振频率修改错误导致程序超频锁死了。因此除了将Option for Target选项里面的device修改成STM32F429BITx和做一些必要的其它修改,若程序第一次下载后导致芯片不能继续下载,该错误解决办法:  

1.先断电,把Discovery工程将stm32f4xx.h和system_stm32f4xx.c的晶振频率进行了修改,如下所示:

stm32f4xx.h:

技术分享图片

 

system_stm32f4xx.c:

技术分享图片技术分享图片

 

2.把BOOT0置1,BOOT1置0,keil配置修改一下:进入Debug--Settings--Flash Download页面,把Program、Verify、Reset and Run前面的勾干掉,然后按复位键,再点击下载,下载程序进行芯片的擦除。恢复BOOT0接地。再把刚才修改过的Debug配置改回来,就可以正常使用了。目的就是一开始让芯片进入bootloader程序,此时就可以进行下载程序了。如果没有复位按键,那么就可以先将BOOT0接入高电平(默认BOOT0,BOOT1一般是通过电阻接低电平的,所以此时只需将BOOT0引出接入高电平),然后上电(相当于复位了),最后点击下载,当程序正在下载时就可以不接高电平了。

 

来源

 

以上是关于STM32 KEIL C如何在RAM中调试FREERTOS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中的 STM32 QEMU 调试器 eclipse 上从 RAM 内存执行函数?

keil中 如何向指定地址写入数据

我看ram还有10k,为啥keil提示stm32内存空间不足

Keil/MDK:查看STM32的RAM和ROM使用情况

stm32 keil 中 irom1 irom2 怎么设置

STM32中的下载与调试?