在STM32 CubeMX生成的代码中,用户代码部分的注释中ADC_IRQn是指什么?

时间:2019-06-20 17:21:49

标签: stm32 stm32cubemx

在Cube MX生成的[devicename] _it.c文件中,每个IRQ处理程序中都有多个用户代码段,例如下面的ADC_IRQHandler

void ADC_IRQHandler(void)
{
   /* USER CODE BEGIN ADC_IRQn 0 */

   /* USER CODE END ADC_IRQn 0 */

   /* USER CODE BEGIN ADC_IRQn 1 */

   /* USER CODE END ADC_IRQn 1 */
}

多个部分的目的是什么?

1 个答案:

答案 0 :(得分:0)

如果您在CubeMX中打勾选项以生成对HAL ADC处理程序的调用,并重新生成代码,则会将该调用放在两个用户代码部分之间的HAL_ADC_IRQHandler()处。您可以在HAL内容之前和之后都有用户代码。

但是,我发现用IRQHandler函数中的HAL代码和用户代码来处理中断是一个糟糕的主意,因为这通常意味着两次读取寄存器,这可能会产生一些不良的副作用。如果调用了HAL处理程序,则最好将用户代码放在适当的回调函数中,该函数将在HAL发现中断原因时调用。