C语言-STM32:初始定时器(通用定时器)

STM32定时器的作用: STM32定时器是一个重要的硬件资源,主要用于以下几种用途:

  1. 计数:它可以用来计数外部事件的次数,例如脉冲或信号的周期。
  2. 定时:定时器可以设置一个特定的时间间隔后产生中断,用于执行周期性的任务。
  3. PWM(脉宽调制):通过设置定时器的捕获/比较寄存器,可以生成不同占空比的PWM波形,用于电机控制、亮度调节等。
  4. 同步信号:定时器可以与其他外设或定时器进行同步,以实现复杂的时序控制。
  5. 延迟函数:通过设置定时器的计数值,可以实现精确的延时功能。

初始化STM32 TIM2 定时器的基本步骤如下(以C语言为例):

        头文件

#ifndef __TIMER_H__
#define __TIMER_H__#include "stm32f1xx_hal.h"void timer_init(uint16_t arr,uint16_t psc);
#endif

        

#include "timer.h"TIM_HandleTypeDef timer_handler={0};//初始化句柄//定时器初始化函数
void timer_init(uint16_t arr,uint16_t psc){timer_handler.Instance=TIM2;                 //指定定时器实例为TIM2timer_handler.Init.Period=arr;               //设置周期值timer_handler.Init.Prescaler=psc;            // 时钟预分频因子timer_handler.Init.CounterMode=TIM_COUNTERMODE_UP;      //计数模式timer_handler.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;//自动重载预加载禁止HAL_TIM_Base_Init(&timer_handler);           //基本定时器初始化HAL_TIM_Base_Start_IT(&timer_handler);       // 开始定时器
}//msp函数
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim){if(htim->Instance==TIM2){__HAL_RCC_TIM2_CLK_ENABLE();        //时钟使能HAL_NVIC_SetPriority(TIM2_IRQn,2,2);//设置中断线,抢占优先级,和响应优先级HAL_NVIC_EnableIRQ(TIM2_IRQn);      // 启用TIM2中断}
}
//中断服务函数
void TIM2_IRQHandler(void){HAL_TIM_IRQHandler(&timer_handler);     
}//更新回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if(htim->Instance==TIM2){LED_8_Toggle();}
}

        请注意,实际应用中需要根据具体系统时钟频率、所需的定时精度以及是否需要中断来调整预分频因子和周期值。上述代码中的Use_TIM2_IRQ是一个布尔变量,如果设置为true,则会启用中断;如果不需要中断,可以省略中断相关的初始化和启用代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java处理word文档】

Java处理word文档 前言一、word是什么?二、Java处理word2.1、依赖包2.2、加载word样式2.3、读入文件2.4、单一样式段落2.5、复合样式段落2.6、将段落写入word2.7、word表格2.8、超链接2.9、写入样式及文件保存 总结示例源码样式xmlWordConstantWordStylesUtilWordUt…

Windows Server 2012 R2 新增D盘分区

我们经常搭建windows版本的游戏时会要在D盘上操作,今天就介绍下新的服务器如何新增一个D盘。 在"开始"图标右边有个”服务器管理器“,单击点开 点开服务器管理器后,点击“工具”打开“计算机管理” 打开计算机管理后点击“存储”-…

QT切换控件布局

1、切换前垂直布局 2、切换后水平布局 3、关键代码 qDebug() << "开始切换布局";QWidget *widget centralWidget();QLayout *layout widget->layout();if(layout){while(layout->count()){QLayoutItem *item layout->takeAt(0);if(item->layout…

【DDR 终端稳压器】Sink and Source DDR Termination Regulator [C] S0 S1 S2 S3 S4 S5 6状态

TPS51200A-Q1 器件通过 EN 功能提供 S3 支持。EN引脚可以连接到终端应用中的SLP_S3信号。当EN 高电平&#xff08;S0 状态&#xff09;时&#xff0c;REFOUT 和 VO 引脚均导通。当EN 低电平&#xff08;S3状态&#xff09;时&#xff0c;VO引脚关断并通过内部放电MOSFET放电时…

关于SwapBuffers(HDC);的效率问题

最近笔者在尝试使用SwapBuffers(hdc);函数时&#xff0c;遇到了严重的效率问题&#xff0c;通过查阅资料发现了是因为windows中开启垂直同步的原因&#xff0c;由于垂直同步会强制画面的刷新率匹配显示器的刷新率&#xff0c;因此开启垂直同步之后&#xff0c;若画面的刷新率快…

决策树的学习(Decision Tree)

1.对于决策树的概念&#xff1a; **本质上&#xff1a;**决策树就是模拟树的结构基于 if-else的多层判断 2.目的&#xff1a; 对实例进行分类的树形结构&#xff0c;通过多层判断&#xff0c;将所提供的数据归纳为一种分类规则。 3.优点&#xff1a; 1.计算量小&#xff0c;…

源代码防泄密的重要性

​源代码”作为互联网企业的核心资产之一&#xff0c;其安全性至关重要。源代码泄露不仅可能导致企业丧失技术优势&#xff0c;还可能引发知识产权纠纷、增加竞争对手的市场竞争力&#xff0c;甚至可能被用于恶意目的&#xff0c;如开发恶意软件等。因此&#xff0c;保护源代码…

婉转之声舞台之梦

【婉转之声&#xff0c;舞台之梦】&#x1f3a4; 当旋律响起&#xff0c;每个音符承载着梦想与热情。#婉拒歌手# #歌手2024# 话题引爆网络&#xff0c;观众的期待值冲破天际&#xff0c;但谁才是那婉拒名单上的神秘巨星&#xff1f;[嘻嘻] 今夜&#xff0c;我们不谈已成的荣耀&…

QT的TcpServer

Server服务器端 QT版本5.6.1 界面设计 工程文件&#xff1a; 添加 network 模块 头文件引入TcpServer类和TcpSocket&#xff1a;QTcpServer和QTcpSocket #include <QTcpServer> #include <QTcpSocket>创建server对象并实例化&#xff1a; /*h文件中*/QTcpServer…

使用Django中的Session和Cookie来传递数据

在Django中&#xff0c;Session和Cookie是两种常用的机制&#xff0c;用于在服务器端和客户端之间传递数据。下面我将简要介绍如何在Django中使用Session和Cookie来传递数据。 1、问题背景 在 Django 中&#xff0c;可以使用 request.POST 来获取表单提交的数据。但是&#xf…

Activity7框架使用学习记录

用于记录在项目中使用工作流框架 PROC_DEF_ID: 流程定义的id bpmn文件中对流程图定义的id TASK_DEF_KEY:任务定义的id bpmn文件中对每个任务定义的id PROC_INST_ID:流程实例id 启动一个流程时对流程定义的id PROC_DEF_ID&#xff08;流程定义的ID&#xff09;&#xff1a;在…

iOS plist文件增删改查

一. plist简介 plist文件&#xff0c;即属性列表文件&#xff0c;全名是Property List&#xff0c;这种文件的扩展名为.plist&#xff0c;因此&#xff0c;通常被叫做plist文件。它是一种用来存储串行化后的对象的文件&#xff0c;在iOS开发中通常用来存储用户设置&#xff0c…

《自卑与超越》

Ⅰ 内容简介 《自卑与超越》是阿德勒从个体心理学观点出发&#xff0c;阐明人生道路和人生意义的通俗性读物。但通俗中包含着极深的哲理和巨大的学术价值。在《自卑与超越》中&#xff0c;作者提出&#xff1a;每个人都有不同程度的自卑感&#xff0c;因为没有一个人对其现时的…

GaussDB数据库SQL系列-复合查询

目录 一、前言 二、复合查询基础 三、实际应用示例 1、使用UNION合并查询结果 2、使用INTERSECT找出共同元素 3、使用EXCEPT排除特定结果 四、高级技巧 1、子查询实例 2、JOIN的应用 五、总结 一、前言 GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;具…

按键的短按、长按和连续的划分

在实际生活中&#xff0c;我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少&#xff0c;我了解的按键短按后松开和长按后松开的应用是在点动控制和长动控制中。这里主要讨论按键的短按、长按和连续这三种…

postgresql主从复制

用vmware 搭建的两台虚拟机 操作系统&#xff1a;Ubuntu 24.04 Server版 数据库&#xff1a;postgresql 16.2 主库&#xff1a;192.168.2.11 从库&#xff1a;192.168.2.12 如果遇到网络无法上网&#xff0c;可参考一下 Vmware 搭建的Ubuntu 24.04 网络配置-CSDN博客 1.两…

LED显示屏的部件组成及相关知识

LED显示屏作为现代化信息传播的重要载体&#xff0c;在各种场所得到了广泛应用。其功能强大&#xff0c;效果生动&#xff0c;但其背后的部件组成却是复杂而精密的。本文将介绍LED显示屏的主要部件组成及相关知识&#xff0c;以帮助读者更好地理解LED显示屏的工作原理和构造。 …

day07beef-xss之根据beef-xss获取cookies

1.安装 apt-get update apt-get install beef-xss 若报错运行不了尝试 apt remove ruby apt remove beef-xss apt-get install ruby apt-get install ruby-dev libpcap-dev gem install eventmachine apt-get install beef-xss 2.运行 beef-xss 运行成功会自动弹出浏览框。 攻…

提高Rust安装与更新的速度

一、背景 因为rust安装过程中&#xff0c;默认的下载服务器为crates.io&#xff0c;这是一个国外的服务器&#xff0c;国内用户使用时&#xff0c;下载与更新的速度非常慢&#xff0c;因此&#xff0c;我们需要使用一个国内的服务器来提高下载与更新的速度。 本文推荐使用字节…

企业微信集成H5授权登录相关知识(二)

流程&#xff1a; 1.前端请求企业微信获取code&#xff1a;官网网页授权链接 2.企业微信返回的code请求后端判断是否已绑定系统账户 3.后端根据企业微信code&#xff0c;accessToken获得userId 4.userId获取user进行oauth2授权方式进行免密登录 相关知识&#xff1a; 一&a…