S32K144 Systick 中断调试进不去
最近在调试 NXP 的 S32K144芯片, 使用 S32DS IDE 。
由于之前一直使用ST系列的芯片,一直使用的是Keil, 所以上手没有陌生感。
( PS: 也将工程移植至KEIL,代码跑起来了,具体注意细节点,再出个文档说明。)
在调试SYSTICK 中断,初始化函数如下
void SysTick_Init(void)
{
uint32_t core_freq = 0u;
/* Get the correct name of the core clock */
clock_names_t coreclk = CORE_CLK;
status_t clk_status = CLOCK_SYS_GetFreq(coreclk, &core_freq);
DEV_ASSERT(clk_status == STATUS_SUCCESS);
DEV_ASSERT(core_freq > 0u);
(void)clk_status;
/* For Cortex-M0 devices the systick counter is initialized with an undefined
value, so make sure to initialize it to 0 before starting */
S32_SysTick->CSR = S32_SysTick_CSR_ENABLE(0u);
S32_SysTick->RVR = S32_SysTick_RVR_RELOAD(core_freq / 1000u);
S32_SysTick->CVR = S32_SysTick_CVR_CURRENT(0U);
S32_SysTick->CSR = S32_SysTick_CSR_ENABLE(1u) | S32_SysTick_CSR_TICKINT(1u) | S32_SysTick_CSR_CLKSOURCE(1u);
}
上述初始化函数,是从 void OSIF_TimeDelay(const uint32_t delay);截取出来的,按道理根据经验初始化之后,就能进入 void SysTick_Handler(void);
然而,在此中断打断点调试并没有进入。
随后,尝试改变代码的优化级别,改成不优化( -O0)
编译下载,debug中,能运行到systick_handler的断点处,为了进一步了解是不是因为优化的问题导致该处不能调试,又重新将优化级别改成 -O1,再次调试,又能进中断了。