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

Высококачественные конденсаторы Panasonic для надежности вашей электроники!

Электролитические алюминиевые конденсаторы Panasonic отличаются повышенной надежностью, длительным сроком службы, низким импедансом и выдерживают большой ток пульсаций, в то время как семейства полимерных конденсаторов Panasonic SP-CAP, POSCAP, OS-CON и HYBRID характеризуют сверхнизкий ESR и увеличенная емкость, работа при высоких напряжениях и в расширенном температурном диапазоне. Приобретая продукцию Panasonic, вы гарантированно получаете самое передовое решение для ваших задач. Для облегчения вашего выбора, мы подготовили подборку полезных материалов.

Читать статьи

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
                     

Вебинар "Как создать BLE-устройство на базе новейшего беспроводного микроконтроллера STM32WB55"

27 ноября 2019 года компания КОМПЭЛ приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread. На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.

Зарегистрироваться на вебинар

Только что, 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...

  • Сообщения

    • помогите немного разобраться - не хотел связываться с этими формулами ептить) - но похоже никак - расчет затворного резистора - как понял из кучи мишуры - эти Милеры, индуктивности и т.д. - основной момент - это закрытие и открытие ключа и его ток - при чем на закрытие берет больше - потому ставят диоды и доп. резисторы - ну до ладно- ес правильно понял нужно из даташита брать время - например 27 н.с(открытие) для 740-го - емкость - у меня бьется как 2.4 пик и напряжение - то -есть 2.4вольта ( по ослику) * 2400 /27 = 213 мА необходимых и после расчет резистора ток - делим на напряжение 213/2.4 =88 Ом - жесть) ес учесть что для закрытия нужно больше тока - то брать чуть меньше - в районе 70 Ом- я правильно провел расчет ? ориентировался этой статьи http://redblot.ru/archives/563
    • Так тут например полно схем с п-контурами. Смотри и выбирай номиналы. Разделительный типа 1000 пф, или больше раза в 2 -3, блокировочный тоже похожий по номиналу. Главное, что б не пробило.
    • Там на плате прямо написано, 3.3 куда подавать.
    • есть же классика на LM317/337 https://www.dropbox.com/sh/4bpybxym8ckkxt3/AACj8FN5BV1Gqz0eddOC049ka?dl=0 https://www.dropbox.com/sh/8fmd4xas70u609h/AAAhJukv_6OlSL1CPcGqKJzWa?dl=0 а еще лучше для ЦАП/АЦП на TPS7A4700 (TPS7A4701) https://www.dropbox.com/sh/0dhae52n889qj7y/AAAsz3jEIQRdXL2iWCgRGW8Aa?dl=0 https://www.dropbox.com/sh/sl3c36ndskrxz9d/AAATIDPArAV9Q4wzCbU2olHta?dl=0   а так без схемы, без разводки, без списка примененных компонентов и места их покупки это просто гадание на кофейное гуще, могу только предположить что разводка кривая, например электролит стоящий перед LDO
    • меняй в мосту mje13007 оба сразу,от перегрева деградируют.
    • Поддерживаю, видя К50-6 или К50-16 даже не задумываясь - менять однозначно,  МБМ тоже. Имея прибор для определения ЕСР , выбираю из распая мониторов и другого хлама.
×
×
  • Create New...