********************************************************************************************************* ** Function name: InitSysTick ** Descriptions: 系统节拍定时器初始化 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void InitSysTick(uint32 ulMsTime) {
STCTRL = (1ul << 0) | (1ul << 1); /* 使能系统节拍定时器并使能中断*/ /* * (FAHBCLK / 2000000* ulMsTime - 1)为us延时 * (FAHBCLK / 2000* ulMsTime - 1)为ms延时 */ STRELOAD = FAHBCLK / 2000000 * ulMsTime - 1; /* 定时时间设置 */ zyIsrSet(STI, (unsigned long )SysTickIsr, PRIO_ONE ); }
理论上,如果ulMsTime = 1的话值应该是0.5us,但实际是1us。是什么原因呢?
|