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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7054
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

a5021, Oxford, спасибо.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Почему я не могу сделать так? Ругается и выдает две ошибки...
что переменная не объявлена и что ожидается выражение...


for (unsigned int j=1; j<0x0FFF; j++) // Ждем запуска резонатора
{
if((RCC->CR & RCC_CR_HSERDY ) != RCC_CR_HSERDY)
{
//j=0x1FFF;
break;
}
}
Станислав
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Стандарт языка С поставьте повыше.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Еще бы знать , как это сделать... )))

Добавлено after 2 minutes 3 seconds:
Все. Разобрался. В настройках проекта С99

Добавлено after 19 seconds:
Спасибо большое! Век живи, век учись.

Добавлено after 15 minutes 41 second:
Кстати, только что проверил работу CSS. Замкнул кварц послюнявленым пальцем. МК перешел на тактирование от HSI, даже после того, как при инициализации я его выключил. Светодиоды стали моргать медленнее. Но обратно не вернулся на HSE.

Таким образом у БлюПилл нет такого, чтобы опять возобновлялось тактирование, как на других МК, кто-то указывал выше. )))
Станислав
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

СКАЗОЧНИК не переключайся на С99. Обьяви как положено в рамках ANSI C
Инженер R@D

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

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

Ну вот... (( Теперь другое советуют...
А как положено? Я читал, что в цикле ФОР можно задавать переменную сразу. Ну, вынесу я ее из цикла, как объявление переменной. А дальше? Я не совсем понимаю, как и что надо там сделать. Мне казалось, что все правильно. Я даже много раз перепроверил.

Добавлено after 41 second:
И в чем будет приемущество?

Добавлено after 1 minute 8 seconds:
Кстати, у меня галочка сейчас стоит на С99. А на ANSI C снята. Но она и была снята.
Станислав
Реклама
Опытный кот
Аватара пользователя
Сообщения: 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 позволяет это делать, а другие не позволяют. Но куча примеров в интернете не натолкнула меня на правильное использование (объявление) цикла с параметром...
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 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
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 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
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 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 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

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

Сообщение Asmodey »

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

Сообщение VladislavS »

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

ЗЫ: Моё IMHO. Новая реализация I2C от STM32 сложнее того что было в F1. При том что даёт больше автоматизации и, как говорят, меньше глючит. Но код для неё сложнее, кмк. Могу попозже кинуться примером кода.
Друг Кота
Аватара пользователя
Сообщения: 7054
Зарегистрирован: Сб янв 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 уже заработал у меня и чего-то пишет в слейв устройство.
Астролябия-сама меряет, было бы что мерять!!!
Ответить

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