首页 > 其他分享 >STM32之HAL开发——系统定时器(SysTick)

STM32之HAL开发——系统定时器(SysTick)

时间:2024-03-24 23:00:13浏览次数:30  
标签:定时器 HAL void SysTick STM32 寄存器 TimingDelay 时钟

系统定时器(SysTick)介绍

     SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。

    因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
 

寄存器介绍

    SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
CTRL控制以及状态寄存器使用方法 LOAD重装载数值寄存器
VAL当前数值寄存器

系统定时器(SysTick)使用

CubeMX配置流程

1.配置好RCC时钟 2.配置好时钟来源,时钟频率 3.SYS配置   4.配置SYS时钟频率

工程代码介绍

使用系统定时器实现,Delay的功能
//时钟初始化配置
void SysTick_Init(void)
{
    /* SystemFrequency / 1000    1ms中断一次
     * SystemFrequency / 100000     10us中断一次
     * SystemFrequency / 1000000 1us中断一次
     */
    if (HAL_SYSTICK_Config(SystemCoreClock / 1000))
    { 
        /* Capture error */ 
        while (1);
    }
}
//延时函数
void Delay_us(__IO u32 nTime)
{ 
    TimingDelay = nTime;    

    while(TimingDelay != 0);
}
//中断调用函数
void TimingDelay_Decrement(void)
{
    if (TimingDelay != 0x00)
    { 
        TimingDelay--;
    }
}
//中断函数
void SysTick_Handler(void)
{
  HAL_IncTick();
    TimingDelay_Decrement();
}

标签:定时器,HAL,void,SysTick,STM32,寄存器,TimingDelay,时钟
From: https://blog.csdn.net/zhoutan001/article/details/136996660

相关文章

  • 上位机开发 halcon坐标转轴坐标
    背景    上位机开发中有一种相机叫标定相机,主要是有来给某些要进行根据CAD图点位计算时当前产品实际点位坐标时使用的一种标定测量相机。主要原理是根据两个或多个指定的标定点进行取图计算圆心坐标,再将视觉计算出的圆心坐标和取图时的轴坐标进行偏差计算。最后得到标......
  • stm32f103c8t6学习笔记(学习B站up江科大自化协)-ADC
    ADC简介        ADC,英文全称是AnalogtoDigitalConvert,意为模拟数字转换器,简称模数转换器,或者叫AD转换器,STM32主要是数字电路,数字电路只有高低电平,没有几V电压的概念,如果想读取电压值需借助ADC模数转换器来实现。ADC读取引脚上的模拟电压,转化成一个数据存在寄存器......
  • STM32G431RBT6之ADC06
    电位器调节ADC信号&&ADC调节占空比引脚配置新建文件badc.h&&badc.c#include"badc.h"doublegetADC(ADC_HandleTypeDef*pin){uintadc;HAL_ADC_Start(pin);adc=HAL_ADC_GetValue(pin);returnadc*3.3/4096;}#ifndef_BADC_H_#......
  • STM32 固件库和HAL库工程
    因为之前没有注意这个问题,在创建工程的时候找了很久的库文件如下如所示,如果你想创建固件库的新工程,那么可以直接点击下方连接进入官网下载,但是请注意,如果你所使用的板子不是下图中包含的型号,是没有固件库支持的,应该使用HAL库或者LL库创建文件固件库下载地址因为我使用过H75......
  • A Survey on Large Language Model Hallucination via a Creativity Perspective
    本文是LLM系列文章,针对《ASurveyonLargeLanguageModelHallucinationviaaCreativityPerspective》的翻译。从创造力的角度考察大型语言模型的幻觉摘要1引言2LLM时代的幻觉3幻觉中隐藏的创造力4大型语言模型的创造力5利用LLM幻觉进行创造6结论和未......
  • 初学STM32 CAN通信(三)
    1.stm32CAN通信标准库函数//CAN通信初始化函数uint8_tCAN_Init(CAN_TypeDef*CANx,CAN_InitTypeDef*CAN_InitStruct);//筛选器初始化函数voidCAN_FilterInit(CAN_FilterInitTypeDef*CAN_FilterInitStruct);//发送信息函数uint8_tCAN_Transmit(CAN_TypeDef*CANx,C......
  • STM32之HAL开发——启动文件详解【精华版】
    启动文件介绍启动文件是使用机器认识的汇编语言,由汇编编写,是系统上电复位后第一个执行的程序,经过一些必要的配置,最终能够调用main函数,使得用户程序能够在MCU上正常运行起来的必备文件。无论是是何种MCU,从简单的51,MSP430,到ARM9,ARM11,A7都必须有启动文件,因为对于嵌入式......
  • STM32之HAL开发——点灯大师
    点灯步骤注意:本次点灯操作分为俩种,一种为低级点灯——HAL库点灯,一种为高级高效点灯——寄存器点灯。引脚时钟开启__HAL_RCC_GPIOX_CLK_ENABLE()引脚初始化/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDefGPIO_InitStruct;/*选择要控制的GPIO......
  • STM32G431RBT6之定时器05
    以该框图为例: 选择引脚配置参数 80MHz变为100Hz的配置设置占空比 打开定时器 手动更改占空比voidkeyb2_3_func(){if(key[1].single_flag==1){pa6_duty+=10;if(pa6_duty>=100){pa6_duty=10;}......
  • 蓝桥杯嵌入式(STM32G431RBT6)——扩展板——IC采集频率(PUSL1、PUSL2)
    1.原理图2.Cubemx配置3.代码(1)timer.c#include"timer.h"unsignedintPUSL1_frq_T2CH2=0;unsignedintPUSL2_frq_T2CH3=0;uint32_tuwIC2Value1_T2CH2=0;//第一次捕获上升沿的时间uint32_tuwIC2Value2_T2CH2=0;//第二次捕获上升沿的时间uint32_tu......