找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

通过定时器周期性调度任务综合例程中的一些疑问?

2024-4-15 17:05 来自 380091044 发布 @ 综合讨论

本帖最后由 380091044 于 2024-4-15 17:07 编辑



typedef struct
{
        u8 Run;//任务状态:Run/Stop
        u16 TIMCount;//定时计数器
        u16 TRITime;//重载计数器
        void (*TaskHook) (void);//任务函数
} TASK_COMPONENTS;



static TASK_COMPONENTS Task_Comps[]=
{
            //状态 计数 周期  任务函数名
                {0, 1,   1,   Sample_Display},/* 任务1:task 1 Period:1ms */
                {0, 10,  10,  Sample_MatrixKey},/*任务2: task 2 Period:10ms */
                {0, 10,  10,  Sample_adcKey},/* 任务3:task 3 Period:10ms */
                {0, 300, 300, Sample_NTC},/* 任务4:task 4 Period:300ms */
                {0, 500, 500, Sample_RTC},/*任务5:task 5 Period:500ms */
                /* Add new task here */
};//这里任务状态,都是0是停止状态是吗?

void Task_Marks_Handler_Callback(void)
{
        u8 i;
        for(i=0; i<Tasks_Max; i++)
        {
                if(Task_Comps.TIMCount)/* If the time is not 0 */
                {
                        Task_Comps.TIMCount--;/* Time counter decrement */
                        if(Task_Comps.TIMCount == 0)/* If time arrives */任务时间倒计时到0了,
                        {
                                /*Resume the timer value and try again  */
                                Task_Comps.TIMCount = Task_Comps.TRITime;//重载计数值
                                Task_Comps.Run = 1;/* The task can be run */开始任务运行是吗?感觉有点晕这点?                        }
                }
        }
}



void Task_Pro_Handler_Callback(void)
{
        u8 i;
        for(i=0; i<Tasks_Max; i++)
        {
                if(Task_Comps.Run)/* If task can be run */程序运行就清零,说不通?
                {
                        Task_Comps.Run = 0;/* Flag clear 0 */   //这里任务状态是0不是停止吗?下面一条,说是运行任务,是0运行,1停止吗?
                        Task_Comps.TaskHook();/* Run task */任务运行??
                }
        }
}

  • 最近查阅:

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-13 01:57 , Processed in 0.072703 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部