重置后,stm32f051r8t6 TIM14中断处理程序不起作用

时间:2019-01-02 12:40:13

标签: c embedded stm32 interrupt-handling stm32f0

我正在使用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 */

 }

1 个答案:

答案 0 :(得分:1)

您需要添加以启用中断。

  MX_TIM14_Init();

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

  HAL_TIM_Base_Start(&htim14);

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