栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

SysTick-系统滴答定时器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();   
  

  
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号