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

Программатор Pickit3
Программатор Pickit3
Паяльник с регулировкой температуры DC-DC регулируемый преобразователь 1.5-37В 2А с индикатором
вверх