stm32中软件定时器啥情况需要用,感觉这个挺复杂的
typedef struct soft_timer { uint32_t timer_count; //定时器用的计数器 uint32_t time_out; //阀值 void (*time_out_callback)(void *param); //回调函数 void *param; //回调函数参数 uint8_t timer_flag; //定时器属性标志 }soft_timer_t; 复制代码
软件定时器用在有操作系统的程序里。
使用定时器,肯定是要求定时到达后执行某些操作。
简单的程序里,定时到达后执行的操作基本上是固定的。
但复杂的程序,不同时候需要完成不同的任务。
另外,很多硬件定时器要用于PWM等工作。留给程序员使用的硬件定时器就不多了。
使用软件定时器就更加灵活
比如,参数3——回调函数。启动软件定时器时,告诉它,定时到达去执行这个回调函数啊。
接下来的代码可以继续执行别的任务,不必操心定时到达后的处理工作。
这个是操作系统的定时器,stm32没有软件定时器,库里面有个HAL_Delay延时
操作系统的软件定时器是个单独的任务实现的,定时时间到了,callback 代码就运行,可以是单次定时器,也可以是循环定时
硬件定时器怎么用,这个也怎么用,还比较简单好用,这个只有定时功能没有stm32 timer功能多。
比如你的代码不是硬件控制精准定时,都可以用软件定时器,不占用timer外设没有数量限制,唯一不好的地方就是精度不高,还可能收中断影响多个时钟干扰。