SysTick_Handler在裸机和RTOS中的区别

1. SysTick_Handler()在程序里由谁调用?

SysTick_Handler()是Cortex-M 内核的系统滴答定时器中断服务函数,整个过程:硬件自动完成。

  • SysTick 定时器:每过 1ms(或你配置的时间)就自动溢出一次;
  • 溢出 = 触发中断;
  • 中断触发 = CPU 自动跳去执行 SysTick_Handler。

2. SysTick 定时器和通用/基本/高级定时器有区别么?不是说如果使用操作系统开发的话,需要指定一个定时器作为RTOS系统的时间计数么?

  • SysTick 定时器 和 通用 / 基本 / 高级定时器 完全不是一回事!
  • RTOS 确实需要一个定时器做系统心跳,但 99% 的 RTOS 都优先用 SysTick,不用普通定时器!

RTOS 设计标准就是用 SysTick

正确做法(行业标准):

SysTick → 给 RTOS 用

普通定时器 TIMx → 给业务功能用(电机、编码器、PWM)

3. 将内核定时器SysTick 指定为RTOS得系统心跳,那hal库里面的那些延时Hal_Delay(),他的延时计数用到的定时器是什么?

HAL_Delay () 用的也是 SysTick!和 FreeRTOS 共用同一个 SysTick 定时器!

但一旦开启 FreeRTOS,HAL_Delay ()、 HAL_GetTick()就会自动失效、不能用了!

用了会:

  • 卡死
  • 延时不准
  • 系统崩溃

4. 使用RTOS,会在什么地方指定SysTick作为RTOS的滴答定时器呢?

真正指定 SysTick 的地方

复制代码
void xPortStartScheduler( void )

这个函数是 启动调度器的核心函数。里面一定有一段 初始化 SysTick 的代码:

复制代码
/* Configure SysTick to interrupt at the required tick rate. */
portNVIC_SYSTICK_LOAD_REG = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;
portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );
  • 设置 SysTick 重装值 → 1ms 中断一次
  • 使能 SysTick 中断
  • 启动 SysTick
    这就是:FreeRTOS 把 SysTick 变成自己的系统心跳!

5. SysTick_Handler不是弱函数么?使用FREERTOS需要显示定义么?不定义使用默认的弱函数可以么?

SysTick_Handler 默认是弱函数(__weak)。但在 FreeRTOS 里,你必须自己重新定义它,不能用默认弱函数!

用默认弱函数 = RTOS 直接死机!

默认弱函数长这样(在启动文件或 stm32xx_it.c 里):

复制代码
__weak void SysTick_Handler(void)
{
  while(1); // 死循环!
}

如果不自己写 SysTick_Handler:

SysTick 1ms 触发一次中断

进入默认弱函数

直接死循环

FreeRTOS 心跳没了 → 系统直接卡死

相关推荐
黑妹天下第一乖3 小时前
第 05 讲:阿加犀 AidCV 图像处理加速与 OpenCV 一致开发实战
开发语言·图像处理·人工智能·嵌入式硬件·数码相机·opencv·计算机视觉
这个人很懒67673 小时前
【无标题】
单片机·嵌入式硬件
ebiobiz3 小时前
Zig 工具链编译 STM32 开发指南
驱动开发·stm32·嵌入式硬件
国科安芯3 小时前
卫星推进与轨道维持系统中脉冲调制控制器的精确时序与抗辐射可靠性研究
嵌入式硬件·抗辐射·卫星姿轨控·as32x601·在轨服务
Zwawa3 小时前
反馈:让系统知道自己做得对不对
c语言·单片机·嵌入式
黑妹天下第一乖3 小时前
第 04 讲:阿加犀 AIMO 模型优化平台与 Model Farm 模型广场实战
人工智能·嵌入式硬件·矩阵·架构·iot
黑妹天下第一乖3 小时前
第08讲 · 视觉与相机流水:Spectra ISP 与实时检测
人工智能·嵌入式硬件·数码相机·机器人·接口隔离原则·iot
yuehuaxin013 小时前
LP3710S 原边 PSR|3C 认证适配器 Peak‑Load 瞬时冲击、EMI 传导骚扰样机避坑解析
嵌入式硬件·适配器模式·智能硬件
恒锐丰科技林技术员4 小时前
EG3014S 半桥驱动芯片:无刷电机与功率变换的优选栅极驱动器件
经验分享·嵌入式硬件·硬件工程
沐欣工作室_lvyiyi5 小时前
基于单片机的智能提醒药盒设计(论文+源码)
单片机·嵌入式硬件