STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

По умолчанию в KEIL ANSI C стандарт языка, есть опция включить C99 расширение.

https://radiowolf.ru/2016/12/143/keil_%c2%b5vision_ide/
Галочка Strict ANSI C это строгий режим стандарта ANSI C
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

О. Прикольный сайт. ) Спасибо. Почитаю.
И все же по поводу стандарта тоже интересно. Если С99 позволяет это делать, а другие не позволяют. Но куча примеров в интернете не натолкнула меня на правильное использование (объявление) цикла с параметром...
Станислав
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

С99 ни какое не расширение, а самый настоящий стандарт языка С, принятый 21 год назад взамен С89, которому больше трёх десятков лет! Стоит использовать последнюю доступную в компиляиоре версию языка. Последний стандарт на С - С18 принят совсем недавно.

И это я ещё молчу про С++, который вообще огонь!

Добавлено after 8 minutes 45 seconds:
СКАЗОЧНИК, всё верно у вас в цикле for. Счётчик цикла живёт только внутри цикла - это хорошо.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

C99 ни один компилятор не поддерживает полностью. Даже ваш православный GCC. Поэтому я сторонник ANSI C.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18730
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901134#p3901134"]Поэтому я сторонник ANSI C.[/uquote]
Наверное, и триграфы используете вместо неправославных { или #?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901134#p3901134"]C99 ни один компилятор не поддерживает полностью. Даже ваш православный GCC.[/uquote]Это шутка юмора такая? GCC С18 с 8-й версии поддерживает, а уже 10-я на дворе.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Одно дело опубликовать стандарт, другое дело внедрить его поддержку в компиляторы. Повторяю GCC не полностью поддерживает C99. Тот же майкрософт в погоне за C++ забили на C99
А вот код только с ANSI C поддерживается всеми компиляторами. Реализован качественно и полностью на нем до сих пор программируют и это считается хорошим тоном.
Быдлокодить вы можете на чем угодно, это ваше право каким языком программировать.
К тому же учебного материала качественного по ANSI C больше

Просто не стаклкивались с багами приложений когда компилятор херню компилит либо не понимает что от него хотят
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Завязывай уже. https://gcc.gnu.org/c99status.html
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Поддерживает, но не полностью. Еще бы он С99 не компилировал в 2020
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901344#p3901344"]Поддерживает, но не полностью. Еще бы он С99 не компилировал в 2020[/uquote]
В С++, например, есть "export template" из стандарта 2003 года, но его поддерживает только один компилятор из второго эшелона, что теперь на С++ не писать? :) Превью msvc уже C11/C17 полностью поддерживают, но в поддержке С99 действительно есть пробелы и т.к. подобная картина наблюдается в других компиляторах, то видимо в значительной степени дело в самом C99.
Последний раз редактировалось Reflector Сб окт 03, 2020 23:44:31, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А покажите, как на православной С-шечке на контроллере STM32F4 установить на ноге PA15 ноль?
Друг Кота
Аватара пользователя
Сообщения: 6542
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Вот чего спрошу - в STM32F303 старт, стоп, наки всяки и другое разное нужное для I2C железом формируются? Неужели свершилось, и не нужно в коде портянки километровые писать про то, что давно уже описано-переписано и в железе реализовано сто лет назад?
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Asmodey, а что в RM про это пишут?

ЗЫ: Моё IMHO. Новая реализация I2C от STM32 сложнее того что было в F1. При том что даёт больше автоматизации и, как говорят, меньше глючит. Но код для неё сложнее, кмк. Могу попозже кинуться примером кода.
Друг Кота
Аватара пользователя
Сообщения: 6542
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3901413#p3901413"]Asmodey, а что в RM про это пишут?[/uquote]Скорее не пишут, чем пишут. Скажем, описания битов START и STOP я в RM не нашел. Сначала удивился, затем понял, что их там нет вовсе, а I2C интерфейс у F303 отличается от F0 и F1. Отличается лучшую сторону, имхо.

Ваш код я уже нашел на изиэлектроникс, спасибо. Правда, кой-какие непонятки возникли с обработкой ошибок, но это решаемо. А без контроля ошибок I2C уже заработал у меня и чего-то пишет в слейв устройство.
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3901483#p3901483"]Скажем, описания битов START и STOP я в RM не нашел. Сначала удивился, затем понял, что их там нет вовсе,[/uquote]Как это нет? :)
Изображение
start-stop-.png
(89.44 КБ) 399 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 6542
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Позже нашел. В CR2. В примерах из интернета утверждалось, что они в CR1. Только stop мне не понадобился пока.
Астролябия-сама меряет, было бы что мерять!!!
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3901393#p3901393"]Вот чего спрошу - в STM32F303 старт, стоп, наки всяки и другое разное нужное для I2C железом формируются? Неужели свершилось, и не нужно в коде портянки километровые писать про то, что давно уже описано-переписано и в железе реализовано сто лет назад?[/uquote]
У нордиков раз в 10 все легче реализовано при чем DMA уже интегрирован в I2C. там вообще об этом не думаешь.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Опять появился повод немного взбаламутить стоячее болото любителей куба: в новой версии библиотеки LL для F1xx (v1.8.2) оне ухитрились в очередной раз поломать то, что неведомым образом хоть как-то работало прежде. Чтобы воспроизвести ситуацию, когда элементарнейшая конфигурация вообще не работает, нужно просто заинитить I2C1 для использования с библиотекой LL, чтобы получилось примерно такое:

Изображение

Раз и заинитились I2C-шные ноги в режим PUSH-PULL (обведено красным). Кури бамбук, три плату спиртом, хоть до заговения. Нифига не заработает.

[uquote="Oxford",url="/forum/viewtopic.php?p=3901727#p3901727"]У нордиков раз в 10 все легче реализовано при чем DMA уже интегрирован в I2C. там вообще об этом не думаешь.[/uquote]
У нордиков своих чудес в достатке. Начать с того, что дма, например, не работает с флешем.
Вложения
CubeMX_F103_I2C_FuckUp.jpg
(151.01 КБ) 327 скачиваний
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

a5021 если в нордиках ничего не понимаете лезть не надо. Программируйте молча в калокубе :tea:
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901738#p3901738"]a5021 если в нордиках ничего не понимаете лезть не надо.[/uquote]
У вас наваждение такое случилось, будто я не понимаю или вы и ответить сможете?
Ответить

Вернуться в «ARM»