利用systick实现1s定时

本文介绍如何使用STM32的滴答定时器(SysTick)实现精确的1秒定时功能。通过配置定时器中断每10ms触发一次,并设计变量自增机制,达到100次中断即完成1秒计时,同时通过串口发送特定字符进行验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滴答定时器简介

系统定时器SysTick是属于CM3内核中的一个外设,相关寄存器内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,这使得软件(OS)在CM3单片机可以十分容易的移植。SysTick一般用于操作系统的产生时基功能,以维持操作系统的“心跳”。

问题描述:利用stm32自带的滴答定时器,也就是systick定时器,实现1s钟定时,滴答定时器10ms中断一次

 

问题分析:滴答定时器定时10ms,定时10ms后让一个变量自增。当这个变量增加了100次后,不就是1s了嘛。

 

编程:滴答定时器定时10ms

根据滴答定时器的寄存器,设置时钟源和重装载数即可

void  SysTickInit (void)
{
  SysTick_SetReload(90000);
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  SysTick_CounterCmd(SysTick_Counter_Enable);
  SysTick_ITConfig(ENABLE);
}

中断处理

void SysTickHandler(void)
{
   SysClock++;
}

编程:定时1s,串口发送aa

void systick_send(void)
{
  static int clockDelay;

  if (SysClock-clockDelay>100)
  {
	   HostPutChar(0xaa);
	   clockDelay=SysClock;	
  }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值