[求助] stm32f030如何单独关闭ADC中断

bigbat   2021-7-25 09:35 楼主

我把stm32f030的adc通道配置成定时器触发中断模式,并且开启了adc中断,我在中断中加入一变量ADC_conver作为中断完成标志,但是发现整个系统总是反复的进入中断,使得主程序无法进入循环中,我想在中断后就把ADC的中断单独关闭,其它的中断如uart继续打开,如何单独关闭和打开ADC中断,网上的资料都是关闭整个系统的中断,没有单独关闭的代码。

while (1)
  {
    /* USER CODE END WHILE */
     if(Adc_conver == 0x01)
     {
				 Adc_conver = 0x00;
			   for(i=0;i<20;i++)
				 {
						printf("%c: %x %d\n",aRxBuffer[i],ADC_ConvertedValue[i],i);
						ADC_ConvertedValue[i] = 0x0000;
				 }	
				 printf("Line a End\n");
				 HAL_Delay(200);
		 }
		 //HAL_Delay(20);
    /* USER CODE BEGIN 3 */
  }
/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] This function handles ADC global interrupt.
  */
void ADC1_IRQHandler(void)
{
  /* USER CODE BEGIN ADC1_IRQn 0 */

  /* USER CODE END ADC1_IRQn 0 */
  HAL_ADC_IRQHandler(&hadc);
  /* USER CODE BEGIN ADC1_IRQn 1 */
  Adc_conver = 0x01;
  /* USER CODE END ADC1_IRQn 1 */
}

 

 

回复评论 (1)

一般是这个

HAL_NVIC_ClearPendingIRQ(ADC_IRQn);   //清除中断

点赞 (1) 2021-7-26 11:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复