在 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 指的是啥?的主要内容,如果未能解决你的问题,请参考以下文章