zoukankan      html  css  js  c++  java
  • 分享一个简单易用的软件定时器模块(MultiTimer)——基于keil+stm32f103zet+hal库(裸机实现)

    公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer

    今天看了看,简单的,就移植了~

    且看文档的说明,

    =================================

    分享一个简单易用的软件定时器模块——MultiTimer。源码地址:

    https://github.com/0x1abin/MultiTimer

    简介

    MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。

    使用方法

    1、先申请一个定时器管理handle

    struct Timer timer1;

    2、初始化定时器对象,注册定时器回调处理函数,设置定时时间(ms),循环定时触发时间

    timer_init(struct Timer* handle, void(*timeout_cb)(), uint32_t timeout, uint32_t repeat);

    3、启动定时器

    timer_start(&timer1);

    4、设置1ms的硬件定时器循环调用 timer_ticks() 以提供时间基准

    void HAL_SYSTICK_Callback(void){    timer_ticks();}

    5、在主循环调用定时器后台处理函数

    int main() 
    {
    timer_init(&timer1, timer1_callback, 1000, 1000); //1s loop    
    timer_start(&timer1);

    timer_init(&timer2, timer2_callback, 50, 0); //50ms delay

    timer_start(&timer2);

      while(1)
      {
    ...
        timer_loop();

      }
    }

     ============================================

    移植很简单,

    新建stm32的cubemx工程,生成keil5工程,然后添加源码MultiTimer,在main函数中也实例,因此可以参考。

    注意头文件要添加。

    我的工程截图如下:

    1、添加头文件

     

     2、定义handle

     

     3、初始化,并注册定时任务函数

     

     4、启动while循环

     

     5、重新定义systick回调函数,去掉__weak

     

    6、定时任务函数

     

    7、编译

     

  • 相关阅读:
    Delphi接口的底层实现
    Delphi实现图像文本旋转特效完整代码
    delphi 原创应用工具箱
    用Delphi制作DLL
    Delphi在StatusBar上绘制ProgressBar
    Delphi之TDrawGrid绘制
    基于Delphi的接口编程入门
    Delphi中For In 语法应用实例
    w3c与微软(IE)事件注册区别 -Tom
    js 函数-Tom
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12021124.html
Copyright © 2011-2022 走看看