systick handler keep pending on stm32h7 board.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-05 04:26 PM
I made a project with stm32h7 board, and use pemicro multlink to debug it under keil. I found it keep in systick handler pending but no active.
I checked systick module register as:
the counter is changed.
and then I checked SCB releate registers as
and the interrupt handler addr is as
matched with vector config as:
I don't know where is wrong ?
Solved! Go to Solution.
- Labels:
-
SysTick
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-05 06:13 PM
Only so many reasons why an interrupt is not happening. Go down the list and verify them all:
- Interrupts need to be enabled globally (they are by default, use __enable_irq()).
- SysTick interrupt needs to be enabled (in SysTick->CTRL)
- Execution cannot be in an equal or higher priority interrupt (print out SCB registers).
Viewing values in a register viewer (e.g. the SFR window in STM32CubeIDE) will be easier to navigate than viewing raw memory and translating.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-05 06:13 PM
Only so many reasons why an interrupt is not happening. Go down the list and verify them all:
- Interrupts need to be enabled globally (they are by default, use __enable_irq()).
- SysTick interrupt needs to be enabled (in SysTick->CTRL)
- Execution cannot be in an equal or higher priority interrupt (print out SCB registers).
Viewing values in a register viewer (e.g. the SFR window in STM32CubeIDE) will be easier to navigate than viewing raw memory and translating.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-05 10:17 PM
1. I have checked SysTick->CTRL = 0X7 so SysTick interrupt has beed enabled.
2. Execution cannot be in an equal or higher priority interrupt (print out SCB registers) I wonder which register do you mean ? and I have print these registers in the picture below.
3. Interrupts need to be enabled globally (they are by default, use __enable_irq()) I will check this later with PRIMASK , FAULTMASK, BASEPRI..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-06 05:40 AM
> 2. Execution cannot be in an equal or higher priority interrupt (print out SCB registers) I wonder which register do you mean ? and I have print these registers in the picture below.
Mainly SCB->ICSR, which contains VECTACTIVE. Should also get this information by looking at the call stack.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-09-06 08:18 PM
I'm sorry replay so late, later I found the reason is that I disabled irq before with.
CPSID I
