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

Posted

技术标签:

【中文标题】在 STM32 CubeMX 生成的代码中,用户代码部分注释中的 ADC_IRQn 指的是啥?【英文标题】:In STM32 CubeMX generated code what does ADC_IRQn refer to in the user code section comments?在 STM32 CubeMX 生成的代码中,用户代码部分注释中的 ADC_IRQn 指的是什么? 【发布时间】:2019-11-03 13:44:46 【问题描述】:

在 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】:

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

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

【讨论】:

以上是关于在 STM32 CubeMX 生成的代码中,用户代码部分注释中的 ADC_IRQn 指的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

003_STM32CubeMX点灯

003_STM32CubeMX点灯

STM32-关于Proteus 仿真无法运行STM32CubeMX自动生成的代码

STM32CubeMX生成代码体积太大的问题

STM32 CubeMX 自定义代码生成

STM32-01-CubeMX