| #ifndef _JTEST_SYSTICK_H_ |
| #define _JTEST_SYSTICK_H_ |
| |
| /*--------------------------------------------------------------------------------*/ |
| /* Includes */ |
| /*--------------------------------------------------------------------------------*/ |
| |
| /* Get access to the SysTick structure. */ |
| #if defined ARMCM0 |
| #include "ARMCM0.h" |
| #elif defined ARMCM0P |
| #include "ARMCM0plus.h" |
| #elif defined ARMCM0P_MPU |
| #include "ARMCM0plus_MPU.h" |
| #elif defined ARMCM3 |
| #include "ARMCM3.h" |
| #elif defined ARMCM4 |
| #include "ARMCM4.h" |
| #elif defined ARMCM4_FP |
| #include "ARMCM4_FP.h" |
| #elif defined ARMCM7 |
| #include "ARMCM7.h" |
| #elif defined ARMCM7_SP |
| #include "ARMCM7_SP.h" |
| #elif defined ARMCM7_DP |
| #include "ARMCM7_DP.h" |
| #elif defined ARMSC000 |
| #include "ARMSC000.h" |
| #elif defined ARMSC300 |
| #include "ARMSC300.h" |
| #elif defined ARMv8MBL |
| #include "ARMv8MBL.h" |
| #elif defined ARMv8MML |
| #include "ARMv8MML.h" |
| #elif defined ARMv8MML_DSP |
| #include "ARMv8MML_DSP.h" |
| #elif defined ARMv8MML_SP |
| #include "ARMv8MML_SP.h" |
| #elif defined ARMv8MML_DSP_SP |
| #include "ARMv8MML_DSP_SP.h" |
| #elif defined ARMv8MML_DP |
| #include "ARMv8MML_DP.h" |
| #elif defined ARMv8MML_DSP_DP |
| #include "ARMv8MML_DSP_DP.h" |
| #elif defined ARMv7A |
| /* TODO */ |
| #else |
| #warning "no appropriate header file found!" |
| #endif |
| |
| /*--------------------------------------------------------------------------------*/ |
| /* Macros and Defines */ |
| /*--------------------------------------------------------------------------------*/ |
| |
| /** |
| * Initial value for the SysTick module. |
| * |
| * This is also the maximum value, important as SysTick is a decrementing counter. |
| */ |
| #define JTEST_SYSTICK_INITIAL_VALUE 0xFFFFFF |
| |
| /** |
| * Reset the SysTick, decrementing timer to it's maximum value and disable it. |
| * |
| * This macro should leave the SysTick timer in a state that's ready for cycle |
| * counting. |
| */ |
| #define JTEST_SYSTICK_RESET(systick_ptr) \ |
| do \ |
| { \ |
| (systick_ptr)->CTRL = SysTick_CTRL_CLKSOURCE_Msk; \ |
| \ |
| (systick_ptr)->LOAD = JTEST_SYSTICK_INITIAL_VALUE; \ |
| (systick_ptr)->VAL = JTEST_SYSTICK_INITIAL_VALUE; \ |
| } while (0) |
| |
| /** |
| * Start the SysTick timer, sourced by the processor clock. |
| */ |
| #define JTEST_SYSTICK_START(systick_ptr) \ |
| do \ |
| { \ |
| (systick_ptr)->CTRL = \ |
| SysTick_CTRL_ENABLE_Msk | \ |
| SysTick_CTRL_CLKSOURCE_Msk; \ |
| } while (0) |
| |
| /** |
| * Evaluate to the current value of the SysTick timer. |
| */ |
| #define JTEST_SYSTICK_VALUE(systick_ptr) \ |
| ((systick_ptr)->VAL) |
| |
| #endif /* _JTEST_SYSTICK_H_ */ |