cancel
Showing results for 
Search instead for 
Did you mean: 

Systick is not triggered and Interrupt handling problem in STM32WB55 series

baydı.1
Associate III

Hello, 

        I am trying to built an applicaiton on STM32WB55 MCUs that contains interrupts and many digital signals. My code working very fine on development board and I am trying to implement this code on custom STM32WB55 PCB. The Problem is vector table addresing which issued in many topics. However, I couldn't find a satisfiying answer for this problem . The vector table addresses are defining in "system_stm32wbxx.c" file with following code. 

// #define USER_VECT_TAB_ADDRESS
#if defined(USER_VECT_TAB_ADDRESS)
/*!< Uncomment this line for user vector table remap in Sram else user remap
will be done in Flash. */
#define VECT_TAB_SRAM
#if defined(VECT_TAB_SRAM)
#define VECT_TAB_BASE_ADDRESS SRAM1_BASE /*!< Vector Table base address field.
This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.
This value must be a multiple of 0x200. */
#else
#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field.
This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.
This value must be a multiple of 0x200. */
#endif /* VECT_TAB_SRAM */
#endif /* USER_VECT_TAB_ADDRESS */

This code is running on development board without any issue. Indeed, I am using same package of MCU in pcb. However, when I upload this configuration to my pcb, systick timer and interrupts are not working properly. When I define the vector table adress to SRAM1_BASE by uncommenting USER_VECT_TAB_ADDRES, then it is works. Now, I am encountering same problem when I try to work on Bluetooth LE. I don't know problem is related to this issue, but I have to figure it out why same code not properly running on same package MCUs. 

4 REPLIES 4
Issamos
Lead II

Hello @baydı.1 

I suggest you to debug your code to find the difference between the two configurations.

Best regards.

II

TDK
Guru

Is your vector table in SRAM? Probably it is in flash, and you should comment out #define VECT_TAB_SRAM.

If you feel a post has answered your question, please click "Accept as Solution".

do you mean this ?

/**

* @}

*/

 

/** @addtogroup STM32F2xx_System_Private_Defines

* @{

*/

/************************* Miscellaneous Configuration ************************/

/*!< Uncomment the following line if you need to use external SRAM mounted

on STM322xG_EVAL board as data memory */

/* #define DATA_IN_ExtSRAM */

 

/* Note: Following vector table addresses must be defined in line with linker

configuration. */

/*!< Uncomment the following line if you need to relocate the vector table

anywhere in Flash or Sram, else the vector table is kept at the automatic

remap of boot address selected */

/* #define USER_VECT_TAB_ADDRESS */

 

#if defined(USER_VECT_TAB_ADDRESS)

/*!< Uncomment the following line if you need to relocate your vector Table

in Sram else user remap will be done in Flash. */

/*#define VECT_TAB_SRAM*/

#if defined(VECT_TAB_SRAM)

#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field.

This value must be a multiple of 0x200. */

#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.

This value must be a multiple of 0x200. */

#else

#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field.

This value must be a multiple of 0x200. */

#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.

This value must be a multiple of 0x200. */

#endif /* VECT_TAB_SRAM */

#endif /* USER_VECT_TAB_ADDRESS */

 

/******************************************************************************/

 

TDK
Guru

Now uncomment "#define USER_VECT_TAB_ADDRESS". That should set the vector interrupt table to the beginning of flash.

If you feel a post has answered your question, please click "Accept as Solution".