STM32 без Си. mikroBasic for ARM.
Re: STM32 без Си. mikroBasic for ARM.
ПростоНуб, ссылки в студию. Посмотрим.
- Реклама
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
Мурик, получается действительно не заглядывали 
Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?
Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: STM32 без Си. mikroBasic for ARM.
[uquote="Мурик",url="/forum/viewtopic.php?p=3642204#p3642204"][quote="dosikus"]Просто скачав книжки не получится понять почему происходят ошибки при компиляции[/uquote]
Я заказывал книгу Белова "Разработка устройств на мк AVR",с диском
(Черт меня дернул читать эту ветку,снова читаю эту книгу,может до меня чего-то и дойдет...
)
Я заказывал книгу Белова "Разработка устройств на мк AVR",с диском
(Черт меня дернул читать эту ветку,снова читаю эту книгу,может до меня чего-то и дойдет...
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
Novice user, может быть, я и не прав, но знакомиться с C надо по Кернигану и Ритчи. Причем пробовать их примеры не на МК, а на обычном компе, например с GCC. Тогда быстро прийдет понимание языка. А пытаться одновременно изучать МК и С можно конечно, но в разы сложнее, чем по очереди.
Re: STM32 без Си. mikroBasic for ARM.
Не пользовался этими функциями.ПростоНуб писал(а):Мурик, получается действительно не заглядывали
AVR и ARM это не одно и тоже.Novice user писал(а):Я заказывал книгу Белова "Разработка устройств на мк AVR",с диском
Чтобы изучить Си нужна одна из книг для начинающих по этому ЯП, а не по МК.
Можно и на МК попробовать. Только отладку нужно настроить в ОЗУ чтобы не перезаписывать много раз флеш.ПростоНуб писал(а):Причем пробовать их примеры не на МК, а на обычном компе, например с GCC.
- Реклама
- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: STM32 без Си. mikroBasic for ARM.
Я могу запомнить, почему палочка это xor, галочка двойная это сдвиг, == это не =, а ! это not. Я даже научился вводить с клавиатуры "|" , Умею писать примитивные программы на Си, и даже читать некоторые чужие, транслировать их в Бейсик... Но язык Си, даже если я запомню все эти воиды и палочки с галочками, не станет удобным языком для реализации задумок, так как привычнее массивы, for...next , do...loop и shift вместо дурацких птичек >> . Проблема в синтаксисе. Сама программа строится одинаково во всех компиляторах. Код из под Bascom, работает точно также по таймингам, а иногда и лучше, чем из под компиляторов на Си.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642331#p3642331"]Мурик, получается действительно не заглядывали 
Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?[/uquote]Решил таки посмотреть, чего же я себя лишил никогда не воспользовавшись этими волшебными функциями. Искал, искал... В компиляторах которыми я пользуюсь в CMSIS-Driver только шаблоны этих функций, реализации нет. Ладно, копнём дальше. В Keil нашёл реализацию.Ну и как мне теперь это развидеть?
Для вполне себе комфортного программирования от CMSIS достаточно определения регистров, функций для работы с контроллером прерываний типа NVIC_EnableIRQ() и макросов для доступа к низкоуровневым функциям ядра типа __set_MSP().
Добавлено after 7 minutes 57 seconds:
[uquote="Microtech",url="/forum/viewtopic.php?p=3642358#p3642358"]Проблема в синтаксисе.[/uquote]Проблема в "стоя в гамаке".
[uquote="Microtech",url="/forum/viewtopic.php?p=3642358#p3642358"]Код из под Bascom, работает точно также по таймингам, а иногда и лучше, чем из под компиляторов на Си.[/uquote]Голословно. Пример в студию!
Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?[/uquote]Решил таки посмотреть, чего же я себя лишил никогда не воспользовавшись этими волшебными функциями. Искал, искал... В компиляторах которыми я пользуюсь в CMSIS-Driver только шаблоны этих функций, реализации нет. Ладно, копнём дальше. В Keil нашёл реализацию.
Спойлер
Код: Выделить всё
static int32_t I2C_Initialize (ARM_I2C_SignalEvent_t cb_event, I2C_RESOURCES *i2c) {
int32_t status;
uint32_t lock;
status = ARM_DRIVER_OK;
if ((i2c->status.state & I2C_INIT) == 0U) {
/* Clear run-time resources */
memset ((void *)i2c, 0, sizeof(I2C_RESOURCES));
/* Register application callback */
i2c->cb_event = cb_event;
do {
lock = LockSet(&I2C.CallLock);
if (lock == 1U) {
/* Increment the number of initializations */
I2C.InitState += 1U;
if (I2C.InitState == 1U) {
/* Initialize resources */
I2C.Active = NULL;
I2C.Qin = 0U;
I2C.Qout = 0U;
I2C.PowerState = 0U;
I2C.BusSpeed = 0U;
/* Call the underlying driver */
status = Driver_I2C->Initialize (I2C_MultiSlaveEvent);
}
if (status == ARM_DRIVER_OK) {
i2c->status.state = I2C_INIT;
} else {
I2C.InitState = 0U;
}
LockClr (&I2C.CallLock);
}
else {
osThreadYield();
}
} while (lock == 0U);
}
return (status);
}
Для вполне себе комфортного программирования от CMSIS достаточно определения регистров, функций для работы с контроллером прерываний типа NVIC_EnableIRQ() и макросов для доступа к низкоуровневым функциям ядра типа __set_MSP().
Добавлено after 7 minutes 57 seconds:
[uquote="Microtech",url="/forum/viewtopic.php?p=3642358#p3642358"]Проблема в синтаксисе.[/uquote]Проблема в "стоя в гамаке".
[uquote="Microtech",url="/forum/viewtopic.php?p=3642358#p3642358"]Код из под Bascom, работает точно также по таймингам, а иногда и лучше, чем из под компиляторов на Си.[/uquote]Голословно. Пример в студию!
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
VladislavS, а что Вы хотели увидеть в функции инициализации, кроме регистрации callback для последующего вызова его уже из других функций?
И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем?
К тому же, когда ресурсами устройства в разное время пользуются разные модули программы, намного проще регистрировать Callback функции, чем для каждого модуля править общий обработчик прерываний.
Microtech, при чем тут "удобство"? Например, английский тут для большинства не родной язык и не удобный, что совершенно не мешает его знать и использовать при чтении даташит и прочей документации.
И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем?
К тому же, когда ресурсами устройства в разное время пользуются разные модули программы, намного проще регистрировать Callback функции, чем для каждого модуля править общий обработчик прерываний.
Microtech, при чем тут "удобство"? Например, английский тут для большинства не родной язык и не удобный, что совершенно не мешает его знать и использовать при чтении даташит и прочей документации.
- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: STM32 без Си. mikroBasic for ARM.
Свалил из темы. Sorry. Закройте.. Сообщения есть, но информацию они не содержат.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642407#p3642407"]VladislavS, а что Вы хотели увидеть в функции инициализации, кроме регистрации callback для последующего вызова его уже из других функций?[/uquote]Там и дальше жесть. Тот же I2C_MasterTransmit() посмотри. Уж лучше HAL тогда. 
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642407#p3642407"]И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем?[/uquote]Да, низкоуровневое пишу каждый раз под конкретный чип, а как по другому? Логика работы USB находится уровнем выше и универсальная для разных чипов, само собой.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642407#p3642407"]И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем?[/uquote]Да, низкоуровневое пишу каждый раз под конкретный чип, а как по другому? Логика работы USB находится уровнем выше и универсальная для разных чипов, само собой.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 без Си. mikroBasic for ARM.
как всегда: вопрос начинающего плавно, но неизбежно, переходит в писькомерство профессионалов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
Да какой он в пень начинающий??? 30 лет на васике сидит!!! За это время обезьяну можно Си научить.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 без Си. mikroBasic for ARM.
начинать (и заканчивать) что-либо можно в любом возрасте. в вот на Си перешел позже 40 лет, до этого с 20 лет пользовался Delphi - и был очень даже начинающим, и волосы шевелились от Си... что не так-то?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
VladislavS, Я ни в коем случае не оспариваю Ваше право выбора реализации работы с тем же CAN или USB, но использование CMSIS заметно упрощает разработку и, тем более портирование между ARM MK, даже разных производителей.
При этом добиться того же уровня оптимальности кода, как в CMSIS тоже довольно трудоемко.
А асинхронный ввод-вывод я всегда считал предпочтительней синхронного. Почему Вы считаете иначе?
При этом добиться того же уровня оптимальности кода, как в CMSIS тоже довольно трудоемко.
А асинхронный ввод-вывод я всегда считал предпочтительней синхронного. Почему Вы считаете иначе?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642483#p3642483"]А асинхронный ввод-вывод я всегда считал предпочтительней синхронного. Почему Вы считаете иначе?[/uquote]Не надо приписывать мне свои фантазии!!! Где я хоть слово про это писал??? Нет и не может быть единственно верного решения на все случаи жизни.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
VladislavS, простите, значит я не так понял Ваши слова. Но не на нулевом кольце защиты в ARM асинхронный ввод-вывод возможен только через callback функции. А я так понял, что callback функциями Вы не пользуетесь...
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642532#p3642532"]А я так понял, что callback функциями Вы не пользуетесь...[/uquote]Да хватит уже за меня писать! Лично Я программирую всё что умеет выполнять код. А месседж мой был в том, что для освоения программирования микроконтроллеров на Си во все эти дебри с кольцами защиты и коллбэками лезть не надо. Берёшь Cortex-M0 и в стиле AVR дрыгаешь ногами параллельно осваивая периферию.
Re: STM32 без Си. mikroBasic for ARM.
Палочка | это OR. XOR это ^. https://ru.wikipedia.org/wiki/Операторы ... _операторыMicrotech писал(а):Я могу запомнить, почему палочка это xor
Нужно больше практики и тогда станет проще и язык удобнее. Все дело в том что настолько привыкли писать на бейсике что изменение синтаксиса вызывает бурную негативную реакцию. Со временем по мере программирования на Си это пройдет. Но если даже не пытаться перейти на Си, конечно же негативная реакция никуда не денется.Microtech писал(а):Но язык Си, даже если я запомню все эти воиды и палочки с галочками, не станет удобным языком для реализации задумок
В Си это есть, но синтаксис немного другой.Microtech писал(а):так как привычнее массивы for...next , do...loop
Представьте что в бейсике вместоMicrotech писал(а):shift вместо дурацких птичек >>
Код: Выделить всё
If a <> b ThenКод: Выделить всё
If a NoEqual b ThenЕсть диалекты бейсика где сдвиг выполняется "птичками" и побитовые операторы как в Си. https://www.purebasic.com/documentation ... ables.html
Поверьте, дело в привычке. Просто вы сильно привыкли к синтаксису бейсика. Какой язык лучше русский или английский? Большинство русскоязычных ответят что русский, а англичане и американцы назовут английский язык. То есть люди выберут язык который лучше всего знают и которым пользуются вне зависимости от того на самом деле он лучший или нет.Microtech писал(а):Проблема в синтаксисе.
Это не так. В зависимости от компилятора машинный код может сильно отличаться. Обычно Си компиляторы лучше оптимизируют код из-за чего он компактнее и быстрее работает. Замечу что дело не в языке, а в команде программистов, разрабатывающих компилятор. Чем опытнее она, тем лучше будет компилятор.Microtech писал(а):Сама программа строится одинаково во всех компиляторах.
Например есть компилятор бейсика FastAVR, который по размеру кода может обойти компиляторы Си. https://radiokot.ru/forum/viewtopic.php ... 1#p3354381
Но не все компиляторы бейсика настолько хорошо оптимизируют код и обычно они проигрывают Си.
Сравнение производительности математических вычислений. http://purebasic.mybb.ru/viewtopic.php?id=717#p7651VladislavS писал(а):Голословно. Пример в студию!
В Cortex-M?ПростоНуб писал(а):Но не на нулевом кольце защиты в ARM
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 без Си. mikroBasic for ARM.
Мурик, Вас в гугле забанили? Ну читайте.
Добавлено after 15 minutes 15 seconds:
VladislavS, что-то мне очень тяжело понимать ход Ваших мыслей. По мне так, для изучения ногодрыга есть ардуина. А если уж человек начинает изучать ARM, то или ногодрыг давно освоен, или он ему не нужен.
Ну как бы, для примера. Изучая программирование PC на уроках информатики в школе и даже в подавляющем большинстве институтов, регистры GPU не изучаются, режимы работы ядер GPU рассматриваются только поверхностно, и даже относительно высокоуровневое программирование на языке шейдеров, обычно, не изучают. Потому что для изучения PC и получения навыков программирования это не надо. Не надо даже уметь напрямую вызывать драйвер GPU. Достаточно пользоваться простыми для понимания и применения библиотечными функциями.
Я, конечно, не против детального изучения GPU, но я не могу себе представить не то что начинающего, даже студента, которому эта информации поможет в освоении PC.
Аналогично и с ARM. Прежде чем опускаться до детального изучения переферии, причем столь сложной, как Ethernet, WiFi, USB и даже CAN, лучше освоить стандартные библиотеки для работы с этой переферией. И, с очень большой вероятностью, доскональное изучение контроллера Ethernet и даже стека протоколов TCP/IP этому начинающему не понадобится. Тот же веб-сервер он сможет поднять только используя стандартные библиотеки, причем почти сразу, в начале освоения ARM, например, на STM32F4-DISCOVERY.
Добавлено after 15 minutes 15 seconds:
VladislavS, что-то мне очень тяжело понимать ход Ваших мыслей. По мне так, для изучения ногодрыга есть ардуина. А если уж человек начинает изучать ARM, то или ногодрыг давно освоен, или он ему не нужен.
Ну как бы, для примера. Изучая программирование PC на уроках информатики в школе и даже в подавляющем большинстве институтов, регистры GPU не изучаются, режимы работы ядер GPU рассматриваются только поверхностно, и даже относительно высокоуровневое программирование на языке шейдеров, обычно, не изучают. Потому что для изучения PC и получения навыков программирования это не надо. Не надо даже уметь напрямую вызывать драйвер GPU. Достаточно пользоваться простыми для понимания и применения библиотечными функциями.
Я, конечно, не против детального изучения GPU, но я не могу себе представить не то что начинающего, даже студента, которому эта информации поможет в освоении PC.
Аналогично и с ARM. Прежде чем опускаться до детального изучения переферии, причем столь сложной, как Ethernet, WiFi, USB и даже CAN, лучше освоить стандартные библиотеки для работы с этой переферией. И, с очень большой вероятностью, доскональное изучение контроллера Ethernet и даже стека протоколов TCP/IP этому начинающему не понадобится. Тот же веб-сервер он сможет поднять только используя стандартные библиотеки, причем почти сразу, в начале освоения ARM, например, на STM32F4-DISCOVERY.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 без Си. mikroBasic for ARM.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3642565#p3642565"]VladislavS, что-то мне очень тяжело понимать ход Ваших мыслей.[/uquote]Почитайте первое сообщение темы. Краткий смысл которого
[uquote="Microtech",url="/forum/viewtopic.php?p=3641828#p3641828"]Начал изучать StM32, как замену AVR в несложных и средних проектах.
...
Предлагаю обмен опытом работы с StM32, без использования Си.[/uquote]
Причём тут вообще ваши GPU, USB, WiFi и т.д. ? Речь о том, что Си надо изучать и не обязательно сразу в дебри лезть.
ЗЫ: Меня не надо учить.
[uquote="Microtech",url="/forum/viewtopic.php?p=3641828#p3641828"]Начал изучать StM32, как замену AVR в несложных и средних проектах.
...
Предлагаю обмен опытом работы с StM32, без использования Си.[/uquote]
Причём тут вообще ваши GPU, USB, WiFi и т.д. ? Речь о том, что Си надо изучать и не обязательно сразу в дебри лезть.
ЗЫ: Меня не надо учить.


