SysTick-系统滴答定时器

SysTick-系统滴答定时器,第1张

SysTick-系统滴答定时器 SysTick-系统定时器 一、 外设的原理及功能介绍 1.1 特性介绍
  • SysTick系统定时器是属于Cortex-M内核中的一个外设,内嵌在NVIC中。
  • SysTick系统定时器含有一个计数宽度为24Bit(0xFFFFFF,0~1677216)的向下递减(工作模式)的自动重装载计数器,计数器每计数一次的时间为1/CLKSource(工作周期,F103为72Mhz,就是1/72Mhz)。一般我们设置CLKSource为系统时钟。以F103为例,CLKSource可以配置为72Mhz。
  • 当重装载值寄存器的值递减到0的时候,SysTick系统定时器可以配置产生一次中断,以此循环往复。
  • SysTick系统定时器是属于Cortex-M内核的外设,所以一般基于Cortex-M内核的单片机都具有这个系统定时器。这使得软件在Cortex-M单片机中可以很容易得移植。
1.2 SysTick定时器的功能
  • SysTick系统定时器可以用于 *** 作系统,用于产生时基,维持 *** 作系统的心跳。一般 *** 作系统都需要一个时基,进行任务的调度、同步等功能实现。
  • SysTick系统定时器最常用的功能,还是计数。比如用来进行微妙、毫秒延时,以此产生特定时序。
1.3 SysTick定时器寄存介绍

二、代码实现延时函数 2.1 在我们定义文件中
static __IO uint32_t TimingDelay;

void SysTick_Init()
{
	
	if(HAL_SYSTICK_Config(SystemCoreClock/100000))
	{
		while(1);
	}
}

void Delay_us(__IO uint32_t nTime)
{
	TimingDelay = nTime;
	while(TimingDelay != 0);
}

void TimingDelay_Decrment()      		                                            
{
	if(TimingDelay != 0x00)
	{
		TimingDelay--;
	}
}  

我们在stm32f1xx_it.c中,把文件TimingDelay_Decrment();函数放到滴答定时器中断中。

void SysTick_Handler(void)
{
  

  
  HAL_IncTick();
   TimingDelay_Decrment();   
  

  
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5670570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存