在STM32F1XX系列中,若使用freertos,经 CubeMX生成的代码会存在2种时基:
Systick:
来源:Systick时钟
作用:为freertos任务调度提供心跳(心跳是指通过不断的中断事件,提供不断发展的时间线,从而推动相关程序不断运行),这是强制性 的(强制是指只要用cubemx生成,就用Systick,不能用其它定时器,如果不用cubemx生成代码,这个提供心跳的定时器可以随便选)
优先级:默认最低,因为这是任务调度所需,不需太精准,且设置的太高,会影响系统实时性(影响重要中断的不能嵌套)
hal_timebase:
来源:可用的定时器,包括Systick(如果Systick不做他用的话)
作用:为hal库函数提供时基(每次中断时,uwtick++),因为一些库函数用到了超时功能,而超时判断是这样实现的:t1-t2,t1是调用超时函数前的uwtick,t2是期望的uwtick(即在t1基础上,延长多久后的uwtick)
优先级:一般取0(可屏蔽中断范围内最高),因为这个时基要求比较精准,精准体现在哪里?因为要用于超时判断!
版权声明:本文为weixin_44092095原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。