首页 > 其他分享 >【STM32】STM32F1基本定时器(HAL库)

【STM32】STM32F1基本定时器(HAL库)

时间:2024-08-30 11:51:56浏览次数:5  
标签:CNT 定时器 HAL STM32 计数 计数器 STM32F1 时钟

00. 目录

文章目录

01. STM32概述

STM32是一款由意法半导体(STMicroelectronics,简称ST)公司制造的微控制器(MCU),它基于ARM Cortex-M内核设计,专为要求高性能、低成本、低功耗的嵌入式应用而设计。以下是对STM32的详细介绍:

产品概述

  • 内核:STM32采用了ARM Cortex-M系列内核,包括M0、M0+、M3、M4和M7等多种系列,能够满足不同应用场景的需求。
  • 特点:高性能、低成本、低功耗、可裁剪,这些特点使得STM32在嵌入式开发领域具有广泛的应用前景。
  • 应用领域:STM32微控制器广泛应用于工业自动化、汽车电子、消费电子、物联网、无人机、嵌入式设备等多个领域。

产品系列

STM32系列微控制器按照内核架构和性能特点可以分为多个系列,主要包括:

  • 主流产品:如STM32F0、STM32F1、STM32F3等,适用于一般的嵌入式应用。
  • 超低功耗产品:如STM32L0、STM32L1、STM32L4等,专为低功耗设计,适用于对功耗要求较高的应用。
  • 高性能产品:如STM32F2、STM32F4、STM32F7、STM32H7等,具有更高的处理速度和更强的外设功能,适用于需要高性能的应用场景。

技术特点

  • 高性能:STM32微控制器的主频可达72MHz以上,能够满足各种高速数据处理需求。
  • 丰富的外设资源:STM32集成了GPIO、USART、SPI、I2C等多种外设资源,可满足各种通信和控制需求。
  • 低功耗:STM32采用了先进的低功耗技术,如休眠模式、待机模式等,可大幅降低功耗。
  • 易用的开发工具:STM32提供了丰富的开发工具,如Keil、IAR等,支持多种编程语言(如C、C++、汇编等),方便开发人员进行开发和调试。

02. 定时器分类

STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。
在这里插入图片描述
在这里插入图片描述

03. 基本定时器框图

在这里插入图片描述

① 时钟源

定时器时钟 TIMxCLK,即内部时钟 CK_INT,经 APB1 预分频器后分频提供,如果APB1 预分频系数等于 1,则频率不变,否则频率乘以 2,库函数中 APB1 预分频的系数是2,即 PCLK1=36M,所以定时器时钟 TIMxCLK=36*2=72M。

② 计数器时钟

定时器时钟经过 PSC 预分频器之后,即计数器时钟 CK_CNT,用来驱动计数器计数。PSC 是一个16 位的预分频器,可以对定时器时钟 TIMxCLK 进行 1~65536 之间的任何一个数进行分频。具体计算方式为:CK_CNT=TIMxCLK/(PSC+1)。

③ 计数器

计数器 CNT 是一个 16 位的计数器,只能往上计数,最大计数值为 65535。当计数达到自动重装载寄存器的时候产生更新事件,并清零从头开始计数。

④ 自动重装载寄存器

自动重装载寄存器 ARR 是一个 16 位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断。

定时时间的计算

定时器的定时时间等于计数器的中断周期乘以中断的次数。计数器在 CK_CNT 的驱动下,计一个数的时间则是 CK_CNT 的倒数,等于:1/(TIMxCLK/(PSC+1)),产生一次中断的时间则等于:(1/CK_CNT) * (ARR+1)。如果在中断服务程序里面设置一个变量 time,用来记录中断的次数,那么就可以计算出我们需要的定时时间等于:(1/CK_CNT) * (ARR+1) * time。

04. 定时器计数模式及溢出条件

在这里插入图片描述

05. 附录

网址:【STM32】STM32系列教程汇总

标签:CNT,定时器,HAL,STM32,计数,计数器,STM32F1,时钟
From: https://blog.csdn.net/dengjin20104042056/article/details/141677926

相关文章

  • Datawhale X 李宏毅苹果书AI夏令营深度学习进阶(二)
    一.动量法在上一个博客中,我们提到了动量法,现在继续补充如图所示,红色表示负梯度方向,蓝色虚线表示前一步的方向,蓝色实线表示真实的移动量。一开始没有前一次更新的方向,完全按照梯度给指示往右移动参数。负梯度方向跟前一步移动的方向加起来,得到往右走的方向。一般梯度下降走到一......
  • Datawhale X 李宏毅苹果书(入门) AI夏令营 task02笔记
    官方学习文档:https://linklearner.com/activity/16/14/55往期task01链接:https://mp.csdn.net/mp_blog/creation/editor/141535616李宏毅老师对应视频课程可供食用:https://www.bilibili.com/video/BV1JA411c7VT/?p=3机器学习基础线性模型        w跟b的值上期ta......
  • Datawhale X 李宏毅苹果书(入门) AI夏令营 task01笔记
    官方学习链接:https://linklearner.com/activity/16/14/42机器学习基础导读        通俗来讲,机器学习就是让机器具备找一个函数的能力。这里指的“找一个函数”,指的是找一个能够描述一个场景数学规律的函数模型,具体方法大致是:让机器运行算法,通过输入的数据,确定合适的......
  • 【Datawhale AI 夏令营2024--CV】Task2 阅读小结与尝试
    一、阅读小结        yolo不仅要识别物体的种类还要识别物体的位置1.1、物体检测介绍:1.输入:照片可以利用opencv来提取照片的每一帧,在循环下对视频中每一帧的照片进行处理cap=cv2.VideoCapture(video_path)whileTrue:ret,frame=cap.read()......
  • Datawhale AI 夏令营 第五期 CV方向 02进阶
    上次的baseline方案,训练的模型,获得分数并不高,DataWhale提供了两个上分的思路增加训练数据集切换不同模型预训练权重增加训练集的大小通常可以提高模型的泛化能力,因为更多的数据可以帮助模型学习到更多的特征和模式。但是,越大的数据集,就意味着需要更多的计算资源和时间来训......
  • STM32嵌入式系统(一)
    一.发展历史电子计算机是21世纪伟大的发明,计算发展有两个方向:通用计算机:面向高速度海量的的数据处理。I3-I5-I7-I9,PI-PII-PIII,嵌入式计算机:嵌入到各种设备中,完成一定的计算和控制功能。8位单片机,16位单片机,32位单片机,64位单片机。嵌入式系统定义:以应用为核心,以计算机为基础......
  • STM32嵌入式(二)
    第一节:MDK软件基本用法大部分标签都有调试模式和普通模式的区别。1.file:2.edit:撤销,恢复,剪切,复制...3.view:各种视图的显示和隐藏4.project:项目管理相关文件名带有*,表示文件已经修改但是没有保存。第二节:STM32的固件库打开参考手册:@STM32RBT6开发板提前下载包\DataSheet......
  • 基于STM32F407ZGT6用BH1750在OLED显示屏上显示光照数据,根据光照强度控制小灯亮灭(路灯
    占空比:高电平占整个电平周期的持续时长,从而控制小灯的亮度,小灯亮度的控制需用定时器的输出比较功能。PWM部分可以参考这篇文章PWM——基于STM32F407ZGT6开发板-CSDN博客此外我们还需要了解IIC的工作原理1.pwm.c   #include"public.h"/*pwm控制led实现呼吸灯1.......
  • stm32 EXTI外部中断(标准库)(旋转编码器计次&对射式红外传感器计次)
    1.理论中断系统1.中断中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行2.中断优先级中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应......
  • 机器学习新手入门笔记03#AI夏令营#Datawhale X 李宏毅苹果书#夏令营
    深度学习实践方法论在应用机器学习算法时,实践方法论能够帮助我们更好地训练模型。如果在Kaggle上的结果不太好,虽然Kaggle上呈现的是测试数据的结果,但要先检查训练数据的损失。看看模型在训练数据上面,有没有学起来,再去看测试的结果,如果训练数据的损失很大,显然它在训练集上面......