STM32
直播中

万物死

9年用户 1389经验值
擅长:MEMS/传感技术
私信 关注
[问答]

求助关于SysTick程序的疑惑求解

关于Systick 程序的疑惑

回帖(1)

刘琴

2024-5-16 15:33:28
在STM32系统中充当这个时基的我们称之为“系统滴答定时器”,英文名为Systick Time.
在51系列芯片的编程中,通常会用到延时函数,当时我们是用死循环来达到这个效果的;
在STM32电路系统里面,我们就可以用Systick Time这个模块,能够精确延时的目的。
这个模块即使在系统睡眠的时候也是工作的,这样可以用之做一个系统闹钟或者是实现待机唤醒这个功能。这个模块就是一个简单的倒计时器,对于它,有三个常用的寄存器
 CTRL 控制状态寄存器
 LOAD重装载寄存器

可参照这个理解一下

void delay_init()     
{
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  //选择外部时钟  HCLK/8即为9M的时钟
  fac_us=SystemCoreClock/8000000;                                      
  //每个us需要的systick时钟数  
  fac_ms=(u16)fac_us*1000;                                               
  //每个ms需要的systick时钟数   
}
void delay_us(u32 nus)
{
  SysTick->VAL=0X00;                    //清空计数器
  SysTick->LOAD=nus*fac_us;            //初始值加载
  SysTick->CTRL|=0X01;                  //ENABLE,开始计数
  while(!(SysTick->CTRL>>16));     //等待标志位为1   
  SysTick->CTRL =0X00;                  //关闭计数器
}
 VALUE当前数值寄存器
举报

更多回帖

发帖
×
20
完善资料,
赚取积分