`

Stm32定时、延时等功能实现

阅读更多

stm32实现定时、延时一般通过调用CMSIS函数SysTick_Config实现。例如我们设置1ms中断如下:

 

/**************************************
**转载请注明:http://tedeum.iteye.com**
***************************************/

if (SysTick_Config(SystemCoreClock / 1000))
	  {
	    /* Capture error */
	    while (1);
	  }

 这时,每过1ms就会调用中断,可以在中断中进行定时逻辑处理:

 

 

void SysTick_Handler(void)
{
//进行相应的定时逻辑处理
}

 在此基础上,我们就可以进行延时,频率处理,计时的功能的开发:

一、延时,我们首先定义一个延时时间,然后调用延时函数后,延时时间在SysTick中断中减一,为0时跳出:

//延迟时间计数器
__IO uint32_t TimingDelay = 0;
//SysTick中断处理函数
void SysTick_Handler(void)
{
	//每次SysTick中断减一
	  if (TimingDelay != 0x00)
	  {
	    TimingDelay--;
	  }
}
//延时函数
void Delay(__IO uint32_t nTime)
{
	//设置终端延时计数器
  TimingDelay = nTime;
  //为0时延时等待结束
  while(TimingDelay != 0);
}

 二、计时,设置一个sysTickCount,两个sysTickCount的差就是时长:

//tick计数器,48天后重复,如用于四轴不用处理
static volatile uint32_t sysTickCount = 0;
//SysTick中断处理函数
void SysTick_Handler(void)
{
	//每次SysTick中断加1
	sysTickCount++
}
//获取当前计数
uint32_t millis(void)
{
    return sysTickCount;
}
//使用例子
uint32_t t1 = millis();
//do somethin
uint32_t t2 = millis();
uint32_t t3 = t2 - t1;

 三、频率处理,按上面没1ms处理1次,频率= 1000(每秒次数)/每次间隔时间,在中断处理函数中如下:

void SysTick_Handler(void)
{
	//每次SysTick中断加1
	sysTickCount++

	//500hz
	if ((sysTickCount % 2) == 0) {
		//do something 500hz
	}
	//250hz
	if ((sysTickCount % 4) == 0) {
		//do something 200hz
	}
	//200hz
	if ((sysTickCount % 5) == 0) {
		//do something 200hz
	}
	//100hz
	if ((sysTickCount % 10) == 0) {
		//do something 200hz
	}
	//50hz
	if ((sysTickCount % 20) == 0) {
		//do something 200hz
	}
	//20hz
	if ((sysTickCount % 50) == 0) {
		//do something 200hz
	}
	//10hz
	if ((sysTickCount % 100) == 0) {
		//do something 200hz
	}
	//5hz
	if ((sysTickCount % 200) == 0) {
		//do something 200hz
	}

}

 以上就是SysTick一些基本应用的笔记。

/*************************************************
*****转载请注明出处:http://tedeum.iteye.com******
**************************************************/

 

 

1
0
分享到:
评论

相关推荐

    STM32F1和STM32F4延时函数

    总结,STM32F1和STM32F4的延时函数实现涉及硬件定时器、软件循环计数等多种方式,需要根据实际需求和资源选择合适的方法。给定的"DELAY"文件提供了现成的延时库,简化了开发者的工作。在使用时,需注意延时精度、...

    STM32精准延时程序

    总之,STM32精准延时程序通过合理配置通用定时器,结合外部时钟源和预分频器,能够实现精确的定时任务。这在许多实时性和同步性要求高的应用中,如电机控制、通信协议、LED闪烁等场景,都具有至关重要的作用。

    STM32滴搭定时器进行精确延时及定时程序

    通过深入学习STM32滴搭定时器的使用,开发者可以充分利用其功能,实现各种精确的定时和延时应用,例如电机控制、信号采样、通信协议的时序控制等。提供的资料应该包含详细的讲解和实例,对于STM32新手来说是非常有...

    STM32软件延时测试

    在STM32开发过程中,经常需要进行软件延时操作,例如在定时任务、动画效果或者等待外部事件时。本文将深入探讨如何在STM32上实现精准的软件延时,并进行测试。 首先,我们需要理解STM32中的延时方法。最基础的延时...

    STM32,延时函数,HAL库可用,包括微秒与毫秒延时

    在STM32的开发过程中,延时函数是必不可少的一部分,它用于控制程序执行的精确时间,比如在LED闪烁、定时任务或者通信协议中。本资料主要介绍了如何在STM32的HAL库中实现微秒和毫秒级别的延时。 HAL库,全称为...

    STM32延时子程序1ms、1s

    根据提供的文件信息,本文将围绕“STM32延时子程序1ms、1s”这一主题展开讨论,旨在帮助读者理解如何通过软件手段实现高精度的延时功能。 ### STM32简介 STM32是意法半导体(STMicroelectronics)推出的一系列基于...

    STM32精确延时

    在STM32的程序设计中,延时功能是不可或缺的一部分,尤其在处理硬件交互、定时任务或者脉冲控制等场景。本篇文章将深入探讨如何利用STM32的系统滴答时钟来实现微秒和毫秒级的精确延时。 首先,我们需要了解STM32中...

    stm32延时程序

    STM32延时程序是嵌入式开发中的关键部分,特别是在微控制器应用中,精确的延时控制对于系统定时和事件同步至关重要。基于8M晶振的STM32延时程序设计涉及到硬件时钟系统、软件算法以及中断管理等多个方面。 首先,...

    stm32软件延时定时器

    在STM32中,硬件定时器如TIM、SysTick等提供了高效且精确的定时功能,但有时因为资源限制或特定需求,我们可能需要自定义软件延时函数。软件延时主要通过循环计数来实现,常见的方法有忙等待(Busy-Wait)和睡眠模式...

    stm32延时函数,毫秒延时,微秒延时

    通过理解和掌握这两种延时函数的实现原理,开发者可以更好地在STM32项目中实现精确的定时任务,提升系统性能和可靠性。在实际项目中,可以参考"01_延时函数"这样的资料,学习和实践这些延时技术。

    STM32定时闪烁LED

    STM32定时闪烁LED STM32微控制器是STMicroelectronics推出的32位基于ARM Cortex-M的微控制器系列。STM32系列微控制器具有低功耗、高速运算和强大连接能力等特点,广泛应用于智能家电、工业自动化、医疗器械、汽车...

    STM32上基于时钟系统实现的延时函数.zip

    在STM32的程序设计中,延时函数是非常关键的部分,它用于控制程序执行的时间间隔,常用于定时任务、中断服务或者硬件操作的同步。本教程将详细介绍如何在STM32上利用时钟系统实现精确的延时函数,包括秒、毫秒和微秒...

    STM32F103系统滴答定时器精确延时1us

    系统滴答定时器(Systick Timer)是STM32内建的一种特殊功能定时器,它是一个独立的、递减计数的定时器,通常用于实现操作系统(如FreeRTOS)的时钟节拍或提供基本的延时功能。本文将详细介绍如何利用STM32F103的...

    STM32单片机通过按键实现简单的时钟功能

    在这个项目中,我们将探讨如何利用STM32单片机通过按键来实现一个简单的时钟功能。这个功能不仅能够帮助初学者理解STM32的IO口操作、中断处理和时间管理,而且也是实际应用中的常见需求。 首先,我们需要了解STM32...

    STM32实现交通灯设计

    STM32实现交通灯设计是一项常见的嵌入式系统实践项目,它涉及到微控制器编程、硬件接口操作以及模拟仿真等多个IT领域的知识。在这个项目中,主要使用了STM32系列的微控制器,配合Keil集成开发环境进行软件编写,并...

    STM32 CubeMx延时头文件

    STM32 CubeMX是STMicroelectronics推出的一款强大的STM32微控制器配置和代码生成工具,它可以帮助开发者快速地初始化和配置STM32芯片的各种外设,包括时钟、GPIO、ADC、DAC、串口等。在STM32的开发过程中,延时功能...

    test_TIM.rar_dev_stm32 systick 精确定时_stm32 毫秒_stm32 精确定时_stm32定时

    在STM32中,系统定时器(SysTick)是一个非常重要的组件,它提供了精确的时间基准,可用于软件定时和延迟等功能。本篇将详细介绍如何利用STM32的SysTick实现从微妙到毫秒的精确定时。 首先,SysTick是Cortex-M系列...

    STM32F103C8T6.zip

    总结来说,这个项目展示了如何使用keil5和STM32F103C8T6的固件库进行基本的GPIO控制,以及如何通过delay函数实现定时任务。对于初学者,这是理解STM32开发流程和基本硬件操作的一个很好的起点。随着对STM32固件库和...

    按键触发延时1分钟程序_stm32按键程序_

    在本项目中,我们关注的是STM32上的按键触发延时1分钟程序,这对于初学者理解MCU的中断处理和时间管理功能非常有帮助。 在STM32中,按键通常连接到GPIO(通用输入/输出)引脚,当按下按键时,对应的GPIO端口电平会...

Global site tag (gtag.js) - Google Analytics