STM32F4. Урок 21 - АЦП в груповому режимі

Ця бібліотека призначена для роботи з АЦП в груповому режимі. У цьому режимі може бути створено список каналів АЦП (не більше чотирьох каналів), значення яких циклічно опитуються. Необхідно лише запитувати виміряні значення. Виводи використовуваних АЦП повинні бути вказані в H-файлі та вказані відповідні налаштування порту в С-файлі.
У бібліотеці є два однакових файли бібліотеки для роботи з ADC1 та ADC2 (вони відрізняються лише іменами використовуваних змінних).
У прикладі використовуються три виводи, визначені як аналогові: PA3, PC4, PC5.

Вимоги:

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

Перерахування:

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

Функції:

void UB_ADC1_IG_Init(void);                       // ініціалізація та запуск
uint16_t UB_ADC1_IG_Read(ADC1i_NAME_t adc_name);  // читати дані з каналу АЦП

Приклад використання:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 22.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-Injected-Group-Library
// Hinweis  : Ці два файли повинні бути на 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_adc2_ig.h"
#include "stm32_ub_led.h"

int main(void)
{
  uint16_t adc_wert;

  SystemInit(); // Ініціалізація налаштувань кварца

  // Ініціалізація ADC2 та початок вимірювання
  UB_ADC2_IG_Init();
  // Ініціалізація світлодіодів
  UB_Led_Init();

  while(1)
  {
	  // Канал АЦП для вимірювання даних на PA3 та включення синього світлодіода
	  adc_wert=UB_ADC2_IG_Read(ADC_PA3);
      if(adc_wert>2048) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);
	  // Канал АЦП для вимірювання даних на PC4 та включення червоного світлодіода
	  adc_wert=UB_ADC2_IG_Read(ADC_PC4);
      if(adc_wert>2048) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);
	  // Канал АЦП для вимірювання даних на PC5 та включення зеленого світлодіода
	  adc_wert=UB_ADC2_IG_Read(ADC_PC5);
      if(adc_wert>2048) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);
  }
}

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

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

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

Top