Skip to content

Commit 9c6a068

Browse files
authored
Merge pull request #4324 from monkiineko/master
STM32F3: Remove dependence upon a specific flash vector table location
2 parents ddc015f + 2f73d3b commit 9c6a068

File tree

5 files changed

+5
-10
lines changed

5 files changed

+5
-10
lines changed

targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F302x8/device/cmsis_nvic.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
#include "cmsis_nvic.h"
3232

3333
#define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Vectors positioned at start of RAM
34-
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000) // Initial vector position in flash
3534

3635
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
3736
uint32_t *vectors = (uint32_t *)SCB->VTOR;
3837
uint32_t i;
3938

4039
// Copy and switch to dynamic vectors if the first time called
41-
if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
40+
if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
4241
uint32_t *old_vectors = vectors;
4342
vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
4443
for (i=0; i<NVIC_NUM_VECTORS; i++) {

targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F303x8/device/cmsis_nvic.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
#include "cmsis_nvic.h"
3232

3333
#define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Vectors positioned at start of RAM
34-
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000) // Initial vector position in flash
3534

3635
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
3736
uint32_t *vectors = (uint32_t *)SCB->VTOR;
3837
uint32_t i;
3938

4039
// Copy and switch to dynamic vectors if the first time called
41-
if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
40+
if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
4241
uint32_t *old_vectors = vectors;
4342
vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
4443
for (i=0; i<NVIC_NUM_VECTORS; i++) {

targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F303xC/device/cmsis_nvic.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
#include "cmsis_nvic.h"
3232

3333
#define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Vectors positioned at start of RAM
34-
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000) // Initial vector position in flash
3534

3635
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
3736
uint32_t *vectors = (uint32_t *)SCB->VTOR;
3837
uint32_t i;
3938

4039
// Copy and switch to dynamic vectors if the first time called
41-
if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
40+
if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
4241
uint32_t *old_vectors = vectors;
4342
vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
4443
for (i=0; i<NVIC_NUM_VECTORS; i++) {

targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F303xE/device/cmsis_nvic.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
#include "cmsis_nvic.h"
3232

3333
#define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Vectors positioned at start of RAM
34-
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000) // Initial vector position in flash
3534

3635
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
3736
uint32_t *vectors = (uint32_t *)SCB->VTOR;
3837
uint32_t i;
3938

4039
// Copy and switch to dynamic vectors if the first time called
41-
if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
40+
if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
4241
uint32_t *old_vectors = vectors;
4342
vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
4443
for (i=0; i<NVIC_NUM_VECTORS; i++) {

targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F334x8/device/cmsis_nvic.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
#include "cmsis_nvic.h"
3232

3333
#define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Vectors positioned at start of RAM
34-
#define NVIC_FLASH_VECTOR_ADDRESS (0x08000000) // Initial vector position in flash
3534

3635
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
3736
uint32_t *vectors = (uint32_t *)SCB->VTOR;
3837
uint32_t i;
3938

4039
// Copy and switch to dynamic vectors if the first time called
41-
if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
40+
if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
4241
uint32_t *old_vectors = vectors;
4342
vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
4443
for (i=0; i<NVIC_NUM_VECTORS; i++) {

0 commit comments

Comments
 (0)