# SWTimer **Repository Path**: milkli/swtimer ## Basic Information - **Project Name**: SWTimer - **Description**: 使用硬件定时器作为时基,分出多个定时器,参考MultiTimer修改。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-08-27 - **Last Updated**: 2022-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SWTimer SWTimer 介绍 使用硬件定时器作为时基,分出多个定时器,参考MultiTimer修改。 ## 使用方法 0.先初始化软件定时器的头节点(仅需在初始化时初始化一次,后边添加软件定时器则不用再重复初始化。) SWTimerInstall(); 1.申请一个定时器管理handle SWTimer Timer1 = {0}; 2.初始化定时器对象,注册定时器回调处理函数,设置延迟启动时间(ms),循环定时触发时间 void Timer1CB(void) { printf("Timer1CB\r\n"); } void SWTimerInit(SWTimer* Handle,void (*timeout_cb)(), unsigned long timeout, unsigned long repeat) SWTimerInit(&Timer1,Timer1CB,40,0); 3.启动定时器 SWTimerStart(&Timer1); 4.设置硬件定时器中断循环调用 *SWTimerTicks()* 以提供时间基准 void HAL_SYSTICK_Callback(void) { SWTimerTicks(); } 5.在主循环调用定时器后台处理函数 int main() { ... while(1) { ... SWTimerLoop();; } } ## Examples #include "swtimer.h" SWTimer Timer1 = {0}; void Timer1CB(void) { printf("Timer1CB\r\n"); } void main(void) { Uart1Init(); Timer0Init(); Timer0Start(); SWTimerInstall(); SWTimerInit(&Timer1,Timer1CB,40,0); SWTimerStart(&Timer1); while(1) { SWTimerLoop(); } } void HAL_SYSTICK_Callback(void) { SWTimerTicks(); //25ms ticks } ```