本文主要是介绍LPC1768菜鸟学习之路systick,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LPC1768在代码里用到使用systick时,是以如下形式出现
if (SysTick_Config(SystemCoreClock /1000))/1ms进入一次中断/
{
while (1); /* 错误情况下就停在这里
}
这个函数的原型是
__STATIC_INLINEuint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
return(1); /* Reload value impossible */
SysTick->LOAD = ticks - 1; /* set reloadregister */
NVIC_SetPriority (SysTick_IRQn,(1<<__NVIC_PRIO_BITS) - 1); /* setPriority 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 andSysTick Timer */
return (0); /* Function successful */
}
节拍函数的初始化,需要提一下的是这个函数的形参SystemCoreClock/1000,SystemCoreClock 是CPU频率,假设是100M的情况下,100M/1000= 100K,节拍定时器在100M的时钟下计数100K次,1S可以溢出1000次,就是说1ms溢出一次,所以就是定时1ms。如果想定时10ms,就把除数改成100。
延迟函数可以这样写:
staticvoid Delay (uint32_t dlyTicks) {
uint32_t curTicks;
curTicks = msTicks;
while ((msTicks - curTicks) <dlyTicks);
}
voidSysTick_Handler(void) {
msTicks++; /* increment counternecessary in Delay() *
}
这篇关于LPC1768菜鸟学习之路systick的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!