ST意法半导体
直播中

张国厚

7年用户 1407经验值
私信 关注
[问答]

在停止模式后激活SysTick不起作用怎么解决?

我正在使用 8mhz 的 STM32F070CBT,几乎所有引脚都处于活动状态(用于 GPIO、PWM、SPI、I2C 等),我正在使用定时器进入低功耗调节器的停止模式,并在唤醒后使用 GPIO 外部事件唤醒我检查了 PWM 和 GPIO 仍在工作,但 Systick 似乎已停止,因为所有延迟函数在延迟函数内的 HAL_GetTick 上进入无限循环并且 SysTick_Handler 不再被调用(我使用断点测试了它),我试图激活 SysTick再次使用:
  • 哈尔初始化();
  • HAL_ResumeTick();
  • HAL_InitTick(0);
  • SysTick->CTRL=0b011;
还尝试将 SysTick 优先级设置为 0,还尝试调用“SystemClock_Config();” 除了 SysTick 激活功能,但它也不起作用,有人知道我需要做什么才能重新激活 SysTick 吗?







回帖(1)

杨晓健

2023-1-13 11:20:10
从停止模式(在定时器中断中被调用)醒来后,我观察到 SysTick Handler 仍在工作并且不需要再次初始化,但是当我醒来后立即调用 delay 时被窃听了,所以我设置了一个标志并在 SysTick 处理程序中使用“extern int TickStart”调用它,并让它计数到 9(有点让使用 SysTick 处理程序有 9 毫秒的延迟),之后我调用了该定时器中断之外我需要的函数并且它们工作了(HAL_Delay 和所有使用它的函数),我只是观察到时钟与配置的有点不同所以我需要调用“SystemClock_Config();” 刚醒来就解决了我所有的代码问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分