我正在为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()。 我想念的是什么?此代码对于stm32f1和stm32f4设备已足够,但不适用于stm32f0。
答案 0 :(得分:0)
我建议你看一下Code Snippets from ST。这些是F0(和L0)系列的低级程序。他们中的一些人使用SysTick(例如CLOCK CONTROLLER项目中的前两个例子)并且所有东西都是预先配置好的,并且希望在你的电路板上工作。它最初是为STM32F072 Discovery板编写的。我用我的自定义电路板进行了一些微小的修改。