首页 > 其他分享 >STM32基础篇:SYSTICK(系统滴答)

STM32基础篇:SYSTICK(系统滴答)

时间:2024-11-10 09:17:55浏览次数:3  
标签:定时器 滴答 SYSTICK 系统 us STM32 SysTick 时钟

systick概述

Cortex-M处理器内部包含了一个简单的定时器系统嘀嗒(SysTick)。因为所有的Cortex-M芯片都带有这个定时器,软件在不同Cortex-M器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要检视芯片的器件手册来决定选择什么作为时钟源。

SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。  

系统滴答作用:

1)用于实现精准的延时功能 ms \ us 。

2)用于操作系统的时钟节拍功能。

系统滴答寄存器

从上面的框图可以看到,系统滴答定时器它一共有4个寄存器控制(权威指南142页),是一个向下的24位计数器,时钟源可以选择外部时钟源和内部时钟源两种。

从上图可以看到时钟源是系统时钟经过8分屏之后的21MHz。

系统滴答代码

#include "systick.h"
unsigned char fac_us = 0;	//us延时倍乘数
unsigned short fac_ms = 0;	//ms延时倍乘数
/**********************************************************************
*函数名:Systick_Inti
*功  能:初始化systick
*参  数:系统运行频率,单位:Mhz
*返  回:无
*备  注:滴答时钟源=系统运行频率/8
**********************************************************************/
void Systick_Inti(unsigned char clk)
{
	SysTick->CTRL &= ~(1<<2);	//选择外部时钟作为滴答的时钟源
	fac_us = clk / 8.0;			//得到计1us需要计的数
	fac_ms = clk / 8.0 * 1000;	//得到计1ms需要计的数
}
//最大延迟:(2^24-1)/10.5=1597830(us)
void Delay_Us(unsigned int us)
{
	unsigned int temp = 0;
	SysTick->LOAD = us*fac_us;			//计10.5个数是1us
	SysTick->VAL  = 0;					//清除当前计数值
	SysTick->CTRL |= (1<<0);			//使能计数器
	do
	{
		temp = SysTick->CTRL;
	}
	while(!(temp&(1<<16))&&(temp&(1<<0)));	//如果CTRL的第16为0就继续等,第16位为1时结束
	SysTick->CTRL &= ~(1<<0);			//关闭计数器
}
//最大延迟:(2^24-1)/10.5=1597(ms)
void Delay_Ms(unsigned int Ms)
{
	unsigned int temp = 0;
	SysTick->LOAD = Ms*fac_ms;			//计10.5个数是1us,1ms有1000us
	SysTick->VAL  = 0;					//清除当前计数值
	SysTick->CTRL |= (1<<0);			//使能计数器
	do
	{
		temp = SysTick->CTRL;
	}while(!(temp&(1<<16))&&(temp&(1<<0)));	//如果CTRL的第16为0就继续等,第16位为1时结束
	SysTick->CTRL &= ~(1<<0);			//关闭计数器
}

标签:定时器,滴答,SYSTICK,系统,us,STM32,SysTick,时钟
From: https://blog.csdn.net/qq_56491232/article/details/143655522

相关文章

  • STM32基础
    一、GPIO主要知识点:1、通用GPIO概述2、GPIO的工作方式3、GPIO的相关寄存器4、GPIO的应用5、GPIO的初始化代码1、GPIO概述:GPIO是通用输入/输出的简称,是单片机和外界通讯的必要窗口。换句话来说,GPIO就像我们的计算机的显示器和键盘,我们对单片机的读写操作就是通过I/O口......
  • STM32+阿里云+ESP8266+MQTT+DHT11
    一、阿里云平台环境搭建注册完账号以后,找到控制台->物联网平台。    1.创建一个公共实例,若该实例有ID则为新公共实例2.创建一个产品[如何在物联网平台创建产品_物联网平台(IoT)-阿里云帮助中心(aliyun.com)](https://help.aliyun.com/zh/iot/user-guide/create......
  • 如何实现Delay_us和Delay_ms延时(SysTick定时器)
    SysTick定时器(SystemTickTimer)是ARMCortex-M内核中自带的一个24位递减计数器,通常用于产生系统节拍中断,为操作系统提供时基或用于一般性定时功能。它具有以下特点和用途:一、SysTick的介绍1.SysTick的主要用途(计时)操作系统心跳时基:在实时操作系统(RTOS)中,SysTick通常用于产......
  • 如何对stm32的程序进行加密
    目的:保护单片机里的固件或代码不被读取出来通过代码配置 STM32的寄存器来实现读取保护(RDP)和调试接口锁定,可以采用以下方式:1.启用读取保护(RDP)可以在代码中配置RDP级别。例如在STM32F4系列中,RDP的设置存储在选项字节(OptionBytes)中。RDP的配置可以通过STM32HAL库......
  • 25-018、基于STM32单片机智能行李箱设计-LED-BELL-KEY-指纹-LCD1602-GSM-GPS+HX711称
    本设计由STM32F103C8T6单片机核心板电路+LED指示灯电路+蜂鸣器报警电路+按键电路+指纹电路+LCD1602液晶显示电路+GSM模块电路+GPS模块电路组成。1、如果指纹错误。LED灯会闪,同时蜂鸣器发出滴滴声(3声即可)2、如果指纹输入三次失败后,禁止再用指纹解锁,如果指纹打不开,可以输入按键......
  • 25-009、基于STM32单片机智能公交车自动报站系统RFID语音报站+液晶显示温度和烟雾值设
    本系统由STM32F103C8T6单片机核心板、2.4寸TFT彩屏、JR6001语音播报电路、ULN2003步进电机驱动电路、RC522-RFID刷卡识别电路、轻触开关检测电路、按键电路组成。【1】STM32单片机驱动2.4寸TFT彩屏实时显示所有站台信息、当前公交运行方向、当前到站的站点(并有图标显示);语音播......
  • STM32(hal库)中的定时器从模式TIM_SlaveConfigTypeDef结构体中的含义,以及可选参数的含义
            在STM32的HAL库中,定时器从模式配置结构体TIM_SlaveConfigTypeDef用于配置定时器作为从定时器时的相关参数。该结构体及其可选参数的含义对于理解和配置STM32定时器的从模式至关重要。以下是对该结构体及其参数的详细解释:TIM_SlaveConfigTypeDef结构体该结构......
  • STM32
    一:新建工程右上角工具栏扳手,可调节编码格式utf8,字体14,tabszie改为41.新建工程2.添加必要文件夹library,start,user3.品字按钮(魔术棒右侧)添加文件夹及文件,start只用添加一部分4.魔术棒按钮,c++中包含目录,define添加定义USE_STDPERIPH_DRIVER二:在iic编程时遇到一个奇怪的问......
  • 记录STM32的GPIO 的坑 复用引脚PB3 PB4
    系列文章目录点击直达——文章总目录文章目录系列文章目录一、STM32的GPIO复用引脚PB3PB4二、关闭JTAG功能(PB3/4),只使用SWD(PA13/14)调试关于作者2024年11月3日,浪费我一天的时间,就因为这个BUG,害我没找妹子去玩,可恶可恶!!!STM32的GPIO引脚有这一些约定俗......
  • 定时器(PWM输出)触发ADC采样(DMA)——STM32CubeMX
    在STM32微控制器中,使用定时器(PWM输出)触发ADC采样是一种常见的应用场景,尤其是在需要精确控制采样时刻和频率的场合。本文将详细介绍如何使用STM32CubeMX配置定时器产生PWM波形,并使用DMA传输ADC采样结果。1.定时器PWM输出配置首先,我们需要在STM32CubeMX中配置定时器以产......