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.xdnf.cn/news/1523446.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

opencv实战项目十九:透射变换倾斜二维码校正

文章目录 前言一、实现方法二、实现代码三,效果 前言 随着科技的飞速发展,二维码作为一种信息载体,已经广泛应用于我们的日常生活中。无论是支付、身份验证还是信息传播,二维码都发挥着不可替代的作用。然而,在实际应…

TeamTalk消息服务器(群组相关)

具体的流程如下介绍,后续需要着重研究数据库相关表的结构设计。 群组信令和协议设计 enum GroupCmdID {CID_GROUP_NORMAL_LIST_REQUEST 1025,CID_GROUP_NORMAL_LIST_RESPONSE 1026,CID_GROUP_INFO_REQUEST 1027,CID_GROUP_INFO_RESPONSE 1028,// ...... 暂时省…

【Python】一文详细向您介绍 bisect_left 函数

【Python】一文详细向您介绍 bisect_left 函数 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕&#x…

项目管理:项目经理如何才能做好时间管理?

在项目管理中,时间管理是至关重要的环节。作为项目经理,有效的时间管理不仅关乎个人工作效率,更直接影响到项目的整体进度、成本控制和质量保证。 以下是一些建议,帮助项目经理更好地进行时间管理: 一、明确项目目标…

做Ozon的挣钱逻辑,选择高客单高利润的4点原因

以下是选择高客单高利润产品在 Ozon 上销售的四点原因: 一、利润空间更可观 高客单价产品单个利润高:比如销售一件高客单价的高端电子产品,其利润可能是低客单价产品的数倍甚至更多。假设一件低客单价的普通日用品利润为 5 元,而…

2024年9月7日(星期六)骑行滑草场

2024年9月7日 (星期六) 骑行滑草场,早8:30到9:00, 郊野公园西门集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:郊野公园西门集合 ,家住东,南,北的骑友在…

护眼灯真的可以保护眼睛吗?曝光劣质护眼台灯常见的三个特征

护眼灯真的可以保护眼睛吗?随着时代的发展,我们注意到越来越多的孩子开始佩戴眼镜。这一趋势引起了许多细心家长的关注,他们认识到这不仅是个别情况,而是现代生活方式和环境对孩子视力健康的挑战。自然而然地,“儿童是…

springboot名著阅读网站

基于 springbootvue实现的名著阅读网站(源码L文ppt)4-035 4 系统设计 4.1 系统概述 名著阅读网站的设计与开发是指对该系统的各个功能模块进行详细设计,力求每个模块都能够满足用户的要求,系统开发完成后还需对系统进行单元…

C语言 ——— #define 定义宏

目录 何为宏 宏的声明及其使用方式 宏中的括号是否多余 何为宏 #define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称宏 宏的声明及其使用方式 声明代码演示: #define MAX(x,y) ((x)>(y)?(x):(y)) 使用代码演示&a…

第66期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

xxe漏洞靶场实战通过

1、用nmap扫描C段,找到靶场 2、打开网址,查看robots.txt文件 3、发现有两个目录,分别查看发现一个登录页面 4、使用BP抓包,发现是xml类型 5、尝试查看/etc/passwd 文件,在尝试查看xxe.php文件,发现是编码后…

VXLAN 为何采用UDP

VXLAN 简介 VXLAN是一种网络虚拟化技术,它通过在UDP数据包中封装MAC地址和IP信息,使得二层网络(如以太网)能够跨越三层网络(如IP网络)进行扩展。这种封装方式不仅支持TCP流量的传输,还能有效处…

合宙LuatOS开发板Core_Air780EP使用说明

Core-Air780EP 开发板是合宙通信推出的基于 Air780EP 模组所开发的, 包含电源,SIM卡,USB,天线,音频等必要功能的最小硬件系统。 以方便用户在设计前期对 Air780EP模块进行性能评估,功能调试,软…

辞职一年赚了50w才知道:上班真的不赚钱。

不知不觉就进入九月了,一年一度的苹果秋季发布会又准备开始了。 听说今年iPhone系列有重磅升级,会搭载苹果智能 「Apple Intelligence」,搓搓手等着以旧换新了! 此前iPhone15 pro max系列用户已经可以享受部分AI功能,…

【C++模板初阶】

文章目录 一、泛型编程二、函数模板1.函数模板概念2.函数模板格式3.函数模板的原理4 函数模板的实例化1. 隐式实例化2. 显式实例化不同类型形参传参时的处理 5.模板参数的匹配原则 三、类模板1 类模板的定义格式2 类模板的实例化 一、泛型编程 首先大家先思考一个问题&#xff…

文字转视频软件哪个好用?揭秘创意新工具

最近,我在筹备一个小型的个人项目,需要制作一系列的教学视频,但我对视频编辑一窍不通。就在我快要放弃的时候,我发现了一些神奇的工具,它们能自动把文字变成视频! 想知道自动生成视频的软件有哪些吗&#…

nginx配置白名单服务

http { # 其他配置… # 定义一个名为 whitelist 的共享内存区域 limit_zone whitelist $binary_remote_addr 10m;server {listen 80;server_name example.com;# 白名单配置location / {# 设置只允许特定 IP 访问allow 192.168.1.100; # 允许的 IPallow 192.168.1.10…

【嵌入式学习笔记】---- OLED屏幕工作原理

1 驱动芯片SSD1603简介 1.1 SSD1603芯片图 SSD1603是一款点阵显示屏控制器,可嵌入在屏幕中,用于执行接收数据、显示存储、扫描刷新等任务驱动接口:128个SEG引脚和64个COM引脚,对应 128 64 128\times 64 12864像素点阵显示屏内置…

Gartner发布安全威胁情报产品和服务市场指南:威胁情报产品和服务需具备的8项核心能力和21项可选能力

安全和风险管理领导者很难知道哪些威胁会真正影响到他们的组织。他们应该利用这项研究来选择正确的安全威胁情报产品和服务,并更有效地了解和应对威胁形势。 主要发现 各种规模和垂直行业的企业对威胁情报 (TI) 产品和服务的需求持续增加,但许多组织仍然…

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界!

随着编程语言的不断演进,Python已经成为开发者们心目中的“瑞士军刀”。它的简洁易用、强大的库支持、广泛的应用领域,让它在人工智能、数据分析、网络爬虫、自动化办公等领域展现了无与伦比的优势。那么,如何深入掌握Python这门语言并用它解…