TIM 实现定时中断【STM32L4】【实操】

使用定时器实现定时中断的功能:比如每1ms进入中断处理函数

使用STM32CubeMX配置TIM初始化

 先了解每个参数的含义,在进行配置

Counter Settings:  计数器基本设置

        Prescaler(PSC):  预分频器,设置预分频器系数

        Counter Mode:  技术模式,上/下/中央对齐

        Counter Period(AutoReload Register):  计数周期,ARR的值

        Internal Clock Division:  内部时钟频率,对输入到定时器内部的时钟进行分频,位于预分频器后面,作用是:数字滤波、信号同步、噪声抑制

        auto-reload preload:  自动装载预装载,影子寄存器,是否启用

Trigger Output(TRGO) Parameters:  触发输出参数 

        Master/Slave Mode:  主从模式选择

        Trigger Event Selection:  触发事件选择,触发输出TRGO

 **************************

使用的L4进入定时器的频率是 80Mhz

我们选择80分频,就是1Mhz,1000 / 1000 000 = 0.001s,就是1ms

int main(void)
{HAL_Init();SystemClock_Config();MX_TIM4_Init();// 以中断模式启动定时器// 启动后 会一直循环 不会停止if (HAL_TIM_Base_Start_IT(&htim4) != HAL_OK){Error_Handler();}while (1){}
}// 用户的中断回调函数 编写自己所需功能
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM4){// 比如使 LED 亮灭HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); }
}
void MX_TIM4_Init(void)
{ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; // TIM时钟配置结构体TIM_MasterConfigTypeDef sMasterConfig = {0};  // TIM主机配置结构体htim4.Instance = TIM4;htim4.Init.Prescaler = 79;        // 分频系数htim4.Init.CounterMode = TIM_COUNTERMODE_UP;      // 向上计数模式htim4.Init.Period = 1000;     // 计数周期htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;        // 内部时钟分频htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;    // 自动重装载影子寄存器if (HAL_TIM_Base_Init(&htim4) != HAL_OK){Error_Handler();}sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;    //  选择内部时钟源if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK){Error_Handler();}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;       // 主输出触发源复位sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;      // 不使能主机模式if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK){Error_Handler();} }void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{if(tim_baseHandle->Instance==TIM4){ __HAL_RCC_TIM4_CLK_ENABLE();        // 打开TIM4时钟/* TIM4 interrupt Init */HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0);      // 设置TIM4中断优先级HAL_NVIC_EnableIRQ(TIM4_IRQn); }
}

 


 

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

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

相关文章

Elasticsearch 的聚合(Aggregations)操作详解

目录 1. 概述 2. 聚合类型分类详解 2.1 桶聚合(Bucket Aggregations) 2.1.1 基础桶聚合 2.1.2 特殊桶聚合 2.1.3 高级桶聚合 2.2 指标聚合(Metric Aggregations) 2.2.1 单值指标聚合(Single-value Metrics&am…

电子电气架构 --- 高阶智能驾驶对E/E架构的新要求

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

0.深度学习环境配置步骤

0.深度学习环境配置步骤 这里介绍深度学习环境配置详细步骤,包括安装软件,每一步都有安装时的截图(后续持续更新,敬请关注) 目录如下: 1.安装anaconda 2.安装CUDA 3.安装CU_DNN 4.安装pytorch

在 Azure 中配置 SMS 与 OTP

1. Azure Active Directory B2C (AAD B2C) 中的 SMS/OTP 身份验证 1.1. 现状与原理:电话注册与登录 Azure Active Directory B2C (AAD B2C) 提供了将电话号码作为用户身份标识进行注册和登录的功能,旨在为用户提供一种便捷的替代传统电子邮件或用户名登录…

简单实现支付密码的页面及输入效果

干我们这行,风吹日晒不到,就怕甲方突发奇想。 今天客户要做一个安全密码前置校验,还要做成支付宝那种效果。ps:android端 心理吐槽了一万遍以后,还是得面对现实。 先用通义问一遍,给了两个方案,要么自己写&…

proxmox 解决docker容器MongoDB创建报错MongoDB 5.0+ requires a CPU with AVX support

目录 最简单直接的方式 测试MongoDB docker compose的安装shell脚本 验证访问 最简单直接的方式 让虚拟机直接使用宿主机的物理 CPU 功能标志。 打开 Proxmox Web UI。 选择你的 VM → 硬件 (Hardware) → CPU → 点击 编辑 (Edit)。 将 CPU 类型改为 host。 确认并重启…

向前滚动累加SQL 实现思路

一、业务背景在经营分析场景里,我们经常需要回答:“截至今天,过去 N 天/月/周累计发生了多少?”“把维度切到省、市、房型、项目经理、代理商等,结果又是什么?”本文用两个真实需求做演示:以天为…

Spring AI(14)——文本分块优化

RAG时,检索效果的优劣,和文本的分块的情况有很大关系。SpringAI中通过TokenTextSplitter对文本分块。本文对SpringAI提供的TokenTextSplitter源码进行了分析,并给出一些自己的想法,欢迎大家互相探讨。查看了TokenTextSplitter的源…

Python----大模型(RAG 的智能评估-LangSmith)

一、LangSmith LangSmith是LangChain的一个子产品,是一个大模型应用开发平台。它提供了从原 型到生产的全流程工具和服务,帮助开发者构建、测试、评估和监控基于LangChain 或其他 LLM 框架的应用程序。 安装 LangSmith pip install langsmith0.1.137 官网…

磁悬浮轴承转子不平衡质量控制策略设计:原理、分析与智能实现

磁悬浮轴承(Active Magnetic Bearing, AMB)以其无接触、无摩擦、高转速、无需润滑等革命性优势,在高端旋转机械领域(如高速电机、离心压缩机、飞轮储能、航空航天动力系统)展现出巨大潜力。然而,转子固有的质量不平衡是AMB系统面临的核心挑战之一,它诱发强同步振动,威胁…

C++查询mysql数据

文章目录 文章目录 1.前言 2. 代码 (1)执行查询SQL (2)获取结果集 (3)遍历结果集(获取字段数、行数) (4)释放资源 3.完整代码 1.前言 我们成功连接数…

【论文阅读】-《GenAttack: Practical Black-box Attacks with Gradient-Free Optimization》

GenAttack:利用无梯度优化的实用黑盒攻击 Moustafa Alzantot UCLA Los Angeles, U.S.A malzantotucla.edu Yash Sharma Cooper Union New York, U.S.A sharma2cooper.edu Supriyo Chakraborty IBM Research New York, U.S.A supriyous.ibm.com Huan Zhang UCLA Los…

CT、IT、ICT 和 DICT区别

这四个术语:CT、IT、ICT 和 DICT,是信息通信行业中常见的核心概念,它们既有演进关系,又有各自的技术重点。🔹 一、CT(Communication Technology)通信技术**定义:**以语音通信为核心的…

Effective C++ 条款4:确定对象被使用前已先被初始化

Effective C 条款4:确定对象被使用前已先被初始化核心思想:永远在使用对象前将其初始化。未初始化对象是未定义行为的常见来源,尤其对于内置类型。 1. 内置类型手动初始化 int x 0; // 手动初始化 const char* text &quo…

LangSmith的配置介绍

文章目录注册及登录生成API KeyLangSmith的配置方式一:放运行环境里方式二:写代码里执行代码查看LangSmith上是否看到本次运行的项目记录LangSmith的其他注意注册及登录 首先使用邮箱注册一个账号及设置密码,等收到收到邮件后,进…

Linux的生态与软件安装

坚持用 清晰易懂的图解 代码语言,让每个知识点变得简单! 🚀呆头个人主页详情 🌱 呆头个人Gitee代码仓库 📌 呆头详细专栏系列 座右铭: “不患无位,患所以立。” Linux的生态与软件安装前言目录…

3.4 安全-分布式-数据库-挖掘

一、数据库的安全数据库里面的安全措施:用户标识和鉴定:用户的账户口令等存取控制:对用户操作进行控权,有对应权限码才能操作。密码存储和传输:加密存储。视图的保护:视图需要授权审计:专门的文…

多线程 Reactor 模式

目录 多线程 Reactor 模式的核心动机 多线程演进方向 多线程 Reactor 模型结构 多线程 EchoServer 实现核心部分 Handler 的多线程化 多线程 Reactor 的三个核心点 本篇文章内容的前置知识为 单线程 Reactor 模式,如果不了解,可点击链接学习 单线程…

[NLP]多电源域设计的仿真验证方法

多电源域设计的仿真验证方法 1. 更复杂的 Testbench 例子(多电源域、复杂低功耗场景) 假设有两个电源域 PD1 和 PD2,分别对应控制信号 pwr_sw_ctrl1、iso_ctrl1、ret_ctrl1 和 pwr_sw_ctrl2、iso_ctrl2、ret_ctrl2,且两域之间有通信。 RTL 端口声明(简化版) module top…

Apache Ignite 中 WHERE 子句中的子查询(Subqueries in WHERE Clause)的执行方式

这段内容是关于 Apache Ignite 中 WHERE 子句中的子查询(Subqueries in WHERE Clause)的执行方式 的说明。理解这段内容对于编写高效的 SQL 查询、避免性能瓶颈非常重要。下面我将为你 逐句解释并深入理解这段内容。🧾 原文翻译 解释 原文&a…