stm32f051r8t6 TIM14 中断处理程序在复位后不工作

stm32f051r8t6 TIM14 interrupt handler not working after reset

我正在使用 STM32CubeMX 将代码生成到 IAR 中,我正在使用 stm32f051r8t6 微控制器, 我遇到的问题是,当第一次将代码加载到芯片上时,它一切正常,但是在板或 IAR 调试器上按下重启后,没有输入 TIM14 中断处理程序,但是一旦我离开调试器和再次输入,它开始工作,直到我按下重新启动。以前有人遇到过这个问题吗?我的代码如下

static void MX_TIM14_Init(void);

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if (htim->Instance == TIM14)
  {
    HAL_GPIO_WritePin(GPIOA, USART1_TE_Pin, GPIO_PIN_SET);
  }
}

int main(void)
{
   /* USER CODE BEGIN 1 */

   /* USER CODE END 1 */

   /* MCU Configuration---------------------------------------------------*/

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

 /* USER CODE BEGIN Init */

 /* USER CODE END Init */

 /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  MX_TIM14_Init();

  HAL_TIM_Base_Start(&htim14);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
 while (1)
{
FslBufferControl();
MimModeCheck();
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
static void MX_TIM14_Init(void)
{

 /* USER CODE BEGIN TIM14_Init 0 */

 /* USER CODE END TIM14_Init 0 */

 /* USER CODE BEGIN TIM14_Init 1 */

 /* USER CODE END TIM14_Init 1 */
 htim14.Instance = TIM14;
 htim14.Init.Prescaler = 47999;
 htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
 htim14.Init.Period = 1;
 htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
 if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
 {
  Error_Handler();
 }
 /* USER CODE BEGIN TIM14_Init 2 */

 /* USER CODE END TIM14_Init 2 */

 }

您需要添加以启用中断。

  MX_TIM14_Init();

  HAL_NVIC_EnableIRQ(TIM14_IRQn);   // <----------------------------

  HAL_TIM_Base_Start(&htim14);

只需检查IRQn TIM14 UG 事件编号。它们在 STM32F___.h 文件中定义的 IRQn_Type 枚举类型中定义,其中 ___ 是您的微型模型(您将在包含文件夹中找到它)