cortex-m0 systick中断不会发生

时间:2016-02-14 17:30:10

标签: stm32 cortex-m

我正在为stm32f072写固件。 问题是SysTick中断没有发生。 以下是SysTick配置的简单代码:

SysTick_Config(1000);

此功能取自CMSIS的core_cm0.h文件:

    __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
   SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}

系统计时器按预期计算。

SysTick-&gt; CTRL的超量计数位设置为1,但没有中断发生!固件不会跳转到SysTick_Handler()。 enter image description here 我想念的是什么?此代码对于stm32f1和stm32f4设备已足够,但不适用于stm32f0。

1 个答案:

答案 0 :(得分:0)

我建议你看一下Code Snippets from ST。这些是F0(和L0)系列的低级程序。他们中的一些人使用SysTick(例如CLOCK CONTROLLER项目中的前两个例子)并且所有东西都是预先配置好的,并且希望在你的电路板上工作。它最初是为STM32F072 Discovery板编写的。我用我的自定义电路板进行了一些微小的修改。