打印

Systick为何无法实现1s的定时,100ms,1ms都可以

[复制链接]
328|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
社畜一枚|  楼主 | 2019-11-14 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用以下的程序发现(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);  
}
}
/*******************************************************************************/

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

397

主题

401

帖子

0

粉丝