STM32中, CubeMX生成的Systick和hal_timebase相关

  • Post author:
  • Post category:其他


在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 版权协议,转载请附上原文出处链接和本声明。