Jump to content
Arduino Master

STM32F103C8T6 управление яркостью светодиода с помощью ШИМ

Recommended Posts

Всем доброго дня,

Начинаю изучать STM32. Запустил пример http://www.avislab.com/blog/stm32-timer-pwm/ в котором при нажатии двух кнопок увеличивается и уменьшается яркость на ножке PB6 все работает.

Хотел переключить ШИМ на другую ножку в 28 строке поменял GPIO_Pin_6 на GPIO_Pin_7 переключил светодиод на PB7 код не работает.

Подскажите что я не правильно делаю?

5add54bbb3601_.png.084cd2a19eded91cd33e830387a177b8.png

5add59bef31c4_.png.90c4cd014cd1d98f01ab0136d94d05e4.png

 

 

 

Edited by Arduino Master

Share this post


Link to post
Share on other sites

ну если охота получить PWM на 7-ой ноге, надо еще вот этот блок поправить

    TIM_OCStructInit(&timerPWM);
    timerPWM.TIM_OCMode = TIM_OCMode_PWM1;
    timerPWM.TIM_OutputState = TIM_OutputState_Enable;
    timerPWM.TIM_Pulse = 10;
    timerPWM.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM4, &timerPWM);

а вот как это сделать, я подсказывать не буду. Открываем мануальчик и внимательно читаем раздел таймеров. Именно с этого и надо начинать осваивать STM32

Share this post


Link to post
Share on other sites
7 минут назад, mail_robot сказал:

а вот как это сделать, я подсказывать не буду. Открываем мануальчик и внимательно читаем раздел таймеров

В мануальчике на камень про библиотечные функции не будет ни слова.

Имхо, не очень хороший вариант начинать изучение МК с библиотечных функций.

Реализация того же самого с смсис ничуть не сложнее.

Если же изучать не нужно, а надо, "чтоб работало", ТС, смотрите следующий пример по вашей ссылке, он чуть-чуть отличается, там прописано 3 канала.

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

 

4 часа назад, ALEN&Co сказал:

Реализация того же самого с смсис ничуть не сложнее.

Спасибо за ответ. Я сколько смотрел обучающих уроков все на SPL и HAL. Если есть примеры или ссылки на CMSIS поделитесь.

Share this post


Link to post
Share on other sites

Помогите разобраться:

У моей STM32 всего три GPIOC порта получается используются только три верхних байта из 0x4444 4444. А для чего используются остальные 5?

Еще вопрос Output mode можно выбрать три скорости 2,10,50 Hz это получается при включении Светодиода на данной ножке. На выходе будет данная частота или я не правильно понял? 

5adeea79228c8_.png.cdd1da0c411b16f240363e4263627b5f.png

5adeeb2a9c592_.png.ef89e58a017f000dcc982a4aef1aa6cb.png

5adeebd37d0a3_.png.a2bc54a8f056987b5acc7cc2006ff069.png

 

 

 

 

 

Edited by Arduino Master

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

2 hours ago, Arduino Master said:

У моей STM32 всего три GPIOC порта получается используются только три верхних байта из 0x4444 4444. А для чего используются остальные 5?

Порт С один, а в этом корпусе задействованы только 3 пина. Остальные пины этого порта могут быть в других корпусах. Для конфигурации используются 1.5 байта, остальные 6.5 не используются.

Это сделано для лучшей переностимости кода.

2 hours ago, Arduino Master said:

На выходе будет данная частота или я не правильно понял?

На выходе никакой частоты не будет. 2,10,50 МHz это частота тактирования выходов, влияет на скорость переключения и на энергопотребление.

Share this post


Link to post
Share on other sites

Спасибо за ответ. Насчет переносимости.  Почему тогда в разных контроллерах по разному идет обращение к тем же GPIO?!

Например в моем контроллере порты конфигурируются с помощью регистров CRL, CRH а в STM32F7 с помощью MODER и OTYPER

Или это и есть те самые грабли от STM32?

Share this post


Link to post
Share on other sites
6 часов назад, Arduino Master сказал:

 

Или это и есть те самые грабли от STM32?

В стм нет граблей, есть нежелание пациЭНтов читать документацию.

А грабли это к аурдунье, там их хоть отбавляй...

Share this post


Link to post
Share on other sites
11 hours ago, snn_krs said:

На выходе никакой частоты не будет. 2,10,50 МHz это частота тактирования выходов, влияет на скорость переключения и на энергопотребление

тут бы пояснить, а то не поймет

частота выходов, это ограничение скорости фронта выходного сигнала. И предназначено это для снижения т.н. "коммутационного шума". А так то выходы всегда работают на частоте внутренней шины шины и не более таковой, как впрочем и не менее. Другой вопрос - какую частоту меандра вы сможете получить без искажений при ограничении скорости, вот и все. В общем случае всегда рекомендуется использовать минимальные частоты без особой необходимости.

 

Edited by mail_robot

Share this post


Link to post
Share on other sites

Вот простой работающий вариант на 3 канала

 

void TIM2_initial (void) //Аппаратный таймер PWM выходов (LED, LCD, LCD-filter)
{
  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
  RCC-> APB2ENR |= RCC_APB2ENR_IOPAEN;
  
  //Выходы PWM **********************
	GPIO_INIT_PIN(GPIOA, 0,  	GPIO_MODE_OUTPUT10_ALT_PUSH_PULL); // Tim2_ch1 Прозрачность LCD фильтра
	GPIO_INIT_PIN(GPIOA, 1,  	GPIO_MODE_OUTPUT10_ALT_PUSH_PULL); // Tim2_ch2 Яркость LED
	GPIO_INIT_PIN(GPIOA, 2,  	GPIO_MODE_OUTPUT10_ALT_PUSH_PULL); // Tim2_ch3 Яркость подсветки дисплея
  
  
  
	TIM2->PSC=72-1;  //18-1;  //Предделитель
	TIM2->ARR = 100-1; //Делитель, определяет период выходного сигнала (с учетом предделителя будет 10/40kHz)

	TIM2->CR1 |= TIM_CR1_ARPE;//Включен режим предварительной записи регистра автоперезагрузки
	TIM2->CCMR1 |= TIM_CCMR1_OC1PE;//Включен режим предварительной загрузки регистра сравнения
	TIM2->CCMR1 |= TIM_CCMR1_OC2PE;//Включен режим предварительной загрузки регистра сравнения	
	TIM2->CCMR2 |= TIM_CCMR2_OC3PE;//Включен режим предварительной загрузки регистра сравнения	
 	//TIM2->CCMR2 |= TIM_CCMR2_OC4PE;//Включен режим предварительной загрузки регистра сравнения	
	
  	TIM2->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1);//OC1M = 110 - PWM mode 1  
	TIM2->CCMR1 |= (TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1);//OC2M = 110 - PWM mode 1
	TIM2->CCMR2 |= (TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1);  // 110 - PWM mode 1
	//TIM2->CCMR2 |= (TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1);  // 110 - PWM mode 1	
	
	TIM2->CCR1 = 50; //Длительность импульса (по отношению к arr). В данном случае Duty cycle = 50%
	TIM2->CCR2 = 50;	
	TIM2->CCR3 = 50;
  	//TIM2->CCR4 = 50;
	
	TIM2->CCER |= TIM_CCER_CC3E | TIM_CCER_CC2E | TIM_CCER_CC1E;    //Выход канала захвата/сравнения включен
	TIM2->CCER |= TIM_CCER_CC1P; 									//Полярность выходного сигнала
 	TIM2->CR1 |= TIM_CR1_CEN;										//Старт счета таймера

}

 

Для инициализации GPIO использован файлик с дефайнами отсюда. Его надо подключить в проект.

Можно просто выдернуть из него пару строк.

 

Share this post


Link to post
Share on other sites

Запустил ШИМ заработал но дискретно. Меняю в 17 строке значение ШИМ меняется. Создал цикл в котором плавно нарастает значение но яркость не меняется.

Подскажите почему?

5ae03847b0726_.png.66a74d6b5c0965f910c5d1c8c9048a35.png

Share this post


Link to post
Share on other sites
28 минут назад, Arduino Master сказал:

Подскажите почему?

Посмотрите пример выше. Лишних строк не находите?

Ради эксперимента пробуйте их добавлять по очереди в свой проект. ;)

Share this post


Link to post
Share on other sites

Нашел проблему у меня i и j переполнялись сделал unsigned int i, j; и все заработало. Кстати такое же было в Arduino при переполнении значения камень просто зависал. Плохо что это не видет IDE

Share this post


Link to post
Share on other sites

А что должна увидеть среда? Ей нужно в Вашу голову залезть? 

МК не может зависать. МК всегда исполняет код, если он не в режиме сна. Вы можете легко разобраться в причинах неправильного на Ваш взгляд исполнения. 

Share this post


Link to post
Share on other sites

Разбираюсь с входами подскажите подтяжка к + и - это с внутренним резистором или нет?

//вход с подтяжкой к +

GPIOA->CRL &= ~GPIO_CRL_CNF0;

GPIOA->CRL |= GPIO_CRL_CNF0_1;

GPIOA->ODR |= GPIO_ODR_ODR0;

 

//вход с подтяжкой к -

GPIOA->CRL &= ~GPIO_CRL_CNF1;

GPIOA->CRL |= GPIO_CRL_CNF1_1;

GPIOA->ODR &= ~GPIO_ODR_ODR1;

Share this post


Link to post
Share on other sites
17 часов назад, my504 сказал:

А что должна увидеть среда? Ей нужно в Вашу голову залезть? 

МК не может зависать. МК всегда исполняет код, если он не в режиме сна. Вы можете легко разобраться в причинах неправильного на Ваш взгляд исполнения. 

Если в коде написать следующее:

uint8_t i;

for(i=0;i<1000;i++);

то дальше этого кода программа не пройдет (Соответственно зависнет в for). Так как uint8_t не когда не достигнет 1000.

Почему бы в IDE не сделать такую проверку?!

Ей легче поругаться на то что в конце программы забыл поставить пробел нежели такое важное упущение.

 

Share this post


Link to post
Share on other sites
55 минут назад, Arduino Master сказал:

Почему бы в IDE не сделать такую проверку?!

В том же Keil она есть

image.png.d4e22584e5e3090d0c6c28dc24ed7a80.pngimage.png.fca796c752b5238f021a33a9d1f559e7.png 

Так прям и пишет, что сравнение константы, объявленной, как uint8_t со значение 1000 всегда будет истинным.

 

Edited by BARS_

Share this post


Link to post
Share on other sites
22 часа назад, BARS_ сказал:

В том же Keil она есть

 

Я не говорил что я сижу в Keil я сижу на Коксе.

Подскажите вот в хидере  stm32f10x.h есть место где нужно выбрать камень.

Так вот в чем раздница между этими двумя выборами? И какой нужно выбрать если у меня STM32F103C8T6?

 /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
 /* #define STM32F10X_MD_VL */    /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */

 

Edited by Arduino Master

Share this post


Link to post
Share on other sites
2 hours ago, Arduino Master said:

Так вот в чем раздница между этими двумя выборами?

В Reference manual на ваш камень каждый раздел начинается так

Quote

   Х Название раздела
Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes.
XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 768 Kbytes and 1 Mbyte.
Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. This section applies to the whole STM32F101xx family, unless otherwise specified.

Тоесть ваш камень это

2 hours ago, Arduino Master said:

#define STM32F10X_MD

 

Share this post


Link to post
Share on other sites
2 hours ago, Arduino Master said:

Подскажите вот в хидере  stm32f10x.h

Этот файл используется не только для STM32F103

Medium-density value line devices are STM32F100xx microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.

 

Share this post


Link to post
Share on other sites

Так нечего сидеть в уг типа кокса, когда есть нормальные ide

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By svd
      Предлагаю печатные платы для паяльной станции на STM32 и OLED дисплее 1,3" версии 2.1S
      Плата делалась под китайский алюминиевый корпус.
      Тема, где обсуждается данная станция T12 , опубликована на сайте radiokot.ru
      Фото платы


      Схема немного доработана:
      1) добавлены блокировочные конденсаторы 0,1 мкФ в цепях микроконтроллера;
      2) добавлен резистор в цепи буззера для возможности снижения громкости;
      3) есть возможность подключать жала JBC (для Т12 в разъеме паяльника запаивается перемычка)

      Большинство элементов типоразмера 0603. DC/DC преобразователь PSR-7805LF можно заменить на любой китайский аналог или микросхему 7805
      Ссылки на возможные замены:
      DC/DC аналог 7805 №1
      DC/DC аналог 7805 №2

      Во вложениях схема и расположение элементов на ПП, чертеж передней панели и прошивка под дисплей 1.3" с контроллером SH1106.

      Цена за одну плату 400 руб c учетом стоимости пересылки по РФ. Количество плат ограничено.
      По всем вопросам просьба обращаться в личку.
       
      STM32_T12_2.1S_SSH1106_1.3_v2_.pdf передняя панель.pdf T12_HW21S_Encryption-SH1106.zip
    • By ART_ME
      Здравствуйте.
      Рискну спросить: не завалялась ли у кого в хозяйстве для STM32F103xx: 
      - AC induction motor IFOC software library V1.0
      либо 
      - ACIM and PMSM motor control software libraries release 2.0
      ?
      Просьба поделиться если вдруг такой раритет найдется. 
       
    • By Илья Юрченко
      Добрый день, уважаемые форумчане! Для научной работы хотел собрать данные о том, насколько микроконтроллеры stm32 удовлетворяют нужды и требования программистов и разработчиков продуктов на нем. Если не сложно, ответьте, пожалуйста, важны данные)
      Разумеется "очень средне" неадекватная метрика, но в рамках работы нужна именно средняя удовлетворённость, и определение существует ли необходимость в создании другой серии универсальных плат на базе МК.
    • By n_angelo
      Привет. Хочу узнать ваше мнение. Я новичок в embedded. Можно сказать, что пришел с веба. Малость Python, JS, C. Меня, конечно, предупреждали начать с AVR, но я уверенный в себе решил сразу залезть на STM32. Вынашивая идею для проекта, параллельно курив Reference Manual и Data Sheet по STM32, я понял что его будет слишком жирно для проекта. Я перескочил на STM8L. И тут меня начал огорчать мир embedded. При переходе между stm8 и stm32 нужно менять IDE (TrueStudio на STVD). Во избежание таких курьёзов я пересаживаюсь на IAR. В процессе подключения родной библиотеки от ST, понимаю что библиотека от IAR для того же самого STM8L152C6T6 дико отличается (макросы, структуры). Привет веб-разработка. Как такое могло произойти, что под один и тот же контроллер ST даёт одну библиотеку, а IAR другую. И нигде в уроках тебя не предупредят об этом. Ну, ребят, у меня всего одна жизнь. Вы уже договоритесь там между собой? Придите к единому стандарту. Или они так решили новичков завендерлочить? Моё мнение (не претендует на правильное): пробираясь сквозь тернии популярной архитектуры ARM, инфраструктуры, инструментария, забываешь про бизнес-логику устройств. А еще просто пропасть между "я ничего не понимаю" и "господи, я зажег светодиод". Речь не о копипастерах с уроков, а действительно понимая что ты делаешь, в каком регистре, что меняешь. Это путь в 2000 (а то и больше) страниц на английском перечитанных по несколько раз, чтобы отоложилось. И в конце тебя ждут разные версии одной и той же библиотки в разных IDE. И сидишь вдупляешь... ну почему... я же в правильный регистр кладу правильную маску... ох, наболело. Такое ощущение что не для людей это всё делали, не для людей.
      Ваше мнение?
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
  • Сообщения

    • Подскажите LM317 в корпусе TO-92 сколько может рассеять мощности ???? https://www.chipdip.ru/product/lm317lzrag 
    • Новый термин придуман в акустике - интерференционная каша. По мне так ничего,довольно вкусная каша.
    • Так и должно было быть.... Татьяна и Павел Татьяна и Павел: ... в любви они сочетаются на 90%. В их отношениях много тепла, романтики и нежности. Сначала может сложиться впечатление, будто они искали друг друга всю жизнь и наконец-то нашли.  Проблемы в совместимости Татьяны и Павла могут начаться в связи с ее неукротимым желанием переделать партнера, подчинить его своему влиянию и заставить бросить пить. С Павлом такая штука не пройдет. Он гордится собой как личностью и считает, что вылепил себя сам. Он не потерпит грубого вмешательства в свой внутренний мир."... Для Татьяны очень важно, чтобы рядом с ней был волевой мужчина с сильным характером. Подкаблучника она не потерпит. Павел обладает внутренним стержнем, он занимает лидирующую позицию в отношениях. При этом не забывает обращаться к мнению партнерши и всегда учитывает его. Все важные решения, скорее, будет принимать женщина. Она быстрее реагирует на перемены и может упрекать избранника в нерешительности... Юлия и Павел Идеальные отношения? Об этом мечтают все, а Юлия и Павел наслаждаются полной совместимостью и комфортом в отношениях. Такой гармонии редко кому удаётся достичь. Павел просто теряет голову от милой и обаятельной девушки, которая то заливисто смеётся, то витает в облаках романтических грёз. Впрочем, она может и воспользоваться влюблённостью мужчины для достижения своих целей, но он об этом не узнает. Если Юлия и Павел в браке будут сохранять мир и спокойствие, их союзу ничего не угрожает. Главное, чтобы всплески обоюдной страсти не стали причиной конфликта....  Павел не слишком-то разговорчив, а перед Юлией он легко открывается. Она всегда поддержит его, в любой ситуации будет на его стороне, поэтому она в курсе всех его волнений и переживаний. Павел всегда с радостью возвращается в дом, где его ждёт налаженный быт, семейный уют и вкусный ужин, принося с собой неплохое материальное подкрепление. Юлия и Павел имеют и совместимость духовную, им всегда есть о чём поговорить и что обсудить, при этом скука им непонятна и чужда. Девушка чувствует поддатливость своего мужчины и периодически поднимает бунт в борьбе за  лидерские позиции в семье, который заканчивается её безоговорочной победой... В интимных делах царит полное равноправие и взаимопонимание, они внимательны к желаниям друг друга, поэтому никто не остаётся разочарованным...  https://imena-mj.ru/index.php/9-men/561-татьяна-и-павел.html https://imena-mj.ru/index.php/9-men/560-юлия-и-павел.html
    • Айзек Азимов. Выбор катастроф - чудесная книжка... или прекрасная... без разницы - класс.
    • Я тоже не могу такого себе позволить. У меня небольшие колонки, тонко компенсацией скорректировал под них линейную АЧХ. Чтобы система усилитель - колонки линейнее была. Это лишний раз говорит о том - что каждому своё. Собрал, нравится и ладно. Мне например СРПП  по душе. А акустика, какая доступна, ту и приспособил. Другого всё равно нет. 
    • Добрый день! Спасибо автору, интересный проект. На мой взгляд, не хватает опции смены цветового пространства. Это необходимо  для совместимости ЦМУ с некоторыми лентами, имеющими иной порядок следования RGB каналов, для корректного воспроизведения эффектов на таких "неправильных" лентах.
  • Покупай!

×
×
  • Create New...