首页 > 其他分享 >Tim定时器初始化的方法

Tim定时器初始化的方法

时间:2024-07-02 18:09:29浏览次数:13  
标签:TIM2 初始化 定时器 InitStructrue TIM 中断 NVIC Tim TimeBaseInitTypeStructrue

#include "stm32f10x.h"                  // Device header


void TimerInit(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
	TIM_InternalClockConfig(TIM2);
	
	// 初始化配置时基单元
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitTypeStructrue;
	TIM_TimeBaseInitTypeStructrue.TIM_ClockDivision = TIM_CKD_DIV1; // 是否分频
	TIM_TimeBaseInitTypeStructrue.TIM_CounterMode = TIM_CounterMode_Up; // 中心对齐模式1
	TIM_TimeBaseInitTypeStructrue.TIM_Period = 10000 - 1;  // 更新周期值
	TIM_TimeBaseInitTypeStructrue.TIM_Prescaler = 7200 - 1; // 预分频器值
	TIM_TimeBaseInitTypeStructrue.TIM_RepetitionCounter = 0;
	
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitTypeStructrue);
	
	// 使能中断  更新中断到NVIC的路
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
	
	
	// NVIC优先级分组
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	
	// 初始化NVIC
	NVIC_InitTypeDef NVIC_InitStructrue;
	NVIC_InitStructrue.NVIC_IRQChannel=TIM2_IRQn;
	NVIC_InitStructrue.NVIC_IRQChannelCmd=ENABLE;
	NVIC_InitStructrue.NVIC_IRQChannelPreemptionPriority=2;  // 配置抢断优先级
	NVIC_InitStructrue.NVIC_IRQChannelSubPriority=1; // 配置响应优先级
	NVIC_Init(&NVIC_InitStructrue);
	
	// 启动定时器
	TIM_Cmd(TIM2, ENABLE);
	
}


// 定时器2的中断函数
void TIM2_IRQHandler(void)
{
	// 检查一下中断是否真的触发了
	// 如果中断2的更新中断变成set了,就可以执行中断函数了
	if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		// 可以在这里执行中断事件
		
		
		// 清除中断标志位
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}
}

标签:TIM2,初始化,定时器,InitStructrue,TIM,中断,NVIC,Tim,TimeBaseInitTypeStructrue
From: https://www.cnblogs.com/Abraverman/p/18280315

相关文章

  • Visual C++ generate uuid via UuidCreate and CoCreateGuid,get time now,write stri
    //ConsoleApplication3.cpp:Thisfilecontainsthe'main'function.Programexecutionbeginsandendsthere.//#pragmacomment(lib,"rpcrt4.lib")#include<windows.h>#include<chrono>#include<ctime>#include&l......
  • Python类中的初始化方法理解
    在Python类的初始化方法(__init__方法)中,通常会执行以下操作:1、设置实例属性:这些属性将用于存储与实例相关的数据。属性名通常以self.开头,以便它们可以在类的其他方法中访问。例如:self.attribute_name=value2、传递并存储参数:初始化方法通常会接受参数,这些参数可以用于定制......
  • Kubernetes k8s pod 生命周期 init容器(初始化容器) 钩子配置
    目录Pod生命周期Init容器 初始化容器使用案例 初始化容器生产应用主容器 容器钩子:postStart和preStop文档中的YAML文件配置直接复制粘贴可能存在格式错误,故实验中所需要的YAML文件以及本地包均打包至网盘链接:https://pan.baidu.com/s/1RMVT8hj_rELprNeTlX10Vg ......
  • ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
    ONNXRuntime简介ONNXRuntime是一个跨平台的推理和训练机器学习加速器。ONNX运行时推理可以实现更快的客户体验和更低的成本,支持来自深度学习框架(如PyTorch和TensorFlow/Keras)以及经典机器学习库(如scikit-learn、LightGBM、XGBoost等)的模型。ONNX运行时与不同的硬件、......
  • 解决TensorFlow中的FailedPreconditionError:未初始化的变量
    解决TensorFlow中的FailedPreconditionError:未初始化的变量......
  • 动态添加Timeline轨道和片段
    上图是利用代码制作的,下图是原来的样子:如下代码是动态创建各种Timeline轨道的代码:(控制角色碰撞到Cube触发以下的Timeline动画)usingCinemachine;usingUnityEngine;usingUnityEngine.Events;usingUnityEngine.Playables;usingUnityEngine.Timeline;publiccla......
  • 修改element-ui日期下拉框datetimePicker的背景色样式
    如图: 1、修改背景色.el-date-picker.has-sidebar.has-time{  background:#04308D;  color:#fff;  border:1pxsolid#326AFF}.el-date-picker__header-label{  color:#ffffff;}.el-date-tableth{  color:#fff;}.el-icon-d-arrow-......
  • Optimization Algorithms 原理与代码实战案例讲解
    OptimizationAlgorithms原理与代码实战案例讲解1.背景介绍1.1问题的由来优化算法是计算机科学、工程和数学中的一个核心领域,主要用于寻找满足特定约束条件下的最佳解决方案。在现实世界中,无论是最小化成本、最大化收益、提高效率还是解决问题的不确定性,优化算法都能......
  • 乌班图Ubuntu 24.04初始化MySQL报错error while loading shared libraries: libaio.so
    由于乌班图24.04LTS已经发布了,因此准备新业务逐步往这上面迁移,毕竟支持有效期比22.04更长准备在24.04上进行MySQL的初始化,因为习惯自定义安装存储目录,所以使用mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz这个最新的二进制版本。按照22.04版本整理的安装笔记进行操作,第一步安装......
  • 解读MySQL 8.0数据字典的初始化与启动
    本文分享自华为云社区《MySQL全文索引源码剖析之Insert语句执行过程》,作者:GaussDB数据库。本文主要介绍MySQL8.0数据字典的基本概念和数据字典的初始化与启动加载的主要流程。MySQL8.0数据字典简介数据字典(DataDictionary,DD)用来存储数据库内部对象的信息,这些信息也被称......