程序中存在这么几个问题:
1.Run并不是用来控制任务是否启动或者停止的,这仅仅是用于调起任务运行的一个暂时标志位,手动操作会导致混乱。
2.想要在运行中改变任务的运行频率,可以在其他地方设置TRITime,这样下次重载的时候会自己重载上值的。
3.如果想要手动控制任务是否运行,可以通过在Task_Pro_Handler_Callback函数中 ,对运行程序部分进行手动限制。以下是根据你所想要程序的改动示例:
- //========================================================================
- // 函数: Task_Pro_Handler_Callback
- // 描述: 任务处理回调函数.
- // 参数: None.
- // 返回: None.
- // 版本: V1.0, 2025-02-16
- //========================================================================
- void Task_Pro_Handler_Callback(void)
- {
- u8 i;
- for (i = 0; i < Tasks_Max; i++)
- {
- if (Task_Comps[i].Run) /* If task can be run */
- {
- Task_Comps[i].Run = 0; /* Flag clear 0 */
- if (wujiflag) // 先判断标志位
- {
- if (i == 1)
- Task_Comps[i].TaskHook(); /* Run task */ // 只有任务1被运行执行
- }
- else
- {
- if (i == 1 || i == 2) // 任务1和任务2被允许执行
- {
- Task_Comps[2].TRITime = 10; // 重载值设置为10ms
- Task_Comps[i].TaskHook(); /* Run task */
- }
- }
- }
- }
- }
复制代码
|