Ivan Rusev Опубликовано 28 мая, 2020 Поделиться Опубликовано 28 мая, 2020 с Скрытый текст void timer_2_init(void) { GPIOA->MODER&=~GPIO_MODER_MODER3_0; GPIOA->MODER|=GPIO_MODER_MODER3_1;//ch1 GPIOA->MODER&=~GPIO_MODER_MODER5_0; GPIOA->MODER|=GPIO_MODER_MODER5_1;//ch4 GPIOB->MODER&=~GPIO_MODER_MODER3_0; GPIOB->MODER|=GPIO_MODER_MODER3_1;//ch2 GPIOB->MODER&=~GPIO_MODER_MODER10_0; GPIOB->MODER|=GPIO_MODER_MODER10_1;//ch3 RCC->APB1ENR |=RCC_APB1ENR_TIM2EN; GPIOA->AFR[1]=GPIO_AFRL_AFRL1_0; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_1; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_2; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_3; GPIOB->AFR[1]=GPIO_AFRL_AFRL1_0; GPIOB->AFR[1]&=~GPIO_AFRL_AFRL1_1; GPIOB->AFR[1]&=~GPIO_AFRL_AFRL1_2; GPIOB->AFR[1]&=~GPIO_AFRL_AFRL1_3; GPIOB->AFR[1]=GPIO_AFRH_AFRH1_0 ; GPIOB->AFR[1]&=~GPIO_AFRH_AFRH1_1 ; GPIOB->AFR[1]&=~GPIO_AFRH_AFRH1_2 ; GPIOB->AFR[1]&=~GPIO_AFRH_AFRH1_3 ; TIM2->PSC = 0; // Настраиваем делитель что таймер тикал 1000 раз в секунду TIM2->ARR = 4095 ; //65535 TIM2->CCMR1&=~TIM_CCMR1_CC1S;//настройка канала 1 на выход. TIM2->CCMR1&=~TIM_CCMR1_CC2S;//настройка канала 2 на выход. TIM2->CCMR2&=~TIM_CCMR2_CC3S; TIM2->CCMR2&=~TIM_CCMR2_CC4S; TIM2->CR1&=~TIM_CR1_DIR; TIM2->CCMR1|= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;//|TIM_CCMR1_OC1M_0;//;// TIM2->CCMR1|= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;//|TIM_CCMR1_OC2M_0;// TIM2->CCMR2|= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1;//|TIM_CCMR1_OC2M_0;// TIM2->CCMR2|= TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1; TIM2->CCMR1|=TIM_CCMR1_OC1PE; TIM2->CCMR1|=TIM_CCMR1_OC2PE; TIM2->CCMR2|=TIM_CCMR2_OC3PE; TIM2->CCMR2|=TIM_CCMR2_OC4PE; TIM2->CCER |=TIM_CCER_CC1E; TIM2->CCER |=TIM_CCER_CC2E; TIM2->CCER |=TIM_CCER_CC3E; TIM2->CCER |=TIM_CCER_CC4E; TIM2->CCER &=~TIM_CCER_CC1P; TIM2->CCER &=~TIM_CCER_CC2P; TIM2->CCER &=~TIM_CCER_CC3P; TIM2->CCER &=~TIM_CCER_CC4P; TIM2->CR1|=TIM_CR1_ARPE; TIM2->EGR|= TIM_EGR_UG; // TIM4->CCR1=30000; TIM2->CR1|= TIM_CR1_CEN; } main.c 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 31 мая, 2020 Автор Поделиться Опубликовано 31 мая, 2020 Ну видимо никого здесь нет.Пустыня 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Lexter Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 Вопроса нет, - вот никого и нет. Разве что в названии темы вроде на вопрос похоже - "stm32f4 как настроить шим". Так это в даташите написано, как настроить. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Ivan Rusev Опубликовано 31 мая, 2020 Автор Поделиться Опубликовано 31 мая, 2020 я настроил не работает 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
hasl Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 Значит те доки наврали. Пиши в академию и выходи на нобелевскую премию. Чо за дибилзм, не можешь сам запустить на уровне регистров, используй HAL и CubeMx 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AVI-crak Home Опубликовано 31 мая, 2020 Поделиться Опубликовано 31 мая, 2020 3 часа назад, Ivan Rusev сказал: я настроил не работает Может стоит начать изучение работы таймера не с регистров, а с начала главы про таймеры? Там есть упрощённая блок схема, что поможет понять внутреннее устройство таймера и его возможности. Потом идёт описание разных режимов работы таймера, во множестве вариантов. Описание упрощённое, с картинками и стрелочками "акцентами внимания". И только после этого начинается описание регистров. Подобным образом устроенна любая документация, на любом языке, и на любые устройства. Это своего рода стандарт подачи информации - сначала самое важное, а потом второстепенное. 0 RtoS Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 1 июня, 2020 Автор Поделиться Опубликовано 1 июня, 2020 На f1 запустил а на f4 другое ядро не могу запустить шим.Таймер проверяю работает .А Шима нет. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 1 июня, 2020 Поделиться Опубликовано 1 июня, 2020 Я так понимаю, скоро форумчане увидев что автор Ivan Rusev, даже заходить и читать не будут. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 1 июня, 2020 Поделиться Опубликовано 1 июня, 2020 (изменено) 31.05.2020 в 10:30, Ivan Rusev сказал: я настроил Херню настроил, вот и не работает. Научись читать даташит, а не тупо копипастить. P.S. И научись нормально вставлять код на форум! Изменено 1 июня, 2020 пользователем BARS_ 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 1 июня, 2020 Автор Поделиться Опубликовано 1 июня, 2020 2 часа назад, BARS_ сказал: Херню настроил, вот и не работает. Научись читать даташит, а не тупо копипастить. P.S. И научись нормально вставлять код на форум! Я с вам на вы.А вы в футбол играете.Если не хотите не нужно я до вашего уровня не достигну.Нельзя так с людьми.Пацанюра 2 часа назад, BARS_ сказал: Херню настроил, вот и не работает. Научись читать даташит, а не тупо копипастить. P.S. И научись нормально вставлять код на форум! Небойсь тебя ктото научил.А я самоучка. 3 часа назад, LiVit сказал: Я так понимаю, скоро форумчане увидев что автор Ivan Rusev, даже заходить и читать не будут. Вы все такие умные здесь.Я к вам с мечём не припёрся.Я прийшёл за консультацией.Если ваш форум носит характер другого плана так зачем же форум вообще что вы здесь обсуждаете? -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 1 июня, 2020 Поделиться Опубликовано 1 июня, 2020 (изменено) 13 минут назад, Ivan Rusev сказал: Нельзя так с людьми. А лентяев никто не любит. Тебе же сложно открыть даташит и прочесть, что какой регистр значит. Во-первых, прочесть, что такое GPIOx->AFR и по какому принципу он настраивается, и понять, что вся настройка выглядит примерно вот так, а не простыней кривого кода: GPIOE->AFR[1] |= 0x00000010; Каждые 4 бита - настройка одного пина. Что сложного? А потом внимательно прочесть про регистры таймера, ибо там тоже наворочено лишнего, а установки одного важного бита как раз таки нет. 13 минут назад, Ivan Rusev сказал: до вашего уровня не достигну Если сидеть и ныть, то точно не достигнешь. Ты вот думаешь, что все сразу стали спецами? Хрен там, точно так же учились с нуля. Причем 99% самоучки, включая меня. 13 минут назад, Ivan Rusev сказал: Небойсь тебя ктото научил. Ты не поверишь, сам себя научил. Читал, изучал, пытался применить на практике. Только шел последовательно, от простого к сложному, а не прыгал туда-сюда по периферии МК. А ты даже форумом пользоваться не можешь научиться.... Изменено 1 июня, 2020 пользователем BARS_ 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 1 июня, 2020 Автор Поделиться Опубликовано 1 июня, 2020 Спасибо извини если обидел.Так референсе мануал или даташит? -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 1 июня, 2020 Поделиться Опубликовано 1 июня, 2020 Смотря для чего, AFR расписан в даташите, остальное в референсе. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 1 июня, 2020 Поделиться Опубликовано 1 июня, 2020 10 часов назад, LiVit сказал: Я так понимаю, скоро форумчане увидев что автор Ivan Rusev, даже заходить и читать не будут. Так уже) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 2 июня, 2020 Автор Поделиться Опубликовано 2 июня, 2020 что уже? даташит не даёт полной инфы. -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 2 июня, 2020 Поделиться Опубликовано 2 июня, 2020 6 часов назад, Ivan Rusev сказал: даташит не даёт полной инфы. Дает более чем полную, за исключением некоторых нюансов, с которыми ты сейчас явно не столкнешься. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Lexter Опубликовано 2 июня, 2020 Поделиться Опубликовано 2 июня, 2020 11 часов назад, Ivan Rusev сказал: даташит не даёт полной инфы. Смелое утверждение... Как же все остальные-то работают? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 2 июня, 2020 Автор Поделиться Опубликовано 2 июня, 2020 ну во первых я просмотрел дататашид.И перевёл референсе мануал.Шим мод одинаковы регистры как на f1 и f4 серии.Только есть одна зацепка альтернативная функция так примеров в нете на неё я нашёл в видео только всё равно не работает.Не понятно если у нас один выход как писать а если четыре как кода плюсовать или умножать? Даташид дополняет. Информации я вижу больше на референсе мануал. Может я что то упустил .Не исключаю.С stm32 знаком недавно с регистрами тем более .Не судите.А подскажите.Если хотите .Сам я решу эту проблему.Но дольше. -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 2 июня, 2020 Поделиться Опубликовано 2 июня, 2020 (изменено) 01.06.2020 в 14:44, Ivan Rusev сказал: Вы все такие умные здесь.Я к вам с мечём не припёрся.Я прийшёл за консультацией.Если ваш форум носит характер другого плана так зачем же форум вообще что вы здесь обсуждаете? Здесь обсуждают те вещи, в которых сложно разобраться, либо (да, бывает) сидишь, тупишь, а коллеги могут помочь, ибо сталкивались с подобным. Либо просто глаз замылен - а коллеги увидят твой косяк и помогут. В вашем случае Иван, все видят что вы спрашиваете не пытаясь понять и разобраться. Используйте KEIL и отладчик, чтобы понять и увидеть как и что работает. И никто никого ничему не учил. Откуда такие фантазии? Вы знаете какие-то курсы по STM32? Я - не знаю. Все берут даташиты и читают. Проблемы с инглишем? Ну, тут извините - никто не поможет. Вы вообще, зачем в эту тему полезли? Для поиграться? Возьмите ардуину и играйте. Для профессионального применения? Тогда не надо ныть, надо разбираться самому. Купите осциллограф, логический анализатор, программатор нормальный. Изменено 2 июня, 2020 пользователем LiVit 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 2 июня, 2020 Поделиться Опубликовано 2 июня, 2020 11 минут назад, Ivan Rusev сказал: Шим мод одинаковы регистры как на f1 и f4 серии. Только вот другие регистры отличаются. Внимательно возьми и прочти описание ВСЕХ регистров таймера. Особенно BDTR. 11 минут назад, Ivan Rusev сказал: так примеров в нете на неё я нашёл // SPI1 (LAN1 SPI) GPIOA->AFR[0] |= 0x55500000; GPIOA->MODER |= GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1; GPIOA->OTYPER &= ~GPIO_OTYPER_OT_5 & ~GPIO_OTYPER_OT_6 & ~GPIO_OTYPER_OT_7; GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7; Вот тебе пример на 429 камень, разбирайся. У тебя все аналогично. 13 минут назад, Ivan Rusev сказал: если у нас один выход как писать а если четыре как кода плюсовать или умножать? Сам понял, что спросил? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 2 июня, 2020 Автор Поделиться Опубликовано 2 июня, 2020 GPIOA->AFR[0] |= 0x55500000; правая часть не понятна откуда и куда ноги растут.0x55500000;?Насчёт GPIOA->MODER |= GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1; GPIOA->OTYPER &= ~GPIO_OTYPER_OT_5 & ~GPIO_OTYPER_OT_6 & ~GPIO_OTYPER_OT_7; GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7;Это всё понятно. А вот 0x55500000.как это вычесляется? BDTR.- таймер 1и 8 это там находиться.В других я отличая не нашёл.Может я ошибаюсь.У меня среда не KEIL.Atolic Truestudio -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 3 июня, 2020 Поделиться Опубликовано 3 июня, 2020 28.05.2020 в 09:44, Ivan Rusev сказал: GPIOA->AFR[1]=GPIO_AFRL_AFRL1_0; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_1; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_2; GPIOA->AFR[1]&=~GPIO_AFRL_AFRL1_3; Ну что за унылый чувак... Я потратил 5 минут своего драгоценного времени на то, чтобы вникнуть в AFR. Ты хочешь менять AFR для пина A1, так? Так какого лешего ты лезешь в регистр, который для пинов 8...15? Разницу между ними видишь? А почему ты включаешь A3 A5 B3 B10, а альтернативные функции пытаешься настраивать (неправильно, надо заметить) для A1 и два раза для B1? Или, пардон муа, это такой стиль написания программы, что вообще не понятно чего пишется и для чего?? Черт возьми, да тебе просто лень поискать в сети то, что уже решили и разжевали. Вот ссылка: ТЫЦ, где всё разжевано. На русском (!) языке. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 4 июня, 2020 Автор Поделиться Опубликовано 4 июня, 2020 Я запустил шим. void timer4(void) { RCC->AHB1ENR|=RCC_AHB1ENR_GPIODEN; GPIOD->MODER|=GPIO_MODER_MODER12_1 ; GPIOD->MODER&=~GPIO_MODER_MODER12_0 ; //GPIOD->AFR[1]|=(0x02<<4*4) ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_0 ; GPIOD->AFR[1]|=GPIO_AFRH_AFSEL12_1 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_2 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_3 ; RCC->APB1ENR|=RCC_APB1ENR_TIM4EN; TIM4->PSC=0; TIM4->ARR=65535-1; TIM4->CCMR1&=~TIM_CCMR1_CC1S;// TIM4->CR1&=~TIM_CR1_DIR; TIM4->CCMR1|=TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; TIM4->CCMR1|=TIM_CCMR1_OC1PE; TIM4->CCER|=TIM_CCER_CC1E; TIM4->CCER&=~TIM_CCER_CC1P; TIM4->CR1|=TIM_CR1_ARPE; TIM4->EGR|= TIM_EGR_UG; TIM4->CR1|= TIM_CR1_CEN; } Вот рабочий код программы попробую на 4 канала .Спасибо конечно вам мастерам. у меня была банальная ошибка TIM4->ARR=65536;Извините что не так -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 4 июня, 2020 Поделиться Опубликовано 4 июня, 2020 (изменено) 1 час назад, Ivan Rusev сказал: GPIOD->AFR[1]|=(0x02<<4*4) ; Что это за бред? 1 час назад, Ivan Rusev сказал: GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_0 ; GPIOD->AFR[1]|=GPIO_AFRH_AFSEL12_1 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_2 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_3 ; Ведь показали же, как правильно писать. Ну и нахрена делать так: GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_0 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_2 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_3 ; Ели это делается одной строкой? GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12; Да и даже так делать не надо, если дефолтное состояние регистра нулевое. А оно нулевое Аналогично и тут: GPIOD->MODER|=GPIO_MODER_MODER12_1 ; GPIOD->MODER&=~GPIO_MODER_MODER12_0 ; Строка GPIOD->MODER&=~GPIO_MODER_MODER12 ; Сбрасывает оба бита. 1 час назад, Ivan Rusev сказал: у меня была банальная ошибка TIM4->ARR=65536 Все от того, что ты документацию читать не желаешь. Там английским по белому сказано, что Т.е. ровно искомое тобой значение. Плюс знания Си нулевые, ибо не знаешь, что можно писать в какой тип переменной. Изменено 4 июня, 2020 пользователем BARS_ 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Ivan Rusev Опубликовано 4 июня, 2020 Автор Поделиться Опубликовано 4 июня, 2020 GPIOD->AFR[1]|=(0x02<<4*4) ;Этот бред я нашёл по ссылке вашего коллеги.И этот бред мне дал понять как нужно.Ходя в тёмной комнате.И имея только свет светлячка.Можно найти выход.Ну как раз int char я могу отличить 1 .0- 255 2 0-65535.Я вечный ученик. TIM4->ARR=65535 можно так записывать.а можно и так TIM4->ARR=0xFFFF FFFF.у меня нет стажа я электрик.Контроллерами 5 с половиной год занимаюсь.С stm32 даже года не будет.Начинал с полного нуля.Спасибо за понимание.Учится учится и ещё раз учиться.Я много не знаю.GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_0 ; GPIOD->AFR[1]|=GPIO_AFRH_AFSEL12_1 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_2 ; GPIOD->AFR[1]&=~GPIO_AFRH_AFSEL12_3 ; Вот это я сам настроил.Мой пример в нете будет первым.Такой настройки я не видел.Кстати вот с этим вариантом тоже работает.Но мне он до конца не понятен.GPIOD->AFR[1]|=(0x02<<4*4). -2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.