一个全局的定时事件发生器

从定时器到信号发生器:GTM模块在汽车超声驱动中的硬件级实现 在嵌入式系统与汽车电子领域,定时器(Timer)和脉冲宽度调制(PWM)是生成控制信号的基础技术。其核心原理是通过可编程硬件计数器产生精确的时间基准和数字波形。这项技术的价值在于能以极低的CPU开销实现高精度、多通道的时序控制,是电机控制、电源管理和传感器驱动的关键。在汽车超声波泊车辅助(UPA)等应用场景中,对多路40kHz驱动信号的频率稳定性、脉冲数量及发射序列的同步性提出了严苛要求。通用定时器模块(GTM)作为英飞凌Aurix MCU中的高级协处理器,其内部的ARU(仲裁路由单元)和ATOM(ARU连 阅读详情

我们在开发iOS App过程中常会有这样的需求,就是每隔一段时间内做一些类似刷新数据的操作。比如股票行情软件,需要每隔几秒更新股指、股票价格。这样的定时事件可能有很多种,发生事件的间隔都各不相同。我们可以实现一个全局的事件发生器,统一管理这些定时事件,简化操作。IFTimer类就是为此目的而来。

IFTimer的功能

  1. 添加、删除定时事件
  2. 添加、删除接收事件的对象
  3. 开始、停止事件发生器
  4. 设置事件发生器的灵敏度

IFTimer的原理

  1. 利用NSTimer作为事件的发生器
  2. 利用NSNotificationCenter作为事件的注册和通知

示例代码讲解

image
1. 创建IFTimer实例并初始化定时事件。在一个App里,你只需要创建一个实例即可。

[_timer addEvent:EVT_NAME1 interval:[NSNumber numberWithFloat:1.0]];
[_timer addEvent:EVT_NAME2 interval:[NSNumber numberWithFloat:5.0]];
[_timer addEvent:EVT_NAME3 interval:[NSNumber numberWithFloat:10.0]];

这里添加了三个事件,分别间隔1秒、5秒、10秒发生一次。
2. 注册需要监听这些事件的对象

[IFTimer addObserver:self selector:@selector(updateEvt1:) evtName:EVT_NAME1];
[IFTimer addObserver:self selector:@selector(updateEvt2:) evtName:EVT_NAME2];
[IFTimer addObserver:self selector:@selector(updateEvt3:) evtName:EVT_NAME3];

每个事件名对应一个响应的函数。
3. 启动事件发生器

[_timer start];

4.处理事件响应函数

- (void)updateEvt1:(NSNotification*)sender
{
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        self._evtCount1++;
        [_lable1 setText:[NSString stringWithFormat:@"%@ comes, count %ld", EVT_NAME1, self._evtCount1]];
    }];
}

5.不需要再监听事件时,可以移除事件监听

[IFTimer removeObserver:self evtName:EVT_NAME1];
[IFTimer removeObserver:self evtName:EVT_NAME2];
[IFTimer removeObserver:self evtName:EVT_NAME3];

其他

IFTimer是100毫秒检查一次定时事件是否已到,你可以通过下面的接口调整这个事件,可以加快或减慢检查的频率

- (void)setActiveInterval:(NSTimeInterval)interval;

代码已放到GitHub,点击下载。如有帮助,请多点赞。

51单片机定时器2 3种工作模式对比:自动重装、捕获与波特率发生器 本文深入解析51单片机定时器2的三种工作模式:16位自动重装、捕获与波特率发生器模式,详细对比其原理、配置方法和应用场景。通过实际代码示例展示如何实现精密定时、脉冲测量和串口通信,帮助开发者高效利用定时器2资源解决嵌入式系统中的时序控制问题。 阅读详情

相关推荐

从PWM到性能分析:ZYNQ全局定时器的6种高阶玩法(Vivado 2021.1实测)

本文深入探讨了ZYNQ全局定时器的6种高阶应用,包括构建纳秒级硬实时延迟函数、实现多定时器联动与复杂波形合成、打造轻量级性能分析工具链、构建事件时间戳系统、实现软硬件协同调试时间同步以及动态频率监测。通过Vivado 2021.1实测,展示了如何利用其64位高精度特性,精确测量代码执行时间并优化系统性能,为嵌入式开发提供实用技巧。

weixin_29210727的博客 287

Vue定时执行任务(0点任务)

【代码】Vue定时执行任务(0点任务)

Liu_BS的博客 1209

NE555信号发生器怎么测频率?单片机定时器当计数器用的保姆级教程

本文详细介绍了如何利用单片机定时器的计数模式精准测量NE555信号发生器产生的频率,特别适合蓝桥杯参赛者和嵌入式开发者。通过硬件配置、定时器模式解析、双定时器协同方案及精度优化技巧,提供了一套完整的频率测量解决方案,并涵盖数码管显示与异常处理等实用内容。

weixin_30383279的博客 456

vue定时任务

【代码】vue定时任务。

m0_61103773的博客 893

手把手教你用STM32打造多功能信号发生器【附完整代码】

本文手把手教你使用STM32微控制器打造多功能信号发生器,详细讲解硬件连接、CubeMX配置、波形生成算法及频率调节原理。项目支持生成正弦波、方波、三角波、锯齿波和PWM波,频率范围100Hz-10kHz可调,幅度0-3.3V可调,并附完整代码实现,适合嵌入式开发初学者学习实践。

wind6的博客 788

TSMaster Python小程序入门避坑指南:从环境配置到第一个LIN信号发生器

本文详细介绍了如何使用TSMaster Python小程序开发LIN信号发生器,从环境配置到核心功能实现。涵盖Python环境设置、定时器配置、LIN报文发送等关键步骤,并提供调试技巧与性能优化建议,帮助汽车电子开发者快速上手TSMaster脚本化开发。

weixin_30755393的博客 382

vue 定时任务设置

下面代码有设置定时任务,和清除定时任务的方法。

阿涩的博客 1618

ESP32-C61系统定时器SYSTIMER与TIMG定时器组深度解析

系统定时器(SYSTIMER)是嵌入式MCU中提供高精度、低抖动、跨核一致时间基准的核心模块,其基于硬件独立计数单元与事件驱动机制,实现纳秒级时间戳和tickless调度;而通用定时器组(TIMG)则通过可配置时钟源、54位计数器与自动重载功能,支撑周期性任务、看门狗保护及中断触发等工程需求。二者在ESP32-C61中形成互补架构:SYSTIMER保障全局时间确定性,TIMG优化局部任务执行效率。典型应用场景包括RTOS低功耗唤醒、传感器同步采样、精密脉冲生成与硬件闭环控制。本文深入剖析SYSTIMER寄存

weixin_42589700的博客 57

vue前端--vue定时任务

【代码】vue前端--vue定时任务。

KaNoha33的博客 1974

20、定时事件(Timer Event)

用作边界事件时,任务执行到节点时,定时器开始计时,这个功能用作任务超时处理挺有用。 https://docs.camunda.org/manual/latest/reference/bpmn20/events/timer-events/#time-date Time Date: 指定的时间执行,如2022-08-29T12:13:14Z 2022-08-29T12:13:14+08:00(东八区) Time Duration: 过多长时间后任务开始执行,如PT1H3M 表示过1小时3分钟就开始执行。 T

leyoliu的博客 1669

LabVIEW定时功能实战详解与技巧

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)作为一种图形化编程语言,广泛应用于测试、测量和控制工程领域。定时功能在LabVIEW中占有重要地位,它能够确保应用程序在精确的时间控制下执行。无论是数据采集、信号处理、还是控制执行,定时功能都至关重要。在LabVIEW中,定时器控件是一种用于处理时间事件和控制执行周期的特殊控件。它允许开发者实现精确的时间控制,包括启动、停止、暂停和重置时间等操作。

weixin_42311427的博客 1174

单片机定时器与DAC实战:从零构建电压方波发生器

在嵌入式系统与电子设计领域,定时器和数模转换器(DAC)是构建信号发生系统的两大核心模块。定时器通过精准计时产生周期性中断,是波形生成的“心脏”,而DAC则负责将数字量转换为连续的模拟电压输出。理解定时器的工作模式、中断服务程序(ISR)的编写以及I2C总线驱动DAC的原理,是实现可编程信号源的技术基石。这种技术组合的价值在于,它能将微控制器的数字逻辑控制能力延伸到模拟世界,广泛应用于电子测量、自动控制、通信调制等场景。本文以蓝桥杯竞赛经典题目“电压方波发生器”为具体案例,深入剖析如何综合运用**定时器中断

weixin_34090562的博客 338

51单片机简易波形发生器仿真设计实践指南

51单片机作为早期的微控制器之一,在教学和工业领域都有着广泛的应用。它具备简洁的指令集、灵活的输入输出(I/O)配置、以及丰富的中断处理能力。核心部件包括一个CPU、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、串行通信接口和I/O端口。通过这些构成要素,51单片机能够在各种嵌入式系统中实现基本的控制和数据处理功能。仿真工具是现代电子设计中不可或缺的一部分,特别是在嵌入式系统和单片机开发中。这类工具能够提供一个虚拟环境,允许开发者在实际硬件搭建之前测试和验证他们的代码和硬件设计。

weixin_32535825的博客 402

使用TIM+DMA实现无CPU干预的波形发生器

本文深入探讨基于TIM、DMA和DAC硬件协同实现的无CPU干预波形发生器,通过定时器触发DMA自动传输数据至DAC,构建高精度、低延迟的纯硬件数据流闭环,显著提升系统实时性与效率。

3c4x5z6v7b的博客 1064

51单片机定时器参数计算助手

51单片机,作为一款经典的微控制器,其定时器是实现时间管理的核心功能。了解和掌握定时器的工作模式,对于执行精确的时间控制和事件调度至关重要。在51单片机中,机器周期是一个非常重要的概念,它是中央处理单元执行操作的最小时间单位。通常一个机器周期包含12个振荡周期,这是因为单片机内部是由12分频器将振荡器(晶振)的频率分频后得到的。所以,机器周期的时间长度是由外部晶振频率决定的。例如,如果使用的晶振频率为12MHz,那么每个机器周期的长度为1/(12MHz / 12)= 1μs。

weixin_30021053的博客 872

OpenEarthMap 与 xBD 数据集合并

整合好的数据:链接: https://pan.baidu.com/s/1uJ_Zg6n-s3u1D49OW52D7Q?pwd=2vwx 提取码: 2vwx完整整合步骤与代码如下。

qq_60293814的博客 1594

STM32定时器实战:用CubeMX和HAL库实现一个PWM信号发生器与测量仪

本文详细介绍了如何使用STM32定时器通过CubeMX和HAL库实现PWM信号发生器与测量仪。从硬件准备、CubeMX基础配置到PWM信号生成与输入捕获测量,提供了完整的实战指南和常见问题解决方案,帮助开发者快速掌握STM32定时器的应用技巧。

weixin_30875157的博客 599

LightTools手动创建菲涅尔透镜的5个实用技巧(附详细步骤图)

本文详细介绍了在LightTools中手动创建菲涅尔透镜的5个核心技巧,包括理解旋转体与折线原理、高效构建多齿轮廓、编辑优化、坐标系定位以及属性设置与验证。通过分步图解和实用策略,帮助用户突破内置工具限制,实现对非标准齿形和复杂光学设计的完全掌控,提升建模精度与仿真效率。

onion的博客 775

嵌入式系统事件驱动设计:GPT定时器与DMA事件路由配置详解

在嵌入式系统开发中,事件驱动架构是实现高效实时响应的核心机制。其基本原理在于,硬件事件(如定时器溢出、外设数据就绪)可直接触发特定动作,而无需CPU持续轮询。这种硬件级协同工作的价值在于,它能显著降低系统延迟、提升确定性,并最大限度减少CPU干预以实现低功耗运行。该技术广泛应用于物联网传感器数据采集、工业控制以及消费电子等对实时性要求苛刻的场景。本文聚焦于嵌入式微控制器中的事件路由配置,深入解析如何通过GPT(通用定时器)事件选择寄存器与DMA(直接内存访问)通道事件选择寄存器,构建从事件产生到自动数据搬运

weixin_30527423的博客 423

保研考研机试攻略(满分篇):第二章——满分之路上(1)

保研考研机试攻略(满分篇):第二章——满分之路上(1)2.1计算机和基础+2.2进阶背包问题+2.3毛毛虫算法

qq_63349644的博客 1195

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

STM32定时器中断教程:基于TIM的精准定时控制方法

本文详解STM32定时器TIM的原理与应用,通过配置PSC、ARR和CNT寄存器实现精准定时中断,避免CPU阻塞。结合代码演示TIM3每秒中断、外部信号计数等场景,并总结中断处理、标志清除、优先级设置等关键技巧,帮助构建高效实时嵌入式系统。

weixin_33750664的博客 354

configure: error: no acceptable C compiler found in $PATH解决方案

本文主要介绍了configure: error: no acceptable C compiler found in $PATH解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 4万+
上一篇: 最新FFMPEG一键编译指南
下一篇: Flutter实战入门系列(1)
cpluser
博客等级 码龄22年 48粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值