使用以下的程序发现(SysTick_Config(SystemCoreClock)),配置为1s进入一次systick中断就无法实现功能,
如果改为(SysTick_Config(SystemCoreClock)/10)或者(SysTick_Config(SystemCoreClock)/100),都可以正常
实现功能,这是为什么呢?(SysTick_Config(SystemCoreClock)),中的SystemCoreClock为72MHz也没有超过
0xFFFFFF啊!
__IO uint32_t nCounter;
__IO uint32_t timer_counter;
/*******************************************************************************/
//Systick初始化函数
void systick_initialization(void)
{
if(SysTick_Config(SystemCoreClock)) //配置Reload值为72MHz,
{
while(1);
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk; //关闭Systick
}
/*******************************************************************************/
/*******************************************************************************/
//延时倍数函数
void Delay_1ms(uint32_t nTime)
{
nCounter = nTime;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(nCounter);
}
/*******************************************************************************/
/*******************************************************************************/
//自减1函数
void nTime_decrease(void)
{
if(nCounter)
{
nCounter--;
timer_counter++;
printf("\t%d\r\n",timer_counter);
}
}
/*******************************************************************************/ |