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

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


Реклама ⓘ

STM32F4. Урок 25 - Работа с ШИМ

Данная библиотека была написана для работы с ШИМ микроконтроллера STM32.
STM32F4 имеет много (14) таймеров и почти все из них поддерживают функцию ШИМ. Для упрощения работы было выбрано 4 таймера общего назначения (TIM2 TIM3, TIM4 TIM5), выбраны они потому, что на канал приходится по 4 таймера.

Было написано 4 библиотеки для каждого таймера, содержание которых отличается только именами переменных и функций.
Таким образом использование четырех библиотек по четыре канала дает шестнадцать выводов ШИМ.
Имена используемых ШИМ должны быть указанны в H-файле и им должен быть присвоен вывод порта в C-файле (в примере используется только два канала ШИМ).
В H-файле указывается скважность и частота ШИМ. Эти настройки будут работать для всех четырех каналов таймера.

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

Требования:

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

Перечисления (для ШИМ на TIM2):

typedef enum {
  PWM_T2_PB11 = 0,  // ШИМ на TIM2 к PB11
  PWM_T2_PA2  = 1   // ШИМ на TIM2 к PA2
}PWM_TIM2_NAME_t;

Функции (для ШИМ на TIM2):

void UB_PWM_TIM2_Init(void);                                 // инициализация ШИМ на TIM2
void UB_PWM_TIM2_SetPWM(PWM_TIM2_NAME_t pwm, uint16_t wert); // установить значение ШИМ

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

//--------------------------------------------------------------
// File     : main.c
// Datum    : 26.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 PWM-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_pwm_tim4.h"
#include "stm32_ub_adc1_single.h"

int main(void)
{
  uint16_t ad_wert;

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

  // инициализация АЦП
  UB_ADC1_SINGLE_Init();

  // инициализация  ШИМ на Timer4
  // настройки в H-файле:
  //   разрешение = 8bit (0...255)
  //   частота = 1kHz
  //   канал 1 на PD12
  //   канал 2 на PD14
  UB_PWM_TIM4_Init();

  // на PD12 установлена скважность 25%
  UB_PWM_TIM4_SetPWM(PWM_T4_PD12,64);

  // на PD14 установлена скважность 50%
  UB_PWM_TIM4_SetPWM(PWM_T4_PD14,128);

  while(1)
  {
    // читать значение АЦП на PA3
	ad_wert=UB_ADC1_SINGLE_Read_MW(ADC_PA3);
	// конвертировать 12 бит в 8 бит
	ad_wert=(ad_wert>>4);
	// установить значение ШИМ на PD12
	UB_PWM_TIM4_SetPWM(PWM_T4_PD12,ad_wert);
  }
}

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

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

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

Теги:

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

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

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

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

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

0
Sem #
Спасибо автору за хорошую статью!
Ответить
0
RomulRS #
При нажатии F7, ругается error: 'PWM_T4_PD14' undeclared here (not in a function)
Ответить
0
savs #
Скачай оригинальный проект, а точнее в папке
ub_lib косяк с синтаксисом, заменяешь папку из оригинального проекта - все идет
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Конструктор для сборки: предусилитель на лампе 6N3 ELM327 OBD II — адаптер с поддержкой CAN
вверх