Мурик, получается действительно не заглядывали Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?
[quote="dosikus"]Просто скачав книжки не получится понять почему происходят ошибки при компиляции
Я заказывал книгу Белова "Разработка устройств на мк AVR",с диском (Черт меня дернул читать эту ветку,снова читаю эту книгу,может до меня чего-то и дойдет... )
Novice user, может быть, я и не прав, но знакомиться с C надо по Кернигану и Ритчи. Причем пробовать их примеры не на МК, а на обычном компе, например с GCC. Тогда быстро прийдет понимание языка. А пытаться одновременно изучать МК и С можно конечно, но в разы сложнее, чем по очереди.
Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.
Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.
Я могу запомнить, почему палочка это xor, галочка двойная это сдвиг, == это не =, а ! это not. Я даже научился вводить с клавиатуры "|" , Умею писать примитивные программы на Си, и даже читать некоторые чужие, транслировать их в Бейсик... Но язык Си, даже если я запомню все эти воиды и палочки с галочками, не станет удобным языком для реализации задумок, так как привычнее массивы, for...next , do...loop и shift вместо дурацких птичек >> . Проблема в синтаксисе. Сама программа строится одинаково во всех компиляторах. Код из под Bascom, работает точно также по таймингам, а иногда и лучше, чем из под компиляторов на Си.
Мурик, получается действительно не заглядывали Прямо с начала: ARM_CAN_Initialize() - два callback, ARM_I2C_Initialize() - один callback, ARM_USART_Initialize() - один callback, ARM_USBH_Initialize() - - два callback. Хватит для начала?
Решил таки посмотреть, чего же я себя лишил никогда не воспользовавшись этими волшебными функциями. Искал, искал... В компиляторах которыми я пользуюсь в CMSIS-Driver только шаблоны этих функций, реализации нет. Ладно, копнём дальше. В Keil нашёл реализацию.
Ну и как мне теперь это развидеть? Для вполне себе комфортного программирования от CMSIS достаточно определения регистров, функций для работы с контроллером прерываний типа NVIC_EnableIRQ() и макросов для доступа к низкоуровневым функциям ядра типа __set_MSP().
VladislavS, а что Вы хотели увидеть в функции инициализации, кроме регистрации callback для последующего вызова его уже из других функций? И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем? К тому же, когда ресурсами устройства в разное время пользуются разные модули программы, намного проще регистрировать Callback функции, чем для каждого модуля править общий обработчик прерываний.
Microtech, при чем тут "удобство"? Например, английский тут для большинства не родной язык и не удобный, что совершенно не мешает его знать и использовать при чтении даташит и прочей документации.
И Вы действительно каждый раз сами выписываете взаимодействие с CAN или USB через низкоуровневые функции? Зачем?
Да, низкоуровневое пишу каждый раз под конкретный чип, а как по другому? Логика работы USB находится уровнем выше и универсальная для разных чипов, само собой.
как всегда: вопрос начинающего плавно, но неизбежно, переходит в писькомерство профессионалов.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе удивительно, но при взгляде на многих сверху ничего не меняется...
начинать (и заканчивать) что-либо можно в любом возрасте. в вот на Си перешел позже 40 лет, до этого с 20 лет пользовался Delphi - и был очень даже начинающим, и волосы шевелились от Си... что не так-то?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе удивительно, но при взгляде на многих сверху ничего не меняется...
VladislavS, Я ни в коем случае не оспариваю Ваше право выбора реализации работы с тем же CAN или USB, но использование CMSIS заметно упрощает разработку и, тем более портирование между ARM MK, даже разных производителей. При этом добиться того же уровня оптимальности кода, как в CMSIS тоже довольно трудоемко. А асинхронный ввод-вывод я всегда считал предпочтительней синхронного. Почему Вы считаете иначе?
VladislavS, простите, значит я не так понял Ваши слова. Но не на нулевом кольце защиты в ARM асинхронный ввод-вывод возможен только через callback функции. А я так понял, что callback функциями Вы не пользуетесь...
А я так понял, что callback функциями Вы не пользуетесь...
Да хватит уже за меня писать! Лично Я программирую всё что умеет выполнять код. А месседж мой был в том, что для освоения программирования микроконтроллеров на Си во все эти дебри с кольцами защиты и коллбэками лезть не надо. Берёшь Cortex-M0 и в стиле AVR дрыгаешь ногами параллельно осваивая периферию.
Но язык Си, даже если я запомню все эти воиды и палочки с галочками, не станет удобным языком для реализации задумок
Нужно больше практики и тогда станет проще и язык удобнее. Все дело в том что настолько привыкли писать на бейсике что изменение синтаксиса вызывает бурную негативную реакцию. Со временем по мере программирования на Си это пройдет. Но если даже не пытаться перейти на Си, конечно же негативная реакция никуда не денется.
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 Но не все компиляторы бейсика настолько хорошо оптимизируют код и обычно они проигрывают Си.
Добавлено 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.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения