This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 62d7b3beeb arm-v7m systick:call irq_attach_thread.
62d7b3beeb is described below

commit 62d7b3beebbeaa3570dc9d7d87662bd611ca69ec
Author: yangguangcai <[email protected]>
AuthorDate: Tue May 21 10:52:19 2024 +0800

    arm-v7m systick:call irq_attach_thread.
    
    Signed-off-by: yangguangcai <[email protected]>
---
 arch/arm/src/armv7-m/Kconfig       | 18 ++++++++++++++++++
 arch/arm/src/armv7-m/arm_systick.c |  7 +++++++
 2 files changed, 25 insertions(+)

diff --git a/arch/arm/src/armv7-m/Kconfig b/arch/arm/src/armv7-m/Kconfig
index 5e96e1e5b3..97022b294f 100644
--- a/arch/arm/src/armv7-m/Kconfig
+++ b/arch/arm/src/armv7-m/Kconfig
@@ -153,3 +153,21 @@ config ARMV7M_SYSTICK
        depends on TIMER
        ---help---
                Enable SysTick timer driver.
+
+config ARMV7M_SYSTICK_IRQ_THREAD
+       bool "attach irq by irq_attach_thread"
+       default n
+       depends on ARMV7M_SYSTICK
+
+if ARMV7M_SYSTICK_IRQ_THREAD
+
+config ARMV7M_SYSTICK_IRQ_THREAD_PRIORITY
+       int "SYSTICK IRQ THREAD PRIORITY"
+       default 255
+       range 0 255
+
+config ARMV7M_SYSTICK_IRQ_THREAD_STACK_SIZE
+       int "SYSTICK IRQ THREAD STACK SIZE"
+       default DEFAULT_TASK_STACKSIZE
+
+endif # ARMV7M_SYSTICK_IRQ_THREAD
diff --git a/arch/arm/src/armv7-m/arm_systick.c 
b/arch/arm/src/armv7-m/arm_systick.c
index b7c706ba57..2b2f466de2 100644
--- a/arch/arm/src/armv7-m/arm_systick.c
+++ b/arch/arm/src/armv7-m/arm_systick.c
@@ -294,7 +294,14 @@ struct timer_lowerhalf_s *systick_initialize(bool coreclk,
       putreg32(NVIC_SYSTICK_CTRL_TICKINT, NVIC_SYSTICK_CTRL);
     }
 
+#ifdef CONFIG_ARMV7M_SYSTICK_IRQ_THREAD
+  irq_attach_thread(NVIC_IRQ_SYSTICK, NULL,
+                    systick_interrupt, lower,
+                    CONFIG_ARMV7M_SYSTICK_IRQ_THREAD_PRIORITY,
+                    CONFIG_ARMV7M_SYSTICK_IRQ_THREAD_STACK_SIZE);
+#else
   irq_attach(NVIC_IRQ_SYSTICK, systick_interrupt, lower);
+#endif
   up_enable_irq(NVIC_IRQ_SYSTICK);
 
   /* Register the timer driver if need */

Reply via email to