реклама на сайте
подробности

 
 
> DMA(UART+ADC) ARM, stm32f103c8t6. STM32Cube+System Workbench for STM32
4th
сообщение Jun 30 2016, 19:25
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 30-06-16
Пользователь №: 92 386



Вечер добрый. Чисто в учебных целях было решено оцифровывать сигнал с ADC1, сохранять его в uint16_t переменной и в прерывании от DMA(ADC1) копировать результат в массив uint8_t mass[2] и запускать отправку по UART через тот же DMA. А в прерывании DMA(UART) запускать преобразование АЦП заново. И так по кругу...
В режиме отладки при включенных бряках на DMA1_Channel1_IRQHandler (АЦП) и DMA1_Channel1_IRQHandler (UART) этот результат достигается. Но при роботе в реальном времени (ну или без брейкпоинтов) происходит следующее:
  • из main запускается HAL_ADC_Start_DMA(&hadc1, (uint32_t *) &adc_buffer, sizeof(adc_buffer));
  • при завершении преобразования уходит в прерывание DMA1_Channel1_IRQHandler;
  • копирует данные из adc_buffer в uart_buffer[]; запускает посылку по UART: HAL_UART_Transmit_DMA(&huart2, uart_buffer, sizeof(uart_buffer));
  • и останавливает АЦП: HAL_ADC_Stop_DMA(&hadc1);
  • после этого он должен попасть в обработчик завершения передачи DMA1_Channel7_IRQHandler, но этого не происходит (но происходит только при пошаговой отладке)

В общем не могу понять что мешает ему работать как задумано.
Ниже куски кода, которые наверняка захотят увидеть:
Код
int main(void)
{

  HAL_Init();

  SystemClock_Config();
  
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC1_Init();
  MX_USART2_UART_Init();

  HAL_ADC_Start_DMA(&hadc1, (uint32_t *) &adc_buffer, sizeof(adc_buffer));

  while (1) {  }

}

void DMA1_Channel1_IRQHandler(void)
{
   HAL_DMA_IRQHandler(&hdma_adc1);

  uart_buffer[0]=adc_buffer>>8;
  uart_buffer[1]=adc_buffer;
  HAL_UART_Transmit_DMA(&huart2, uart_buffer, sizeof(uart_buffer));
  HAL_ADC_Stop_DMA(&hadc1);

}

void DMA1_Channel7_IRQHandler(void)
{
  
  HAL_DMA_IRQHandler(&hdma_usart2_tx);

HAL_ADC_Start_DMA(&hadc1, (uint32_t *) &adc_buffer, sizeof(adc_buffer));        //заходит сюда только в пошаговом режиме

}


Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 08:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016