MDG_Lab

PWM на STM32F103

1 сообщение в этой теме

MDG_Lab    2

Здравствуйте! 

Ткните пожалуйста носом начинающего, как в Arduino IDE настроить частоту ШИМ. 

Работаю с STM32F103, функции analogWrite(*); pwmWrite(*); Этими функциями задаю номер порта и коэффициент заполнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Astrix77
      Добрый вечер!
      Необходимо написать код и разработать схему для контроллера управления домом:
      1й этап самый простой, необходим код для управления освещением.
      2й этап, написание кода для управления температурой дома.
      Цена и сроки договорные, подробности в личке.
      Забыл добавить. Код нужен для отладочной платы STM32VLDISCOVERY, только камень заменен на stm32f103ret6
      В начале нужна будет консультация по установке и настройке всех необходимых программ для прошивки МК
    • Автор: NDG
      Прошу помощи сообщества в решении такой проблемы.
      Имеем Attiny13 задачей которой стоит формирование ШИМ сигнала, скважность задаём состояние входов PB4 PB3 PB2. 
      Загвоздка в том, что не могу заставить тиньку сменить скважность, несмотря на то, что на прерывание по состоянию входов реагирует, значения в OCR0A заносит. Маленькое замечание в железе не делал, только в Proteus.
      Код:
      #define F_CPU 9600000
      #include <avr/io.h>
      #include <avr/eeprom.h>
      #include <avr/interrupt.h>
      volatile bool SetMode_flag = false;
      volatile char Select_Mode = 0;
      //-------------------------------------------------
      void PWM_init() 
      {
          //Порты PB0 и PB1 устанавливаем на выход, остальные на вход
          DDRB = 0b00000011;
          //Входные порты PINB0 и PINB1 в HIGH, остальные в Pull-UP 
          PORTB = 0b00111111;
          //Разрешаем прерывания PCINT1 - по изменению вывода 
          GIMSK |= (1<<PCIE);
          //Накладываем маску на выводы
          PCMSK |= (1<<PINB4) |(1<<PINB3) |(1<<PINB2);
          //Запрещаем все прерывания пo совпадению и переполнению
          TIMSK0 = 0x00;
          //Устанавливаем режим работы таймера в режиме ШИМ с фазовой коррекцией
          TCCR0A |= (1<<COM0A1) |(1<<COM0B1) |(0<<WGM01) |(1<<WGM00);
          TCCR0B |= (1<WGM02);
          //Предделитель частоты уставливаем clk\1024 или приблизительно 18Гц
          //         Fclk_I/O
          //Fpcpwm = --------  (N предделитель 1, 8, 64, 256, 1024)
          //          N *510 
          TCCR0B |= (1<<CS02) |(0<<CS01) |(1<<CS00);
          //Обнуляем счётный регистр
          TCNT0 = 0x00;    
      }
      //-------------------------------------------------
      ISR (PCINT0_vect)
      {
          SetMode_flag = true;  // Устанавливаем флаг события
          Select_Mode = (PINB >> 2); //Сохраняем значение со сдвигом младших разрядов
      }
      //-------------------------------------------------
      int main(void)
      {
          PWM_init();
          sei();
          while (1)
          {
              
              if (SetMode_flag) 
              {
                  switch ( Select_Mode )
                  {    case 0:
                          OCR0A = 0; break;        // ШИМ выключен
                      case 1:
                          OCR0A = 40; break;        //Скважность 15%
                      case 2:
                          OCR0A = 80; break;        //Скважность 30%
                      case 3:
                          OCR0A = 120; break;        //Скважность 45%
                      case 4:
                          OCR0A = 150; break;        //Скважность 60%
                      case 5:
                          OCR0A = 180; break;        //Скважность 75%
                      case 6:
                          OCR0A = 210; break;        //Скважность 90%
                      case 7:
                          OCR0A = 255; break;        //Включен постоянно
                      default:
                           break;
                  }
                  SetMode_flag = false; //Сбрасывем флаг
              }
          }
      }
      main.cpp
      PWM neew.pdsprj
    • Автор: ToRcH2565
      Добрый день, недавно начал изучать азы STM, и наткнулся на интересную возможность, а именно отправлять текст через отладочный порт:
      https://hubstub.ru/stm32/111-otladka-po-swd-stm32.html  (дабы долго не обьяснять о чем я веду речь, ибо без знания терминов это может затянутся).
      Так вот, столкнулся я с проблемкой, а именно где же можно данные сообщения посмотреть в EmBlocks, отладочные окна пролез все, там не нахожу, возможно нужно ковырять глубже настройки среды? или данная среда не умеет отображать эти сообщения?
      Очень не хотелось бы городить UART для отображение отладочных сообщений...
    • Автор: Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки  
      и это, собственно чем прошить. 
      Имеется прошивка, скетч, для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС
    • Автор: Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки 
      и это, собственно чем прошить. 
      Имеется прошивка для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС