首页 > 试题广场 >

关于 FreeRTOS 软件定时器(Software Tim

[单选题]
关于 FreeRTOS 软件定时器(Software Timer)的执行语义,下列说法哪一项是正确的?
  • 定时器回调在触发该定时器的任务上下文中执行,互不影响
  • 定时器回调由一个定时器服务任务串行执行,回调中不应长时间阻塞或执行耗时操作
  • 可以在定时器回调中无限期等待互斥量(portMAX_DELAY),不会影响其他定时器回调
  • xTimerStart() 只能在中断中调用,任务上下文中调用会导致断言失败
任务(Task): 一个独立的执行流,拥有自己的栈、优先级、状态。它是系统调度的基本单元。
上下文(Context)指CPU在某时刻执行时所处的环境,包括程序计数器、栈指针、寄存器等。每个任务都有自己的上下文,但“上下文”更强调执行现场,而不特指某个任务。

无论哪个任务调用 xTimerStart() 或其他定时器API启动/重置定时器,最终定时器超时时,其回调函数都是在定时器服务任务的上下文中执行的。
回调函数不会在“触发该定时器的任务”的上下文中执行。
因此A选项描述的“互不影响”前提就是错的,因为回调根本不在触发任务里跑;另外“互不影响”也不准确,因为定时器回调是串行执行的,一个回调阻塞会影响其他回调

发表于 今天 10:49:46 回复(0)