Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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  : Diese zwei Files muessen auf 8MHz stehen
//              "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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

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

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

Теги:

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

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

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

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

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

0
demo1420 #
Воо как раз есть вопрос.
Можно ли измерить питание проца не использую внешне подключенную ножку?
У меня вот мысля. Сконфигурировать ножку на вход, и сделать пул Ап. Думаю как раз получу подтяжку к питанию через 10к.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Набор для сборки - УНЧ 2х60 Вт на TDA7294 Радиореле 220В
вверх