|
发表于 2023-6-15 17:01:30
|
显示全部楼层
API:
u16 usr_timer_add(void *priv, void (*func)(void *priv), u32 msec, u8 priority);
priv:定时器传递的私有参数
func:定时扫描回调函数
msec:定时时间, 单位:毫秒
priority:优先级,范围:0/1
注意事项:
1、usr_timer的参数priority(优先级)为1,使用该类定时器,系统无法进入低功耗
2、usr_timer的参数priority(优先级)为0,使用该类定时器,系统低功耗会忽略该节拍,节拍不会丢失,但是周期会变
3、usr_timer属于异步接口, add的时候注册的扫描函数将在硬件定时器中时基到时候被调用。
4、对应释放接口usr_timer_del
5、睡眠时,如果定时时间太短,容易引起系统无法进入睡眠,微秒级定时改用硬件定时
6、在某一任务重启动的定时器,在某一任务内执行,也在改任务内删除,否则会删除失败
7、定时器是任务定时器,不能在中断函数中启动
8、在精度要求不是很高时,参数priority(优先级)为0,使用高优先级priority(优先级)为1,需要注意的事项比较多,执行时有时需要对数据进行加锁保护。
如:定时启动对ADC扫描,
usr_timer_add(NULL, adc_scan, 5, 0);
————————————————
版权声明:本文为CSDN博主「rosir_zhong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rosir_zhong/article/details/120489501
|
|