Главная » Микроконтроллеры
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 150 руб.
От пользователей

Похожие статьи:


STM32F4. Урок 14 - АЦП с использованием DMA

Данная библиотека позволяет использовать АЦП для циклического считывания данных с применением DMA, что позволяет снизить нагрузку на процессор. Максимальное количество используемых каналов - 16.
Настройка производится (как и в STM32F4. Урок 5 - работа с АЦП) в C-файлы. В нем для каждого канала АЦП должен быть назначен вывод.
К данной статье прикреплено 2 библиотеки, ADC1 и ADC2, которые можно использовать одновременно, если необходимо более 16 каналов АЦП.

Пример работы:

В примере используется только три канала АЦП для иллюстрации работы: PA3, PC4, PC5.

Требования:

   Подключаемые модули CooCox-IDE : GPIO, ADC, DMA.
   Поддерживаемые библиотеки: отсутствуют.

Перечисления:

typedef enum {
  ADC_PA3 = 0,  // PA3
  ADC_PC4 = 1,  // PC4
  ADC_PC5 = 2   // PC5
}ADC1d_NAME_t;

Функции:

void UB_ADC1_DMA_Init(void);                       // инициализация и запуск
uint16_t UB_ADC1_DMA_Read(ADC1d_NAME_t adc_name);  // зачитать данные в канале АЦП

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 03.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der ADC-DMA-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_led.h"
#include "stm32_ub_adc2_dma.h"

int main(void)
{
  uint16_t adc_wert;

  SystemInit(); // Инициализация настроек кварца

  UB_Led_Init(); // Инициализация светодиодов
  UB_ADC2_DMA_Init(); // Инициализация ADC2 с режиме DMA

  while(1)
  {
	// Зачитать данные АЦП и зажечь соответствующий светодиод
    adc_wert=UB_ADC2_DMA_Read(ADC_PA3);
    if(adc_wert>2048) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);

	// Зачитать данные АЦП и зажечь соответствующий светодиод
    adc_wert=UB_ADC2_DMA_Read(ADC_PC4);
    if(adc_wert>2048) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);

	// Зачитать данные АЦП и зажечь соответствующий светодиод
    adc_wert=UB_ADC2_DMA_Read(ADC_PC5);
    if(adc_wert>2048) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);
  }
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
ELM327 OBD II — адаптер с поддержкой CAN Набор для сборки - LED лампа
вверх