STM32的IAP跳转到APP后卡死在HAL_Delay()延时函数问题分析与解决

程序在从IAP跳转到APP后,在MX_SDADC1_Init()中因HAL_Delay()卡死,原因是uwTick未计数。解决方法是在APP的HAL_Init()后开启中断,通过__ASM(CPSIEI)和__set_FAULTMASK(0)来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:

因为使用了操作系统,所有使用TIM2做为HAL_Delay()延时函数的时基。当程序充IAP跳转到APP之后,程序卡死在MX_SDADC1_Init();中,因为该函数调用了HAL_Delay()延时函数;而uwTick一直没有计数导致。

解决方案:

在APP的程序中,调用HAL_Init();之后,开启中断即可解决该问题。

   __set_FAULTMASK(1); 
  
  /* set vector table*/
  SCB->VTOR = FLASH_BASE | 0x1F800; //
  /* USER CODE END 1 */ 

  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
  /* open interruption*/
  __ASM("CPSIE  I");   // 
  __set_FAULTMASK(0);  // 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值