分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)

Posted 记录点滴~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一个简单易用的软件定时器模块——基于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、编译

 

以上是关于分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL终极总结分享基于NPOI扩展封装的简易操作工具类库(简单灵活易用,支持导出导入上传等常见操作)

关于keil延时函数的问题,和硬件不一致

KEIL软件的使用

使用keil软件时,建的项目,为啥会自动变成压缩包

软件易用性文章分享第二篇-手机易用性: 一个经典的实验

基于Keil软件的MCU环境搭建