STM32G474之TIM1更新中断

STM32G474之TIM1能产生如下的中断:

1、捕获比较1个事件(Capture compare 1 event)

用来获取“捕获输入脉冲的时间”,其次用来输出“比较输出波形”;

2、捕获比较2个事件(Capture compare 2 event)

3、捕获比较3个事件(Capture compare 3 event)

4、捕获比较4个事件(Capture compare 4 event)

5、TIM更新事件(TIM Update event)

定时器计数器溢出,产生更新事件

6、TIM刹车输入事件(TIM Break input event)

当刹车信号到达时,则产生刹车输入事件

7、TIM刹车2输入事件TIM Break2 input event

8、TIM触发器检测事件(TIM Trigger detection event)

9、TIM换向事件(TIM commutation event)

10、TIM编码器索引事件(TIM Encoder index event)

11、TIM方向更改事件(TIM Direction change event)

12、TIM索引错误事件(TIM Index error event)

13、TIM转换错误事件(TIM Transition error event)

定时器的功能太多了,从简单入手,先学习定时器计数器溢出产生中断。这个功能是比较常用,所以先学习

测试程序如下:

#include "Timer1.h"
#include "LED.h"
#include "stm32g4xx_hal.h"

void Timer1_Init(void);

void Timer1_Init(void)
{
    TIM_HandleTypeDef htim1;  //TIM1句柄

    RCC_ClkInitTypeDef    clkconfig;
    uint32_t              uwTimclock = 0;
    uint32_t              pFLatency;
    uint32_t              uwPrescalerValue = 0;

  __HAL_RCC_TIM1_CLK_ENABLE();//使能“定时器1”的时钟,Enable TIM1 clock
  HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);//Get clock configuration
  uwTimclock = HAL_RCC_GetPCLK2Freq();
    //读取PCLK2的时钟频率,Return the PCLK2 frequency
    //若PCLK2的分频器值为1,则和SystemCoreClock的值相等
    //uwTimclock=170000000Hz

    uwPrescalerValue = (uint32_t) ((uwTimclock / 10000U) - 1U);
    //uwPrescalerValue=17000

  htim1.Instance = TIM1;
  htim1.Init.Period = (1000000U / 1000U) - 1U;
    //定时器周期999
  htim1.Init.Prescaler = uwPrescalerValue;
    //设置TIM1预分频器为uwPrescalerValue
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    //设置时钟分频系数,TIM1_CR1中的CKD[9:8]=00b,tDTS=ttim_ker_ck;
    //溢出时间为(990+1)*1*17000/170000000/1=0.1秒

  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.RepetitionCounter = 0;//重复计数(1-0)次,产生1次中断,比较重要
    htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
    //使能“自动重装载”
  HAL_TIM_Base_Init(&htim1);

  HAL_TIM_Base_Start_IT(&htim1);
  HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);//使能TIM1产生中断
  HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 5, 0U);
    //设置NVIC中断分组4:4位抢占优先级,0位响应优先级
    //选择中断优先级组4,即抢占优先级为4位,取值为0~15,响应优先级组为0位,取值为0
    //这里设置TIM1中断优先级为5

}

//TIM1“更新中断”和TIM16中断,共用一个中断源,TIM1每0.1秒中断一次
void TIM1_UP_TIM16_IRQHandler(void)
{

    if( (TIM1->SR & TIM_FLAG_UPDATE) == TIM_FLAG_UPDATE)
  {//读取TIM1状态寄存器TIMx_SR的bit0(UIF),UIF=1表示产生了“TIM1更新事件”
        if( (TIM1->DIER & TIM_IT_UPDATE)  == TIM_IT_UPDATE )
    {//读取TIM1中断使能寄存器TIMx_DIER的bot0(UIE),查看UIE=1?
      TIM1->SR = ~(TIM_IT_UPDATE);
            LED1_Toggle(); //LED1引脚输出电平翻转
    }
  }
}

测试结果:

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

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

相关文章

【HTML源码】上传即可使用的在线叫号系统源码

这个叫号系统的过程是这样的 接了一个任务,某学校要对学生进行逐个面试,希望能有类似医院门诊那种叫号系统。 条件:首先说硬件,就是教室里边一台笔记本电脑,同屏到教室外面的电视机。 需求:软件需求是可…

如何解决U盘无法压缩卷或删除卷的问题

U盘在日常使用中,偶尔会遇到无法压缩卷或删除卷的情况。出现这些问题通常与U盘的磁盘状态或文件系统有关。本文将介绍一种有效的解决方法,通过使用Windows自带的磁盘管理工具diskpart来解决这些问题。 一、问题原因 U盘无法压缩卷或删除卷的常见原因包…

扩博智能× Milvus:图像检索助力零售商品图像高效标注

大家好,我是上海扩博智能技术有限公司的Frank,负责算法工程相关的工作。很高兴能在 Milvus 社区和大家分享我们在图像检索方面的经验。 01 扩博智能公司简介 扩博智能 Clobotics 成立于 2016 年,总部位于上海长宁。我们聚焦计算机视觉和机器学…

el-table 合并单元格后 hover错乱

hover后的效果图: 1:在el-table上加入这三个属性 :row-class-name"rowClassName" cell-mouse-enter"handleMouseEnter" cell-mouse-leave"handleMouseLeave" 2:data里声明一个变量 hoverRowLike:-1 3:copy到…

自动化测试:Monkey工具实践应用~

在移动应用的自动化测试中,意外的用户操作和各种不可预见的场景往往是导致应用崩溃的主要原因。如何有效地模拟这些复杂场景,成为了测试工程师的一大挑战。而在这一过程中,Monkey工具凭借其随机化测试的独特优势,成为了许多团队的…

29 猜丁壳游戏

猜丁壳游戏 猜丁壳游戏是一个简单的石头、剪刀、布游戏,玩家与计算机进行对战。以下是游戏的详细说明和使用指南。 游戏界面 游戏界面分为几个部分: 标题栏:显示游戏名称“猜丁壳”。选择区域:玩家可以选择石头、剪刀或布。控制…

Python简易IDE工作界面制作

、 休闲一下,学习编程还是要学习一些界面编程,能够根据需要制作图形操作界面,这样我们开发的程序才能方便操作和使用,同时获得更友好的人机交互体验。下面是一个用PyQt5制作的简易界面,供大学参考。如下图所示&a…

【vscode】vscode+cmake+llvm+ninja开发环境的搭建(draft)

文章目录 前言1 软件、工具和插件安装1.1 vscode安装1.2 cmake安装1.3 安装LLVM1.4 安装Ninja1.5 vscode插件安装 2 工具链和CMakeLists2.1 工具链(toolchain.cmake)2.2 CMakeLists.txt2.3 基本语法注释 前言 本文是一个使用vscode的小白扫盲贴。 所谓工…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍: 框架易于功能扩展,代码维护,方便二次开发,帮助开发者简单高效降低二次开发成本,满足专注业务深度开发的需求。 百度网盘下载 图片:

从Python转向MicroPython使用详解

概要 随着物联网(IoT)设备的普及和嵌入式系统的广泛应用,MicroPython逐渐成为Python开发者们探索嵌入式编程的重要工具。MicroPython是一种精简版的Python,专为资源受限的设备而设计,能够在微控制器和其他嵌入式设备上运行。对于习惯使用Python的开发者而言,转向MicroPy…

海大集团的可观测平台建设实践

海大集团介绍 海大集团是以科技为主导的中国农业龙头企业,1998年成立于广东广州,目前业务涵盖饲料、种苗、动保疫苗、智慧养殖、食品加工等现代农牧全产业链,在全球拥有分子公司逾600家、员工达4万人,位列2023中国企业500强第238…

Python爬虫(一文通)

Python爬虫(基本篇) 一:静态页面爬取 Requests库的使用 1)基本概念安装基本代码格式 应用领域:适合处理**静态页面数据和简单的 HTTP 请求响应**。 Requests库的讲解 含义:requests 库是 Python 中一个…

【HTML】模拟二级菜单【附源代码】

模拟二级菜单 HTML部分&#xff1a; <!DOCTYPE html>: 声明文档类型为HTML5。<html>: HTML文档的根元素。<head>: 包含文档的元数据&#xff0c;如字符集、标题和样式。 <meta charset"utf-8">: 设置文档的字符编码为UTF-8。<title>:…

公网信息泄露监测(网盘、暗网、搜索引擎、文档平台)思路分享

一、背景 众测项目中白帽可能会提交一些信息泄露漏洞&#xff0c;同时甲方可会收到一些白帽提交的公网信息泄露文件漏洞&#xff0c;例如百度网盘被员工分享某些文件或者某些包含敏感信息的文件可以通过如谷歌、百度等搜索引擎通过特定语法搜索到。为了可以及时发现泄露的文件…

【计算机组成原理】六、总线:1.总线概论(分类、性能指标、总线标准)

六、总线 文章目录 六、总线1.总线概论2.分类2.1按数据传输格式2.2按总线功能(连接的部件)2.3按时序控制方式2.2-2系统总线的结构 3.性能指标6.总线标准6.1系统总线6.2局部总线6.3设备总线、通信总线6.4为何串行总线取代并行总线&#xff1f; 1.总线概论 总线被刻蚀在主板上 总…

【3.6】贪心算法-解救生艇问题

一、题目 第 i 个人的体重为 people[i]&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit 。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 二、解题思路 题目要求每艘船最多能载两人&…

【58同城-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

【零知识证明】MiMC哈希函数电路

1 哈希电路 哈希函数电路实现&#xff1a; pragma circom 2.0.0;// y (x k c) ^ 5 // 输入信号x, k &#xff0c;常量c // base x k c // base2 base * base // base4 base2 * base2 // base5 base *base4 // 输出 ytemplate MIMC5(){signal input x;signal input k…

【SpringCloud Alibaba】(九)学习 Gateway 服务网关

目录 1、网关概述1.1、没有网关的弊端1.2、引入 API 网关 2、主流的 API 网关2.1、NginxLua2.2、Kong 网关2.3、Zuul 网关2.4、Apache Shenyu 网关2.5、SpringCloud Gateway 网关 3、SpringCloud Gateway 网关3.1、Gateway 概述3.2、Gateway 核心架构 4、项目整合 SpringCloud …

信息安全--网络安全体系与安全模型(二)

其他安全模型 ■纵深防御模型&#xff1a;①安全保护②安全监测③实时响应④恢复 ■分层防护模型&#xff1a;参考OSI模型&#xff0c;对保护对象进行层次化保护。 ■等级保护模型&#xff1a;将信息系统划分成不同安全保护等级&#xff0c;采取相 应的保护措施。 ■网络生…