关于systick的用法
时钟源介绍
通过寄存器配置,分频系数,倍频系数。滴答时钟源为:Cortex System timer(eg:48Mhz).
SysTick控制寄存器(Cortex-M权威指南)
源码介绍
SystemCoreClock =4800 0000;
uwTickFreq=1;
HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq));
/**
\brief System Tick Configuration
\details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
Counter is in free running mode to generate periodic interrupts.
\param [in] ticks Number of ticks between two interrupts.
\return 0 Function succeeded.
\return 1 Function failed.
\note
*/
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
{
return (1UL); /* Reload value impossible */
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
SysTick->VAL = 0UL; /* 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 (0UL); /* Function successful */
}
/*
*@brief 中断函数
*
*/
void SysTick_Handler(void)
{
}
运行机制说明
SysTick->LOAD装载初始值;
SysTick->VAL 为计数值
当VAL==0时,产生中断,产生中断同时,VAL装载初始值;