如何在APP(Stm32f4 HAL)中更改SCB->VTOR? [英] How to change SCB->VTOR in app (stm32f4 HAL)?

查看:20
本文介绍了如何在APP(Stm32f4 HAL)中更改SCB->VTOR?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为STM32F4构建引导加载程序,并使用在system_stm32f4xx.c文件中手动更改scb->VTOR的Vect_TAB_Offset值构建用户应用程序,但如果我在应用程序中这样做的话。它工作不正常。

我在main()的开头调用了SCB->VTOR=0x8040000,但它不起作用。BOOTLOADER USER APPLICATION

推荐答案

启动代码在main()之前调用SystemInit()SystemInit()设置SCB->VTOR值(以及其他内容)。SystemInit()在厂商提供的文件system_stm32f4xx.c中实现。您可以通过编辑VECT_TAB_OFFSET的值来自定义分配给SCB-VTOR的值,system_stm32f4xx.c中也定义了该值。(您的项目文件夹中应该有system_stm32f4xx.c的副本,您可以为您的项目自定义该副本。)

如果您的引导程序和应用程序需要不同的VECT_TAB_OFFSET值,则可以使用如下预处理器语句。(这允许引导程序和应用程序使用system_stm32fxx.c的相同副本。或者,您可以为每个程序使用不同的文件副本。)

#ifdef BOOT
#define VECT_TAB_OFFSET  0x00 /*!< Vector Table base offset field.
                                   This value must be a multiple of 0x200. */
#else
#define VECT_TAB_OFFSET  0x80000
#endif

这篇关于如何在APP(Stm32f4 HAL)中更改SCB->VTOR?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆