问题现象
在使用J-Link调试时候ADC2看门狗中断可正常进入,一旦Stop debug,ADC看门狗中断就再也不会进入了;
中断执行代码如下
uint32_t tick_record = 0;
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
{
ADC_AnalogWDGConfTypeDef AnalogWDGConfig = {0};
static uint32_t pre_tick = 0;
uint32_t cur_tick = HAL_GetTick();
tick_record = cur_tick - pre_tick;
pre_tick = cur_tick;
AnalogWDGConfig.WatchdogNumber = ADC_ANALOGWATCHDOG_1;
AnalogWDGConfig.WatchdogMode = ADC_ANALOGWATCHDOG_SINGLE_REG;
AnalogWDGConfig.Channel = ADC_CHANNEL_16;
AnalogWDGConfig.ITMode = ENABLE;
AnalogWDGConfig.HighThreshold = 3000;
AnalogWDGConfig.LowThreshold = 2700;
if(hadc == (&H_BUBBLE_ADCx))
{
LL_ADC_REG_StopConversion(hadc->Instance);
if(hadc->Instance->DR >= 3000)
{
AnalogWDGConfig.HighThreshold = 0;
HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);
}
else if(hadc->Instance->DR <= 2700)
{
AnalogWDGConfig.LowThreshold = 0;
HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
}
HAL_ADC_AnalogWDGConfig(&hadc2, &AnalogWDGConfig);
LL_ADC_REG_StartConversion(hadc->Instance);
}
}
使用定时器间隔10ms触发一次AD转换:
如果使用HAL_ADC_Start(&hadc2)启动ADC,则会出现:在使用J-Link调试时候ADC2看门狗中断可正常进入,一旦Stop debug,ADC看门狗中断就再也不会进入了;
我明明配置了看门狗中断的:
如果使用HAL_ADC_Start_IT(&hadc2):则不会有异常。
问题:
1、为什么调试状态可以进入中断,非调试状态就不行了?