ST意法半导体
直播中

李春梅

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

在STM32CubeIDE创建的项目中SysTick不会中断如何处理?

我使用 STM3CubeIDE 为 STM32l496ve 芯片创建了一个默认项目(没有更改设置)。它生成一个主文件,其中包含:
  • int main(void)
  •   HAL_Init();
  •   SystemClock_Config();
  •   while (1)
  •   {
  •   }
  •   return 0;
  • }
以及在 stm32l4xx_it.c 中定义的 Systick_Handler:
  • void SysTick_Handler(void)
  • {
  •   /* USER CODE BEGIN SysTick_IRQn 0 */
  •   /* USER CODE END SysTick_IRQn 0 */
  •   HAL_IncTick();
  •   /* USER CODE BEGIN SysTick_IRQn 1 */
  •   /* USER CODE END SysTick_IRQn 1 */
  • }
启动文件startup_stm32l496vetx.s在向量表中定义了SysTick:
  • _pfnVectors:
  •         .word        _estack
  •         .word        Reset_Handler
  •         .word        NMI_Handler
  •         .word        HardFault_Handler
  •         .word        MemManage_Handler
  •         .word        BusFault_Handler
  •         .word        UsageFault_Handler
  •         .word        0
  •         .word        0
  •         .word        0
  •         .word        0
  •         .word        SVC_Handler
  •         .word        DebugMon_Handler
  •         .word        0
  •         .word        PendSV_Handler
  •         .word        SysTick_Handler
  •         .word        WWDG_IRQHandler
  •         ...
  •         ...
但尽管如此,SysTick 似乎并没有被中断。HAL_Delay() 会导致无限循环,并且永远不会调用 SysTick_Handler() 中 HAL_IncTick 处的断点。








回帖(1)

李淑华

2023-1-12 14:25:56
所以我找到了原因。我通过链接器脚本将 FLASH 的开头移动到不同的地址。我忘了在 stm32l496xx.h 中相应地更改 FLASH_BASE 定义
举报

更多回帖

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