小编mba*_*rds的帖子

当我跳转到应用程序时中断不起作用(STM32)

更新:也许更好的问题是我应该如何调试这个问题?我正在使用 VS Code 和 OpenOCD 调试器。我总是清理构建。一旦我 JumpToApplication() ,我能做的最好的事情就是查看当我暂停/单步进入时调试器停止的地址。

我能够将程序闪存到分区 A (@address 0x8060000) 并通过 CRC 检查来验证它。该程序在 while 循环中运行任何内容(LED3 切换、UART);然而,基于定时器中断的 LED2 切换不起作用。当我正常刷新程序时(即不使用引导加载程序),它可以 100% 工作,包括 LED2 切换。

以下提到的一些资源(1、2、3、AN2606 )如何让中断适用于我的第二个应用程序?资源建议我清除挂起的中断,但我不知道解决该问题的最佳方法。在我的引导加载程序应用程序中,我使用 ETH、UART 和 GPIO 外设,因此我将阅读手册并读取寄存器以清除中断标志,但是其他中断(如 NMI、HardFault)怎么样,我是否必须弄清楚如何清除这些中断?出色地?通过我的谷歌搜索,我没有找到任何方便的函数来清除所有挂起的中断,它是否存在?

下面我在 0x8000000 处包含了引导加载程序应用程序的跳转函数/链接器文件,以及在 0x8060000 处的应用程序的 main.c/链接器文件:

引导加载程序中 0x8000000 处的跳转函数

void ApplicationManager::RunActivePartition()
{     
    JumpToApplication = (void (*)(void)) (*((uint32_t *) (active_partition.address + 4)));

    /* Set vector table offset register */
    SetVectorTable(MemoryInfo::BTLR_ADDRESS, MemoryInfo::PARTITION_A_OFFSET_FROM_BTLR);

    /* STM32 needs the stack pointer to start at the beginning of …
Run Code Online (Sandbox Code Playgroud)

c++ stm32 stm32f4

4
推荐指数
1
解决办法
5867
查看次数

标签 统计

c++ ×1

stm32 ×1

stm32f4 ×1