Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Да не только регистр, а вообще синтаксис языка проверяет да и вообще если что-то не обьявлено или не так написано подскажет. Сразу если что-то не так подчеркивает и можно посмотреть что ему не нравиться.

 

Изменено пользователем Oxford
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

на сколько я помню эти две среды раньше точно не могли помогать дописывать #include, что очень напрягало запоминать названия и вбивать их руками. Да и нет перехода по Ctrl + ЛКМ, а есть ли хинт при наведении на что угодно и показывает где объявлено (а там и коммент к переменной можно написать).что очень удобно. Не пойму чем не устраивает Atollic на эклипсе просто шикарная среда разработки. Можно форматирование синтаксиса настроить под себя, прекрасный рефакторинг, в отладчике есть что душе угодно, справа в полосе прокрутке есть рисочки цветные по которым можно перемещаться на ошибку или предупреждение, да плюсов очень много без проблем например подхватывает в проект новые файлы их нужно просто скопировать в папку с проектом. Просто очень удобная среда, которая экономит время на написании кода.

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

На сколько я помню, атоллик самая свежая среда из всех что есть (обновления не в счет). Поэтому видимо и допиленная хорошо. На счет компилятора только вопрос - там все тот же GCC?

Так то да, эклипс в плане дружественности интерфейса и гибкости редактора пожалуй заплюет всех и все. Основная проблема - тормоза вечные то там то сям, и компилятор

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Пока на 407 камне поработал с спи на прерывании на прием, ЮАРТ на передачу, с портами ввода-вывода, и тактированием, все на регистрах прощупал, но тут стал вопрос, о токовой нагрузке 407 камня, цепляю светодиод с напряжением 1,96В, через резистор 100Ом, соответсвенно ток через светодиод должен быть 13,4мА, но светодиод ели светит, и напряжение на нем просаживается до 1,65В и ток 0,013мА., обычно же МК на пин до 20мА должен держать, на сколько помню, добавил резистор чтоы было 200Ом тоже самое, микроамперы, с другими светодиодами тоже самое, может это из за того что использую выхода на максимальную скорость, вычитал что 407 камень на корпус максимум 240мА, на каждый вывод до 25мА, почему тогда у меня не держит ток, может нужно программно отключать энергосбережение, или скорость пинов снизить со 100МГц, до 50МГц?

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Пин PD13, настраивал регистрами, и кубом только что попробовал одинаково, скорость тоже делал самую маленькую ничего.

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

куб, куб...

а начинаешь разбираться - дело было не в бобине в 99,9% случаев

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Учусь программировать STM32L и сталкиваюсь постоянно со многими вопросами, на которые не могу найти ответы. Например, конфигурирую таймер TIM6, который является базовым, то есть самым простым.

Открываю CubeMX, включаю таймер, ставлю частоту тактирования 1 МГц, устанавливаю Prescaler 999 и Counter Period 499 (типа чтобы каждые 500 мс было переполнение), разрешаю прерывания. Генерирую код и вижу такую последовательность (упрощенно):

TIM_HandleTypeDef htim6; // какая-то структура, связанная с TIM6 ...

int main(void)
{
	MX_TIM6_Init(); // тут понятно что инициализируется таймер

	while (1){ }
}

// Далее сама функция инициализации TIM6
static void MX_TIM6_Init(void)
{
	TIM_MasterConfigTypeDef sMasterConfig;
	sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
	sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

	htim6.Instance = TIM6;
	htim6.Init.Prescaler = 999;
	htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
	htim6.Init.Period = 499;
}
}

// Ну и сам обработчик прерывания
void TIM6_IRQHandler(void)
{
	HAL_TIM_IRQHandler(&htim6);
}

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

Я открываю документацию HAL и иду во вкладку 43 - HAL TIM Generic Driver (499 страница).

Далее я вижу последовательно список различных структур и их полей:

TIM_Base_InitTypeDef // что-то мне подсказывает что это как раз на самый простой случай работы таймера и надо бы использовать эту структуру, но нет...
TIM_OC_InitTypeDef
TIM_OnePulse_InitTypeDef
…
TIM_SlaveConfigTypeDef
TIM_HandleTypeDef // это как раз та структура, которая в сгенерированном коде. Его поля выглядят так:
	TIM_TypeDef * Instance
	TIM_Base_InitTypeDef Init
	HAL_TIM_ActiveChannel Channel
	DMA_HandleTypeDef * hdma
	HAL_LockTypeDef Lock
	__IO HAL_TIM_StateTypeDef State

От сюда первый вопрос — почему именно эту структуру надо использовать (TIM_HandleTypeDef)? Если она такая важная, то почему находится в конце списка и почему нет толком никакого описания какая структура для каких целей ;)?Ладно, фиг с ним, идем дальше по документу, раздел 43.2 - TIM Firmware driver API description и подраздел 43.2.2 - How to use this driver. И там написано следующее:

1. Initialize the TIM low level resources by implementing the following functions

depending from feature used :

Time Base : HAL_TIM_Base_MspInit()

Input Capture : HAL_TIM_IC_MspInit()

Output Compare : HAL_TIM_OC_MspInit()

PWM generation : HAL_TIM_PWM_MspInit()

One-pulse mode output : HAL_TIM_OnePulse_MspInit()

Encoder mode output : HAL_TIM_Encoder_MspInit()

Вроде для моей простейшей задачи надо использовать базовую функцию HAL_TIM_Base_MspInit(), но ее нет в сгенерированном коде! Так же я не нашел и включение тактирования, как требует второй пункт:

2. Initialize the TIM low level resources :

a. Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); …

Короче вообще не понятно что происходит! А теперь снова смотрим на сгенерированный код и видим что в функции инициализации используется структура TIM_MasterConfigTypeDef (ска откуда она взялась???). Оказывается из документа через 40 страниц, пункт 44 - HAL TIM Extension Driver и сразу же описание этой структуры.

По какому принципы все это работает? Как новичку можно во всем этом разобраться если не понятна сама концепция использования библиотекой? Даже когда пытаешься решить задачу задом наперед (по сгенерированому коду понять как надо выбирать структуры и как пользоваться библиотекой), то все равно не получается. Просьба не проходите мимо, думаю что большинство людей сталкиваются с такими вопросами. Буду благодарен за любую помощь.

Изменено пользователем OperAmp
Ссылка на комментарий
Поделиться на другие сайты

это сначала туговато. Потом недельки через две-три становится все ясно как день. Помочь тут сложно, практика нужна. Чем больше, тем лучше.

Если не охота вникать в хал (а многие думают что он говно, и не стесняются об этом говорить), то можно как все по старинке на регистрах это дело быстренько замутить. Да будет не очень читабельно, но работать будет. Я вот на хал все пишу и мне пофик. Поначалу было сложновато вникнуть, но потом прошло само собой и отвыкать уже не охота.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Уважаемый mail_robot, именно Ваш пост надоумил меня перейти на HAL. 

И все же, хотелось бы получить немного ответов по моему вопросу. Вот представьте себе что перед Вами есть документация на HAL и вам надо настроить TIM6 чтобы переполнялся каждые 500 мс и вызывал прерывания.

Напишите логичный, вытекающий из документации, алгоритм действий, чтобы настроить таймер! Хочу понять логику вещей, так как то что генерит Cube и то что написано в доках не совсем для меня логично. Спасибо!

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

@OperAmp

краснею, но сознаюсь - не смогу обьяснить доступными словами. Да и вручную писать то, что может за секунду начирикать автомат, это мазохизм. Лучше потратить на более качественный основной код, чем пытаться повторить подвиг куба и сотворить стандартный конфиг руками. Если надо в коде перенастроить таймер, ну скопируйте его инитку в код, перезапустите и всех дел. Нафига что-то изобретать?

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

11 час назад, OperAmp сказал:

Уважаемый mail_robot, именно Ваш пост надоумил меня перейти на HAL

Посмотрите https://www.youtube.com/playlist?list=PLJTlt64jBcCuRgAMGImQzxRlYdSKa5Ifk

Много вопросов отпадёт

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

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

Посмотрите https://www.youtube.com/playlist?list=PLJTlt64jBcCuRgAMGImQzxRlYdSKa5Ifk

Много вопросов отпадёт

Данный курс, конечно, лучик света в тоннеле HAL, но там он ничего не объясняет. Видео "просто возьми эту функцию и скопируй себе в прогу".

12 часа назад, MasterElectric сказал:

@OperAmp перейти на HAL, это откуда?

Ну громко сказал - ПЕРЕШЕЛ ))). Начинал на SPL писать, потом узнал что он больше не поддерживается и взамен ему HAL выпустили, плюс очень удобный конфигуратор Cube.

16 часов назад, mail_robot сказал:

@OperAmp

краснею, но сознаюсь - не смогу обьяснить доступными словами. Да и вручную писать то, что может за секунду начирикать автомат, это мазохизм. Лучше потратить на более качественный основной код, чем пытаться повторить подвиг куба и сотворить стандартный конфиг руками. Если надо в коде перенастроить таймер, ну скопируйте его инитку в код, перезапустите и всех дел. Нафига что-то изобретать?

Напишите, пжл, чем в документации отличаются описания перифирии в пунктах Generic и Extension? 

43 HAL TIM Generic Driver

44 HAL TIM Extension Driver

На каждую периферию есть эти Generic  и Extension...

(Нашел ответ в самом начале документации. Для особо талантливых написано ;)

The HAL driver APIs are split into two categories: generic APIs which provide common and generic functions for all the STM32 series and extension APIs which include specific and customized functions for a given line or part number.)

Изменено пользователем OperAmp
Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, OperAmp сказал:

Данный курс, конечно, лучик света в тоннеле HAL, но там он ничего не объясняет. Видео "просто возьми эту функцию и скопируй себе в прогу".

Ну не знаю. По-моему, работа с таймерами в CubeMX и HAL прекрасно разжёвана (хоть и не без ошибок, о чём я автору в камментах указал)

Программирование МК STM32. УРОК 5. Библиотека HAL. STM32 CUBE MX. Таймеры

Что вам ещё нужно - не могу представить.

 

Вот ещё можно посмотреть - прям ваши хотелки про 500 мс

STM32Cube. Таймер и прерывания.

Изменено пользователем Darth_Vader
Ссылка на комментарий
Поделиться на другие сайты

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

Что вам ещё нужно - не могу представить.

Я хочу понять как люди пользуются документацией. Повторю вопрос, который задавал ранее:

Вот представьте себе что перед Вами есть документация на HAL и вам надо настроить TIM6 чтобы переполнялся каждые 500 мс и вызывал прерывания. Напишите логичный, вытекающий из документации, алгоритм действий, чтобы настроить таймер!

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

3 минуты назад, OperAmp сказал:

Вот представьте себе что перед Вами есть документация на HAL и вам надо настроить TIM6 чтобы переполнялся каждые 500 мс и вызывал прерывания. Напишите логичный, вытекающий из документации, алгоритм действий, чтобы настроить таймер!

Я так не делал, помочь не смогу.

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

Читаю/смотрю/слушаю всю информацию, которую могу получить, а не только документацию.

Изменено пользователем Darth_Vader
Ссылка на комментарий
Поделиться на другие сайты

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

философия высокоуровневого языка:

    Красивое лучше, чем уродливое.
    Явное лучше, чем неявное.
    Простое лучше, чем сложное.
    Сложное лучше, чем запутанное.
    Плоское лучше, чем вложенное.
    Разреженное лучше, чем плотное.
    Читаемость имеет значение.
    Особые случаи не настолько особые, чтобы нарушать правила.
    При этом практичность важнее безупречности.
    Ошибки никогда не должны замалчиваться.
    Если не замалчиваются явно.
    Встретив двусмысленность, отбрось искушение угадать.
    Должен существовать один — и, желательно, только один — очевидный способ сделать это.
    Хотя он поначалу может быть и не очевиден
    Сейчас лучше, чем никогда.
    Хотя никогда зачастую лучше, чем прямо сейчас.
    Если реализацию сложно объяснить — идея плоха.
    Если реализацию легко объяснить — идея, возможно, хороша.
    Пространства имён — отличная вещь! Давайте будем делать их больше!

здесь ответы на все, что кажется странным или громоздким или неправильным в HAL. И именно поэтому он и появился. И если вы все еще пытаетесь поспорить с мировой практикой программирования, то вы просто еще недозревший фрукт

представленная в посте информация носит обезличенный справочно-информационных характер

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...