通过以下寄存器对系统滴答定时器进行配置: 1.引脚:系统滴答定时器不使用外部引脚。 2.电源:系统滴答定时器是通过SysTick 控制寄存器配置允许。系统滴答定时器时钟源是固定的系统时钟频率的一半,即参考时钟。 3. SYST_CSR寄存器使能SysTick 定时器时钟源。
SysTick 定时器是Cortex-M0 内部集成的一部分。SysTick 定时器的作用是产生一个固定的10 毫秒中断,供操作系统或其它系统管理软件使用。
名称 访问方式 地址偏移 描述 复位值
SYST_CSR R/W 0x010 系统定时器控制和状态寄存器 0x000 0000
SYST_RVR R/W 0x014 系统定时器重载寄存器 0
SYST_CVR R/W 0x018 系统定时器当前计数值寄存器 0
SYST_CALIB R/W 0x01C 系统定时器校准值寄存器 0x4
寄存器描述详见“LPC111x_11Cxx_UM_Simp_Chinese”手册P291
以下是systick代码部分,使用滴答定时器实现简单的定时功能 #include "LPC11xx.h" /* LPC11xx definitions */ #include "gpio.h"
#define SYSTICK_DELAY 5000
volatile uint32_t TimeTick = 0;
/* SysTick interrupt happens every 10 ms */ void SysTick_Handler(void) { TimeTick++; }
void delaySysTick(uint32_t tick) { uint32_t timetick;
/* Clear SysTick Counter */ SysTick->VAL = 0; /* Enable the SysTick Counter */ SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
timetick = TimeTick; while ((TimeTick - timetick) < tick); /* Disable SysTick Counter */ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* Clear SysTick Counter */ SysTick->VAL = 0; return; }
/* Main Program */
int main (void) { SystemInit();
/* Called for system library in core_cmx.h(x=0 or 3). */ SysTick_Config( SYSTICK_DELAY ); /* Enable AHB clock to the GPIO domain. */ LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); /* Set port 3_0 to output */ GPIOSetDir( 1, 6, 1 );
while (1) /* Loop forever */ { delaySysTick(SYSTICK_DELAY); GPIOSetValue( 1, 6, 0 ); delaySysTick(SYSTICK_DELAY); GPIOSetValue( 1, 6, 1 ); } }
我要赚赏金
