0 前言
在RTOS中,我们经常用到软件定时器来为我们处理一些对于实时性要求不高的定时任务。在裸机开发中,我们可能也有很多需要定时执行的任务,为了优雅地执行这些定时任务,本文设计一个在裸机下使用的简单软件定时器,提供类RTOS软件定时器的功能。
1 软件设计
为了使软件定时器更加灵活,软件定时器应该具备增加、删除定时任务的功能,因此我们必须设计有增加一个定时器函数、删除一个定时器函数。在《设计一个在裸机下使用的简单软件定时器(1):框架+数据结构分析》中,我们已经知道需要一个时钟滴答获取函数和定时任务回调函数,这样分析下来,我们至少需要设计4个函数。下面是这4个函数的详细设计:
1.1 检查定时器
/**
* @brief 检查定时器--中断内执行
*
*/
void check_timer(void)
{
timert