我正在使用STM32CubeMX为ADC生成低级库。到目前为止,我正在使用的代码在轮询模式下使用adc正常工作。但是,我想改进程序并调用中断服务程序(ISR)。
我不确定如何使程序进入ISR。目前,我试图将我的ISR代码写在stm32l4xx_it.c文件中,如下所示:
void ADC1_IRQHandler(void)
{
/* USER CODE BEGIN ADC1_IRQn 0 */
uint8_t i;
if(LL_ADC_IsActiveFlag_EOC(ADC1))
{
adc_value[i] = LL_ADC_REG_ReadConversionData12(ADC1);
i ++;
LL_ADC_ClearFlag_EOC(ADC1);
}
else if(LL_ADC_IsActiveFlag_EOS(ADC1))
{
i = 0;
LL_ADC_ClearFlag_EOS(ADC1);
}
/* USER CODE END ADC1_IRQn 0 */
/* USER CODE BEGIN ADC1_IRQn 1 */
/* USER CODE END ADC1_IRQn 1 */
}
但是,程序从不进入此例程。是否有人对此有经验?还是使用stm LL库的示例代码?
谢谢!
您写了一些处理程序。但是
您需要配置ADC在发生顺序,转换或错误时触发中断。
您需要在NVIC控制器中启用此中断。
确保处理程序名称与您的启动代码中的弱名称相匹配(来自.s
文件)