无锡科技工场 发表于 2025-6-20 09:00:50

{:4_196:}{:4_196:}

白水大虾2016 发表于 2025-6-20 20:22:59

今天还是第九集 数码管

laohu_zhou 发表于 2025-6-21 08:27:56

打卡学习

fs_ajin 发表于 2025-6-21 09:18:01

今日打卡

srkxrolz 发表于 2025-6-21 10:29:36

打卡
第八课:systick与task周期调度
结构体
typedef struct
{
    u8 Run;
    u16 TIMECont;
    u16 TRITime;
    void (*TaskFunc)(void);
} Task;
用一个结构体管理任务信息
在系统中准备一个tasklist并确定最大长度(因为涉及到内存分配问题这里使用固定任务长度,相当于是预先确定task数组的内存大小)
#define TASK_MAX 10
Task TaskList={0};
初始化tasklist这个可以在main中调用一次,当然不调用也没什么问题
void TASK_Init(void)
{
    u8 i;
    for (i = 0; i < TASK_MAX; i++)
    {
        TaskList.Run = 0;
        TaskList.TIMECont = 0;
        TaskList.TRITime = 0;
        TaskList.TaskFunc = NULL;
    }
}
暴露三个函数用于添加,执行,运行状态管理
void task_add(u8 index, void (*taskFunc)(void), u16 triTime)
{
    if (index < TASK_MAX)
    {
        TaskList.Run = 1;
        TaskList.TaskFunc = taskFunc;
        TaskList.TRITime = triTime;
    }
}
void task_run(void)
{
    u8 i;
    for (i = 0; i < TASK_MAX; i++)
    {
    //    if (TaskList.TRITime!=0)
    //    {
    //     printf("Run:task[%d]: tr:%d tm:%d RUN:%d \r\n",i,TaskList.TRITime,TaskList.TIMECont,TaskList.Run);
    //    }
       

        if (TaskList.Run==1)
        {
             printf("Run:task[%d]: tr:%d tm:%d RUN:%d \r\n",i,TaskList.TRITime,TaskList.TIMECont,TaskList.Run);
            if (TaskList.TaskFunc != NULL)
            {
                TaskList.TaskFunc();
                 TaskList.Run=0;
            }
        }
    }
}
void task_timer(void)
{
    u8 i;
    for (i = 0; i < TASK_MAX; i++)
    {
   
        if (TaskList.Run == 0 && TaskList.TRITime != 0)
        {
            TaskList.TIMECont++;
            if (TaskList.TIMECont >= TaskList.TRITime)
            {
                TaskList.TIMECont=0;
                TaskList.Run = 1;
            }
                 
        }
    }
}


然后将task_run在main中的while里面循环调用即可,
状态控制程序库丢到while运行 或者放到定时器中断里面精确控制

乐高 发表于 2025-6-21 16:56:20

终于等到更新了

mechray 发表于 2025-6-21 18:43:57

终于更新了。看到第23集,这个PCA感觉和定时器功能一样啊,而且还是不带自动重装载功能的定时器。那用PCA有啥好处呢。

windsoft77 发表于 2025-6-21 19:04:00

{:wunai:}

laohu_zhou 发表于 2025-6-22 08:54:09

打卡学习

白水大虾2016 发表于 2025-6-22 11:19:35

今天继续:第九集 数码管
页: 154 155 156 157 158 159 160 161 162 163 [164] 165 166 167 168 169
查看完整版本: 《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套