搜索
bottom↓
回复: 8

从FreeRTOS移植而来软件定时器,可用于没有跑系统的单片机中

[复制链接]

出0入0汤圆

发表于 2023-6-30 15:19:47 | 显示全部楼层 |阅读模式
介绍
从FreeRTOS移植而来软件定时器,所有接口和FreeRTOS一致,可用于没有跑系统的单片机中

如何使用
下面给出一个使用的示例。其中dk_timer_task()方法可以放置在主循环中,也可以放置在滴答定时器中断里。如果放在主循环中,滴答定时器中断非必须,只要能提供一个计数器即可

#include "dk_soft_timer.h"

static uint32_t s_TickCount = 0;

//滴答定时器中断
void SysTick_Handler(void) {
    s_TickCount++;

    //软件定时器任务,可以放在主循环或者滴答定时器中断中。最终定时器的回调是在dk_timer_task调用的地方执行的。
    // dk_timer_task();
}

uint32_t sys_get_tick_count(void) {
    return s_TickCount;
}

//定时器回调,和FreeRTOS一样
static void s_time_callback( TimerHandle_t xTimer ) {
    printf("hello world!\r\n");
}

int main() {
    //初始化滴答定时器1ms节拍
    SysTick_Config(GetSysClock() / 1000);

    //软件定时器初始化
    dk_soft_timer_init(&sys_get_tick_count);

    //初始化一个软件定时器,和FreeRTOS一样使用
    xTimerHandle timer_handle = xTimerCreate("timer_handle", 10000, pdTRUE, (void *)0, s_time_callback);
    if (timer_handle != NULL) {
        xTimerStart( timer_handle, 0 );
    }

    while (1) {
        //软件定时器任务,可以放在主循环或者滴答定时器中断中。最终定时器的回调是在dk_timer_task调用的地方执行的。
        dk_timer_task();
    }
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出45入38汤圆

发表于 2023-6-30 15:59:56 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2023-6-30 16:25:27 | 显示全部楼层

???????

出0入17汤圆

发表于 2023-6-30 17:18:32 | 显示全部楼层
这个点子不错,用裸奔系统的定时器或者大循环代替原来的定时任务

出0入0汤圆

发表于 2023-6-30 23:06:54 | 显示全部楼层
不错,关注。

出0入0汤圆

 楼主| 发表于 2023-7-4 16:03:36 | 显示全部楼层
最新的代码,修复了定时器无法停止的问题


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入76汤圆

发表于 2023-7-4 21:55:28 | 显示全部楼层
先点个赞不错!
但若是裸机跑,还是感觉是还是复杂化了,相比较而言,个人还是比较推崇 那个"小小调度器";
同时也喜欢用,同样是基于systick的1ms计数器主线的(g_u32SystickCounter相当于一个伪时间戳), 在while大循环里 直接查询判断DelayTimeOut(&TimerID[n], 100),执行相应任务,简单清晰明了

出0入0汤圆

 楼主| 发表于 2023-7-5 09:24:19 | 显示全部楼层
foxpro2005 发表于 2023-7-4 21:55
先点个赞不错!
但若是裸机跑,还是感觉是还是复杂化了,相比较而言,个人还是比较推崇 那个"小小调度器";
...
(引用自7楼)

看了下小小调度器,不得不说确实精妙,有用的知识又增加了,哈哈哈

出0入0汤圆

发表于 2023-7-6 18:04:35 | 显示全部楼层
中国移动OneOS的软件定时器,能不能剥离操作系统单独移植?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 15:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表