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 і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить задавати питання на його сайті німецькою або англійською мовами.
Прикріплені файли:
- ub_stm32f4_adc_injected_v100_rus.rar (7 Кб)
- Demo_21_ADC_InjGroup_rus.rar (178 Кб)