硬件:
STM32F103C8T6
目标:
1、定时采样,根据当前采样结果决定下一步的操作
2、为降低MCU工作负担,决定采取定时器定时触发ADC+DMA,在ADC回调函数中进行判断
问题:
目前只能做到,通过定时器中断,激活ADC_DMA。是否能不需要定时器中断,自动一直定时ADC_DMA?
设置如下:
volatile uint16_t ADC_ConvertedValue; //ADC采样的数据
main()
{
...
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_ConvertedValue, 1);
...
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==&htim2)
{
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_ConvertedValue, 1); //目前需要定时激活ADC,目标想不需要这语句
}
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
//这里对每一个ADC_ConvertedValue值进行判断和处理
}
|