[STM32L0] HAL_GetTick() 导致MCU卡死?

[复制链接]
645|12
yunfu1117 发表于 2025-8-29 12:34 | 显示全部楼层 |阅读模式
我有一个基于STM32L051R8 MCU的空项目。项目是通过以下工具创建的:

CubeIDE版本:1.8.0

构建版本:11526_20211125_0815

仅配置了外部8MHz晶振的振荡器引脚、RCC_MCO以及SWDIO+SWCLK。

使用HSE作为PLL源,并将PLLCLK用作SYSCLK。

在函数HAL_RCC_ClockConfig(...)中以下代码:

else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)

{

while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)

{

if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
{
return HAL_TIMEOUT;
}
}

}

MCU调用了信号处理程序0xffffffff9和0xffffff1。

是否有办法让程序正常运行起来?


内政奇才 发表于 2025-8-29 15:55 | 显示全部楼层
可能Systick 未正确初始化。
duo点 发表于 2025-8-29 15:55 | 显示全部楼层
PLL 配置错误吧。。
onlycook 发表于 2025-8-29 15:56 | 显示全部楼层
如果 Systick 中断被禁用或优先级配置错误,HAL_GetTick() 无法更新,导致 HAL_GetTick() - tickstart 计算错误。
内政奇才 发表于 2025-8-29 15:56 | 显示全部楼层
可能中断优先级或 Systick 冲突。
海滨消消 发表于 2025-8-29 15:57 | 显示全部楼层
可能外部 8MHz 晶振未起振导致 HSE 无法稳定工作,PLL 无法锁定。
豌豆爹 发表于 2025-8-29 15:57 | 显示全部楼层
HAL_Init() 在 HAL_RCC_ClockConfig() 之前调用。
麻花油条 发表于 2025-8-29 15:58 | 显示全部楼层
检查 Systick 配置,如果未使用 HAL_Init(),需手动初始化 Systick。
七毛钱 发表于 2025-8-29 15:58 | 显示全部楼层
用示波器或逻辑分析仪确认 8MHz 晶振是否起振。检查 PCB 布局。
星辰大海不退缩 发表于 2025-8-31 23:07 | 显示全部楼层
PLL很有必要的
AdaMaYun 发表于 2025-8-31 23:27 | 显示全部楼层
软件设置一般是有问题
szt1993 发表于 2025-8-31 23:57 | 显示全部楼层
ST的基础知识问题了解一下
szt1993 发表于 2025-8-31 23:57 | 显示全部楼层
ST的基础知识问题了解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

64

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部