Я много раз пробовал и ещё буду пробовать не раз перейти на STM, но как только увижу вот такие конструкции
HAL_NVIC_SetPriorityGrouping( NVIC_PRIORITYGROUP_0 );
HAL_NVIC_SetPriority( TIM2_IRQn, 0, 0 );
HAL_NVIC_EnableIRQ( TIM2_IRQn );
так сразу понимаю, что надо быть как минимум Львом Толстым. 
Изучаем ARMы
Сообщений 121 страница 150 из 185
Поделиться1212019-08-05 13:00:05
Поделиться1222019-08-05 13:13:24
Я много раз пробовал и ещё буду пробовать не раз перейти на STM, но как только увижу вот такие конструкции...
АНАЛОГИЧНО!!!

Поделиться1232019-08-05 16:01:04
Плюс конфигурирование АРМов ещё та Жжжж, даже для этого есть готовые утилиты (с генерацией кода)...
Уже несколько лет пишу проги для ARM МК и не вижу сложностей с конфигурированием. Когда в первый раз настраиваешь какую-то периферию, обычно возникают сложности из-за недостатка опыта, но в дальнейшем просто копирую куски кода и при необходимости вношу изменения в конфигурацию.
В общем это всё, так никто не смог реализовать в легкой форме использования.
Библиотека SPL облегчает конфигурирование. Или можно работать непосредственно с регистрами. Они такие как в AVR, только 16-ти и 32-ух битные.
Даже дунь толком нет на них
Есть. https://habr.com/ru/post/395577/
https://eax.me/stm32-arduino-ide/
Только смысл? Язык C++. В прошивке много лишнего. Отладки нет.
Много волокиты, надо нарабатывать опыт, входная точка в направление весьма большая.
Я бы так не сказал бы. Довольно быстро изучил основы и параллельно изучая Си.
HAL_NVIC_SetPriorityGrouping( NVIC_PRIORITYGROUP_0 );
HAL_NVIC_SetPriority( TIM2_IRQn, 0, 0 );
HAL_NVIC_EnableIRQ( TIM2_IRQn );
Это код сгенерирован автогенератора.
Но по моему код вполне читаем и несложно понять что он делает. Устанавливается 0 группа приоритетов прерываний (число групп и их наличие зависит от модели МК). Далее задается приоритет и субприоритет прерывания таймера 2. Ну и разрешается прерывание.
Приоритеты важны в том случае когда необходима функция вложенных прерываний, т. е. более высокоприоритетное прерывание прерывает менее приоритетное прерывание.
Эти куски кода не обязательно каждый раз писать. Они копируются при необходимости в них вносятся правки, т. е. изменяются несколько букс или цифр (например имя таймера другое или приоритет отличается).
Короче, не все так сложно. И нет необходимости постоянно вводить много текста. В среде программирования на этот случай работает автодополнение, предоставляющее список фраз по введенному тексту.
Я много раз пробовал и ещё буду пробовать не раз перейти на STM
Для начала нужно Мартина прочитать чтобы сложилось представление о ядре и МК в целом. Литература
При возникновении вопросов, спрашивайте на форуме.
Поделиться1242019-08-05 18:40:17
Для начала нужно Мартина прочитать чтобы сложилось представление о ядре и МК в целом
Там ссылка битая,тоже надо изучать стм...
Поделиться1252019-08-05 19:35:12
Добавил кото-ссылку на Мартина.
Поделиться1262019-08-05 19:45:37
Спасибо!
Скачал EmBlocks 2.30,буду пробовать
Поделиться1272019-08-06 21:35:56
Обзорный вебинар по всей линейке stm32 для начинающих
Поделиться1282019-08-08 17:11:34
Кто нибудь пробовал STM32CubeIDE - интегрированная среда разработки от ST?
Поделиться1292019-08-08 19:44:38
Кто нибудь пробовал STM32CubeIDE
Этой IDE не пользовался, а куб использовал некоторое время. Потом отказался от него.
Не знаю как сейчас, а несколько лет назад была очень плохая совместимость между версиями. Из-за чего несколько раз приходилось создавать проект с нуля потому что ранее сгенерированный кубом код оказался несовместим с текущей версией и при компиляции было много ошибок. Кроме этого в файлах можно писать код только в определенных местах, иначе он затрется кубом при очередной генерации кода.
STM32CubeIDE базируется на Eclipse написанной на Java и нужно иметь мощный комп чтобы IDE более или менее нормально работала, иначе работа очень медленная.
Поделиться1302019-12-05 23:28:48
На Али можно за относительно недорого (около 4$) купить STM32H750VBT6. К примеру. https://ru.aliexpress.com/item/4000345236860.html
Этот МК интересен тем что работает на частоте 480 МГц (у моего первого компа было меньше) и аппаратно поддерживает вычисления с плавающей точкой с переменными типа Single и Double. Это сильно ускоряет вычисления с плавающей точкой.
МК в 100 выводном корпусе и по документации имеет 128 КБ (реально 2 МБ) флеш памяти (с возможностью подключения Quad-SPI флешки и выполнения кода из нее) и имеет 1 МБ ОЗУ.
Для быстрой пересылки данных имеются 4 DMA контроллера в каждом по несколько каналов.
Набор периферии такой: 4 I2C, 4 USART и 4 UART, а также 1 LPUART (низкопотребляющий, работает в режиме экономии энергии).
6 SPI 3 из которых могут работать в режиме I2S, 4 SAI (последовательный аудио интерфейс), SPDIFRX интерфейс, SWPMI, MDIO, 2 SDIO, 2 CAN, 2 USB OTG, Ethernet контроллер, HDMI-CEC контроллер, интерфейс камеры.
В МК есть 3 16-ти битных АЦП с общим числом каналов до 36, 2 12-ти битных ЦАП, 2 низкопотребляющих компаратора, 2 ОУ (7 МГц максимум), DFSDM (цифровой фильтр для сигма дельта модулятора).
Имеется LCD-TFT контроллер для дисплея разрешением XGA или меньшим.
Chrom-ART графический ускоритель.
Аппаратный JPEG кодек.
20 таймеров.
Часы реального времени.
Аппаратно поддерживаются генерация случайных чисел, а также AES 128, 192, 256, TDES, MD5, SHA-1, SHA-2, HMAC.
Поделиться1312019-12-06 12:33:30
На Али можно за относительно недорого (около 4$) купить STM32H750VBT6.
Ну вообще-то 501,05 руб. - это не 4$, там ещё доставка в стоимость самого МК.
Поделиться1322019-12-06 12:45:44
У меня стоимость доставки 25 рублей, т. е. общая стоимость 285 рублей.
Ничего не мешает поискать этот МК у других продавцов, у которых доставка может быть бесплатной или иметь небольшую стоимость.
Поделиться1332020-01-13 22:15:51
Генератор случайных чисел.
Решил проверить работу генератора случайных чисел в STM32F407. Для этого написал небольшую программу запускающую генератор и получающую 20 случайных чисел.
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE); // Включение тактирования генератора случайных чисел.
RNG_Cmd(ENABLE); // Включаем генератор случайных чисел.
for (uint8_t i=0; i<20; i++)
{
while (RNG_GetFlagStatus(RNG_FLAG_DRDY) == RESET); // Ждем завершения генерации случайного числа.
x[i] = RNG_GetRandomNumber(); // Записываем случайное число в массив.
}Результат генерации.
Перезапустил контроллер с выключением питания. Получил совершенно другие числа. Генератор работает.
Генерация числа не требует много времени.
На скриншоте показано за сколько тактов генерируются числа.
Первая генерация после включения генератора происходит за 190 тактов, а последующие за 70 или 130 (на самом деле меньше, т. к. тратятся такты на чтение из счетчика DWT и запись в массив).
Учитывая что тактовая частота ядра 160 МГц, относительно которой производится измерение, это значит что возможно генерировать больше миллиона чисел в секунду.
Поделиться1342020-01-14 18:17:52
Кто нибудь использует Visual Studio + VisualGDB?
Поделиться1362020-09-03 21:42:05
Решил проверить работу генератора случайных чисел в STM32F407.
Аналогично с недавно появившейся моделью STM32G0. МК интересен тем что производительный, низкопотребляющий и относительно дешевый. Эту модель выпускают в том числе в корпусе SO-8 - то что нужно для простых и малогабаритных конструкций.
Поскольку МК недавно появился и для него библиотеки SPL нет, написал код с использованием LL (без куба). Код получился довольно компактным и размер прошивки относительно небольшой 476 байт в релизной версии.
#include "main.h"
int main(void)
{
uint32_t x[20]={0}; // Массив под данные.
// Настраиваем генератор случайных чисел (RND).
LL_RCC_SetRNGClockSource(LL_RCC_RNG_CLKSOURCE_HSI_DIV8); // Частота тактирования RND равна 2 МГц (16/8).
LL_RCC_SetRNGClockDiv(LL_RCC_RNG_CLK_DIV1);
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_RNG); // Включаем тактирование RNG.
LL_RNG_Enable(RNG); // Включаем RNG.
while(1)
{
for (uint8_t i=0; i<20; i++)
x[i] = LL_RNG_ReadRandData32(RNG); // Генерация случайных чисел.
}
}Поделиться1382025-01-04 11:58:29
А разве в новых версиях не USB-ключ? Вроде с месяц-два назад был на их сайте и в рекламе внизу показан именно USB-донгл.
Да и не Бейсик это! Фигово причесанная "под ЯВУ" Ся, ужасная и богомерзская
Бейсик: это компактность не в ущерб пониманию и не простыня в 15 символов на команду!
ну сравните, какой-же это Бейсик?!:
Lcd_Cmd(_LCD_CLEAR) ' Очистка дисплея
Lcd_Cmd(_LCD_SHIFT_RIGHT)
А про UART вообще молчу!
PPS_Mapping(5, OUTPUT, _TX2_CK2) ' Делает штырек 5 выходом и отображает на него выход EUSART2 Asynchronous Transmit/Synchronous Clock
UART_Remappable_Init
UART_Remappable_Read_Text(output, 'OK', 10)
if (UART_Remappable_Data_Ready() = 1) then...
И как наизусть эти извраты с подчеркиванием и перечнем команд помнить?
И, самое ужасное: ВРУЧНУЮ подключать библиотеки! Простите, что это за ЯВУ, если ручками, как в Си?!
Я неделю не мог понять причину ошибки при компиляции простейшей программы из примеров!
Оказалось, надо САМОМУ выбрать библиотеку и самому выбрать все настройки в ней...
Я с этой конторой знаком больше 20 лет, переводил на русский... Дали мне ключ для PIC. Но не применил их продукт ни разу... ))
Отредактировано Александр Д. (2025-01-04 15:15:21)
Поделиться1392025-01-04 19:38:50
Огого какой какой высокий слог.
Учитель! Перед именем твоим Позволь смиренно преклонить колени! (Н. А. Некрасов).
Лекарство №1 HIDDongleDLL.dll тупо меняем в каталоге на него или лекарство №2 стандартный Patch.
Александр, ну вы просто поставили меня в тупик. Либо подчёркивание, либо ничего.
Мы примерно одного возраста. Давайте уже помнить, что микропроцессоры все разные и подход к ним тоже разный.
Поделиться1402025-01-04 19:42:49
Вот пример SOFT program Soft_UART
program Soft_UART
dim error_ as byte
counter, byte_read as byte ' Auxiliary variables
main:
GPIO_Digital_Output(@GPIOD_BASE, _GPIO_PINMASK_ALL) ' digitalni output
GPIOD_ODR = 0
error_ = Soft_UART_Init(GPIOA_BASE, 10, 9, 115200, 0) ' Initialize Soft UART at 56000 bps
if (error_ > 0) then
GPIOD_ODR = error_ ' Signalize Init error
while TRUE
nop ' Stop program
wend
end if
Delay_ms(100)
for counter = "z" to "A" step-1 ' Send bytes from "z" downto "A"
Soft_UART_Write(counter)
Delay_ms(100)
next counter
while TRUE ' Endless loop
byte_read = Soft_UART_Read(error_) ' Read byte, then test error flag
if (error_ <> 0) then ' If error was detected
GPIOD_ODR = error_ ' signal it on PORTD
else
Soft_UART_Write(byte_read) ' If error was not detected, return byte read
end if
wend
end.
Чем не бейсик?
Поделиться1412025-01-04 19:52:10
Прежде чем критиковать нужно разобраться в синтаксесе.
"ну сравните, какой-же это Бейсик?!:
Lcd_Cmd(_LCD_CLEAR) ' Очистка дисплея
Lcd_Cmd(_LCD_SHIFT_RIGHT)"
В чем проблема? Первая строчка очищает дисплей, вторая сдвигает текст на одну позицию вправо. Это разные команды.
Поделиться1422025-01-04 20:04:13
Я неделю не мог понять причину ошибки при компиляции простейшей программы из примеров!
Оказалось, надо САМОМУ выбрать библиотеку и самому выбрать все настройки в ней...
Тоже знаком не понаслышке с этой фирмой
Имею compiler для AVR и для ARM но для си, более деньги не хотел тратить
Работает всё без USB ключа, по старинке с сериальными номерами
Подход у них конечно своеобразный, да и выглядит немного убого, ну как говорится хозяин барин, не хотите не пользуйте
Я тоже не написал на нём ни одного проекта, только наброски но до конца так и не получилось, постоянно какие-то глюки, а поддержка какая-то никакая.
Поделиться1432025-01-04 20:48:00
каждому - своё. Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.
А после перехода STC где 45 МГц - вообще всё летает...
Я понимаю, когда надо 120 МГц и выше под особые задачи и выбора нет - ну, тогда надо осваивать всё с нуля и на другом.
Мне же неинтересно вообще.
Вы сказали своё мнение, я - своё. Каждый остался при своём - удобно: вроде поделился, вроде осталось со мной 
Поделиться1442025-01-06 16:38:18
Когда то Петр написал "Из бейсиков для ARM есть mikroBasic, но он "жадный"... Лекарства для него не нашел."
Это давно было.
Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.
Это только кажется что задачи нет. Или вообще ничего не разрабатываете на МК?
Ни разу не было такого что не хватало количества или битности таймеров или их предделителей? Например в STM32 до 14 таймеров 16 и 32 бит. Предделитель 16 бит с коэффициентом деления 1 - 65536, а не как в AVR, 1 , 8, 64, 256 и 1024.
У таймеров по 4 канала захвата / сравнения, а не 2 как в AVR.
Таймер может без участия проца запускать АЦП, а он в свою очередь записывать результат в память так же без участия проца.
МК может выступать в качестве симулятора если к нему подключить отладчик ST-Link, J-Link или другой. Это лучше чем программный симулятор на компе, который может не учитывать некоторые нюансы МК или периферии из-за чего может работать не так как в железе.
Ни разу такого не было что МК работал на пределе возможностей выполняя несколько задач, критичных по времени? Или в добавок к этому нужно быстро выводить информацию на графический дисплей, а МК постоянно отвлекается на другие задачи из-за чего вывод очень медленный?
Флеша и оперативки всегда хватало? Особенно когда нужно работать с MicroSD картой, требующей как минимум 512 байт, но по нормальному в несколько раз больше. Тоже можно сказать про графический дисплей.
То есть нужно пробовать и когда узнаете возможности и сравните, то с AVR не очень захочется работать.
Конечно речь идет про Си, а не про mikroBasic, который для меня оказался не очень удобным.
Поделиться1452025-01-06 17:18:10
Не припомню.
Обычно не хватает возможности компилятора по сравнению с возможностью другого компилятора, но который для МК другого производителя 🥺
Вот сейчас не хватает возможностей баском-авр по сравнению с баском-8051. Конечно я сам с нуля могу написать пп для такой замены, но хочется же "как раньше" 😂
Поделиться1462025-01-06 18:27:34
Прежде чем критиковать нужно разобраться в синтаксесе.
Только сейчас заметил сообщение.
Я говорю о чистоте языка.
В этом плане тот же Баском гораздо продуманнее и логичнее
Cls против Lcd_Cmd(_LCD_CLEAR)
LCD"" или UART1_Write_Text()
Printbin или Soft_UART_Write()
Согласитесь, запись слева куда понятнее писанине справа, длиной в 15-20 символов.
Позволю себе судить, так как на разных Паскалях и Бейсиках писал с 14-15 лет.На заводе всё было на Паскале, всё оборудование (железо 286 и 386). Иногда на ассме писал под 8086.
Но то на любителя и на задачу 
С Рождеством православных!
Поделиться1472025-01-06 19:05:01
Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.
Мне тоже хватало до поры до времени, но сейчас немного иначе. Получилось так, что пошёл работать на предприятие которое делает ...
Вообщем для замены полётника от наших друзей нужны свои разработки. Там AVR конечно же не потянет. Гироскоп, акселерометр, барометр, 4 канала ШИМ и этот минимум нужен в реальном времени. А если цеплять GPS или Glonass вообще завал получается. Приходится подстраиваться под требование века. 
Отредактировано sva-don (2025-01-06 19:06:32)
Поделиться1482025-01-06 19:08:21
Всё верно: Есть задача - выбираем инструмент под оный 
Поделиться1492025-01-06 19:15:21
Только сейчас заметил сообщение.
Я говорю о чистоте языка.
Ну вы батенька заелись. Пара слов набранные на клаве за 3 сек. нарушают чистоту языка? 
Поделиться1502025-01-06 19:18:37
на разных Паскалях и Бейсиках писал с 14-15 лет
Приложения под WIN я до сих пор пишу на Паскале в RAD Studio. Я переходить на другие языки совсем не намерен. Мне нравится и ни чем не хуже С и всяких там других его извращениях. 






