参考上文:
基于STM32 CubeMX利用RTC实现带温湿度模块的万年历_涛声依旧Cjt的博客-CSDN博客
本次修改使用时间片轮询的方式来实现,主要是main函数进行了改造,其他驱动部分没有太多的变化。
给出一个典型的时间片轮询的例子如下:
// 轮询任务的结构体数组
static TASK_COMPONENTS TaskComps[] =
{{1, 5, 5, TaskKeyScan}, // 按键扫描任务,10*2ms = 20 ms 轮询一次{1, 5, 5, TaskCardScan}, // 刷卡上下限扫描,10*2ms = 20 ms 轮询一次{1, 5, 5, TaskHandleScan}, // 把手限位开关扫描,10*2ms = 20 ms 轮询一次{1, 100, 100, TaskOLED}, // OLED显示 500*2 = 1000 ms 轮询一次{1, 100, 100, TaskCountTime}, // 计时函数 500*2 = 1000 ms 轮询一次
};#define TASK_NUM 5 // 定义任务数量为5,根据实际情况调整/**********定义轮询任务结构体**********/
typedef struct
{u8 Run; // 程序运行标记:0-不运行,1运行u16 Timer