STM32L452RET6P 中面临中断问题

问题描述 投票:0回答:1

从一个应用程序跳转到另一个应用程序时,中断无法按预期工作。我使用STM32L452RET6P微控制器并进行裸机编程

我遇到了 STM32L452RET6P 中断的一些问题。我在控制器中运行两个代码,一个是自定义引导加载程序代码,另一个是存储在闪存中的应用程序代码。当设备重置时,它将运行位于 0x08000000 的自定义引导加载程序应用程序。它在中断中分别使用 TIMER6 和 UART2,优先级为 1 和 2。根据流程,如果在定义的时间内没有触发 uart 中断,设备将跳转到位于不同闪存位置的应用程序代码。这对我来说效果很好,并且应用程序代码也开始运行,

但是中断没有触发,我在应用程序代码中分别使用优先级为1、2、3和4的RTC唤醒、UART2、TIMER6和EXTI中断,我的代码卡在while(1)中。问题仅与中断有关,我检查了 LED 闪烁代码,它工作正常。

这个问题的原因可能是什么?

embedded microcontroller
1个回答
0
投票

如何跳转到应用程序?

您必须(至少)禁用 NVIC,将向量表重新定位到应用程序向量表,然后将 SP 和 PC 设置为应用程序向量表中的值。

为了保证应用程序启动时所有外设都处于预期的复位状态,最安全的做法是在启动应用程序之前让引导加载程序通过 NVIC 发出复位信号。由于 SRAM 在重置期间保持不变,因此您可以在 SRAM 的保留区域中设置一个模式,以指示引导加载程序应直接跳转到应用程序,而不执行任何外设初始化。

© www.soinside.com 2019 - 2024. All rights reserved.