Jump to content
ART_ME

STM32 для чайника

Recommended Posts

10 минут назад, my504 сказал:

При низковольтной нагрузке пролем не будет

В моем случае это 12 - 15В

Share this post


Link to post
Share on other sites

Можно ли на одном таймере (допустим TIM4) сделать два ШИМ генератора сигналов с разной частотой?

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

TIM3 генерирует PWM на канале 3 и 4. Частота 1 кГц.

Можно ли на этом таймере дополнительно реализовать прерывание с частотой 100 Гц?

 

Edited by Smith2007

Share this post


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

Можно ли на одном таймере (допустим TIM4) сделать два ШИМ генератора сигналов с разной частотой?

Про какой микроконтроллер говорите?

10 минут назад, Smith2007 сказал:

TIM3 генерирует PWM на канале 3 и 4. Частота 1 кГц.

Можно ли на этом таймере дополнительно реализовать прерывание с частотой 100 Гц?

 

Прерывание для каких целей нужно?

Edited by Oxford

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

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

Только что, Oxford сказал:

Про какой микроконтроллер говорите?

stm32f103c8t6

6 минут назад, Oxford сказал:

Прерывание для каких целей нужно?

Для различных временных задержек нужна метка времени. Дискретность 10 мс наиболее удобна.

Share this post


Link to post
Share on other sites

МК на частоте 48 МГц

Для генерации ШИМ (или прерывания) можно настроить таймер двумя разными вариантами.

Не большой Prescaler и большой Period

Или наоборот - Prescaler большой, Period меньший. 

Какой способ предпочтительнее? Если Period большой это значит счетчик должен сделать больше инкрементов. При счете счетчика задействуется сам ALU ядра процессора или это аппаратный счет идет и на производительность ни как не повлияет?

Вариант1

timer.TIM_Prescaler = 47;
timer.TIM_Period = 1000;
timer.TIM_ClockDivision = 0;
timer.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &timer);

Вариант2

timer.TIM_Prescaler = 480-1;
timer.TIM_Period = 100;
timer.TIM_ClockDivision = 0;
timer.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &timer);

Share this post


Link to post
Share on other sites

@Smith2007  Все зависит от того какая частота ШИМ нужна. Каналы таймера абсолютно независимы, таймер общий... дальше думайте сами. Таймер ест-нно аппаратный. Если частота работы ШИМ 1кГц, то конечно 100Гц не получить, получишь 1кГц, в прерывании уже софтовый счетчик с нужным коэфф.

Edited by MasterElectric

Share this post


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

Все зависит от того какая частота ШИМ нужна.

1 кГц.

1 минуту назад, MasterElectric сказал:

Таймер ест-нно аппаратный.

Значит не важно сколько он считает - на производительность не влияет.

Как бы на один канал загрузить число, досчитав до которого вызвать прерывание. Я так примерно понимаю, но не найду примеров похожих.

Share this post


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

TIM3->DIER |= TIM_DIER_CC1IE;

Это разрешить прерывание на 1 канале по достижению счета?

Вектор прерывания один и тот же, а в обработчике прерываний нужно просто определить какой флаг его вызвал?

 

Т.е. прерывание будет происходить каждую миллисекунду (в моем случае 1 кГц) и каждый раз, когда на канале 1 счетчик добежит до CCR1?

Edited by Smith2007

Share this post


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

В моем случае это 12 - 15В

Не забывай только, что при работе стартера твои 12-15в могут вылиться и в нечто посущественнее за счет индуктивностей проводки девайса..

Edited by Alex Falcon

Share this post


Link to post
Share on other sites
В 23.05.2018 в 23:42, Smith2007 сказал:

Аналогичная проблема. Не получается скачать для stm32f3xx

Помогите пожалуйста скачать http://www.keil.com/dd2/stmicroelectronics/stm32f334c8tx/

Что-то лишнее роскомнадзор заблокировал. 

Установи приложение TunnelBear, одним кликом открывает компьютеру тунель в другую страну. И тогда KEIL сможет качать пакеты. Бесплатно дается 500мб в месяц, либо можешь купить на месяц подписку. Удобная и легко робит.

Share this post


Link to post
Share on other sites

Отладочная плата stm32f103c8t6.  В порт GPOIB Pin_3 записываю Bit_SET или Bit_RESET. В отладчике кейла вижу как меняется значение ODR3 в регистре GPIOB. Но на выходе светодиод молчит. Если поменять на Pin_7 работает нормально.

Обозначение PB3/JTDO.

С чем может быть связано такое поведение? 

Или просто порт спалил?

 

/***************************************************/
	/*             Инициализация GPIO                  */
	/***************************************************/
	GPIO_InitTypeDef GPIO_Structure;
	GPIO_DeInit(GPIOA);
	GPIO_DeInit(GPIOB);
	GPIO_DeInit(GPIOC);
	
	/* Led B3 - LED_Heat_L*/
  GPIO_StructInit(&GPIO_Structure);
  GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Structure.GPIO_Pin = GPIO_Pin_7;
  GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init(GPIOB, &GPIO_Structure);

 

Вызов

		bt_heat_l.update();
		if (bt_heat_l.btOn) {
			bOn++;
			//GPIO_SetBits(GPIOB, GPIO_Pin_3);
			GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET);
		}
		if (bt_heat_l.btOff) {
			bOff++;
			//GPIO_ResetBits(GPIOB, GPIO_Pin_3);
			GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_RESET);
		}		

 

Если пин заменить на GPIO_Pin_3 - порт PB3 не шевелится

Edited by Smith2007

Share this post


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

Если не работает, значит спалил.

С PB4 аналогичная картина.

 

Share this post


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

отключи JTAG и оставь только SWD. Все просто.

Что-то не найду где его отключить. При инициализации ничего особенного не включал.

Отладчик STLink v2, подключен по swd

Share this post


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

Что-то не найду где его отключить. При инициализации ничего особенного не включал.

:)

1.png

Share this post


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

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

А если я хочу использовать pb4 то надо выполнить следующую команду? 

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); 

Не повлияет это на загрузку новых прошивок через STLink v2?

 

В описании нашел

GPIO_Remap_SWJ_NoJTRST : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST

GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled

GPIO_Remap_SWJ_Disable : Full SWJ Disabled (JTAG-DP + SW-DP)

 

1 час назад, Darth_Vader сказал:

 

 

stm32Cubmx  (и HAL) не использую в проекте.

Edited by Smith2007

Share this post


Link to post
Share on other sites

Если 1 раз после состояния сброса изменить тогда так: 

  RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
  AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

ну а если из любого тогда так: AFIO->MAPR = (AFIO->MAPR & ~AFIO_MAPR_SWJ_CFG) | AFIO_MAPR_SWJ_CFG_JTAGDISABLE; ну это и так понятно.

Share this post


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

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); 

Не повлияет это на загрузку новых прошивок через STLink v2?

 

Через SWD не повлияет

Edited by optima

Share this post


Link to post
Share on other sites

Странно что Pin_7 работает. Первой командой при инициализации порта, должно быть включение тактирования

 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );

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...

  • Сообщения

    • Это как подать... кому - подвиг, а кому и не очень. Это хорошо. И это хорошо.
    • Снаббер для подавления ВЧ- звона. Не обязательно, но сигнал на эмиттере со снаббером должен быть красивее.  Есть вполне конкретные топологии ключевых DC-DC преобразователей. Ваша схема называется "понижающий преобразователь", "step-down (buck)converter" или "chopper". В силовую схему в обязаловку входят: Входной конденсатор; Ключ; Нулевой (или free-wheeling) диод, Дроссель, Выходной конденсатор. Выкините что-нибудь из этого - и нормальной работы DC-DC преобразователя не будет. Хотя, в частных случаях ШИМ стабилизации тока, можно отказаться от выходного конденсатора, а дроссель может быть частью нагрузки. Вся остальная лабуда может быть разной (согласно требований схемы), но принципиально не меняет дела.
    • Ну полностью же знать всю электронику не реально, в какой-то степени начинающий)
    • @Электронщик вы точно начинающий?
    • TLY! Речь не идёт о том,  "а...валите ему сколько хотите". С3 - это преходной конденсатор. Во время работы усилителя, напряжение на нём составляет, примерно, половину питания, или, 150 Вольт. Поэтому, выбор рабочего напряжения в 250 Вольт вовсе не так безграмотен. Вы правы,  для конденсатора с твёрдым диэлектриком, "мото"часы зависят от приложенного к нему напряжения. И, в зависимости от заявленных "мото"часов, один и тот же конденсатор может быть и на 250, и на 400 Вольт. В данном конкретном случае, на время прогрева ламп, на нём может оказаться и 350 Вольт. Но, в течении не более 30-ти секунд. Учитывая изложенное, не вижу никаких проблем поставить С3 на 250 Вольт. Гарантия? Помните, Остап Бендер говорил - Полную гарантию может дать только страховой полис. У меня, к примеру, в зарядном устройстве для 9-ти Вольтовых аккумуляторов, типа "Кроны", в качестве балласта стоит МБМ на 160 Вольт. Более 30-ти лет. Имея продолжительность непрерывной работы по 14 часов, примерно 3 - 4 раза в месяц. Это, на сегодня, минимум, 15000 часов под повышенным напряжением. Не призываю, делай, как я! Просто хочу сказать - не всё так страшно. Завод, к стати, гарантирует наработку не менее 10 000 ч, в нормальных условиях. Так что, меня не обманули. Свои не менее 10 000 ч, конденсатор честно отработал. P.S. Снова вспомнился Остап Бендер - Вас обманули. Вам дали гораздо лучший мех. Это шанхайские барсы. Может и меня обманули? Дали гораздо лучший конденсатор? На 1600 Вольт?
    • Очередной подвиг росгвардии: четверо бойцов не справились с одним дебоширом
×
×
  • Create New...