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

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

Сообщение Asmodey »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3883872#p3883872"][uquote="Asmodey",url="/forum/viewtopic.php?p=3883858#p3883858"][uquote="Zhuk72",url="/forum/viewtopic.php?p=3883844#p3883844"]Гораздо проще было в исходниках сменить все uint... на unsigned[/uquote]
Каких-то нехороших последствий не последует? Просто заменить и все?[/uquote]
uint8_t = unsigned char
uint16_t = unsigned int
uint32_t = unsigned long
Левые без u будут signed.

Во всяком случае в Keil и Мплаб 8, 16 и 32-битные данным соответствуют именно char, int и long. IAR не использую, но скорее всего там так же будет.[/uquote]
Спасибо, работает. И после MPLAB мне так удобнее :) Лишний библиотечный файл не нужно подключать.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3883844#p3883844"]Были бы они такие прямо стандартные, не приходилось бы подключать отдельным хедером.[/uquote]Эти типы введены в стандарт C99, то есть, больше 20 лет назад! Вылезаем из танка!

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3883844#p3883844"]А так был вопрос про вариант - ну, вот он вариант. Правильный или нет - другое дело.[/uquote]Переопределять стандартные типы данных - худшее из того что можно было посоветовать.

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3883844#p3883844"]Гораздо проще было в исходниках сменить все uint... на unsigned... - минутное дело - чем выискивать вариант с подключением дополнительных заголовков.[/uquote]Это убивает на корню основной смысл для чего эти типы были введены в стандарт и применяются всеми разумными разработчиками.

[uquote="Asmodey",url="/forum/viewtopic.php?p=3883951#p3883951"]И после MPLAB мне так удобнее :) Лишний библиотечный файл не нужно подключать.[/uquote]Делать надо как правильно. Неправильно оно само получится.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7057
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3883956#p3883956"][uquote="Asmodey",url="/forum/viewtopic.php?p=3883951#p3883951"]И после MPLAB мне так удобнее :) Лишний библиотечный файл не нужно подключать.[/uquote]Делать надо как правильно. Неправильно оно само получится.[/uquote]
То есть определение типов через файл stdint.h правильно, а все остальное нет? Ну что же, тогда буду привыкать цеплять к проектам stdint.h...
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3883977#p3883977"]То есть определение типов через файл stdint.h правильно,[/uquote]Правильно использование стандартных типов по назначению. Применение типов uintX_t сильно повышает переносимость кода.

[uquote="Asmodey",url="/forum/viewtopic.php?p=3883977#p3883977"]Ну что же, тогда буду привыкать цеплять к проектам stdint.h...[/uquote]Его не надо "цеплять к проектам". Он есть в системных заголовочных файлах любого компилятора. Он, кстати, в CMSIS подключается. Если в проекте подключен заголовочный файл микроконтроллера, то stdint.h автоматом подключен.
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3883956#p3883956"][uquote="Zhuk72",url="/forum/viewtopic.php?p=3883844#p3883844"]Гораздо проще было в исходниках сменить все uint... на unsigned... - минутное дело - чем выискивать вариант с подключением дополнительных заголовков.[/uquote]Это убивает на корню основной смысл для чего эти типы были введены в стандарт и применяются всеми разумными разработчиками.[/uquote]
Если предыдущие не были выведены из употребления и поддерживаются компиляторами, использование их не возбраняется.
Каждый имеет право на свое личное ошибочное мнение.

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

Сообщение VladislavS »

Ну если вам осознанно хочется на вопрос "какой разрядности int на компиляторе X для микроконтроллера Y" чесать репу и делать непереносимый код, то запретить это не в моих силах.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7057
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3883980#p3883980"]Если в проекте подключен заголовочный файл микроконтроллера, то stdint.h автоматом подключен.[/uquote]
А шут его знает, через какую опу тут заголовочный файл подключается, и который из них заголовочный для STM32F303CB. stm32f3xx.h, stm32f303xc.h и system_stm32f3xx.h из CMSIS добавил, #include "stm32f3xx.h" в main.c прописал, #define STM32F303xC в этом файле раскомментировал. И вот ХЗ, подключил я заголовочный файл в этой куче хрен знает чего или нет. Хрен знает чего навертели, да еще в самом IAR нихрена нет нужного, все приходится откуда-то скачивать да устанавливать, подключать-переподключать, да с непонятным результатом. Пойди, разбери чего и откуда еще нужно скачать и чего куда добавить. Теперь я понимаю, почему STM32 такие дешевые... Телушка - полушка, да рубль перевоз.
Астролябия-сама меряет, было бы что мерять!!!
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Asmodey писал(а): Теперь я понимаю, почему STM32 такие дешевые
Дело не в STM32, а в прокладке между стулом и монитором.
Если вы не понимаете что делаете, какой результат ожидаете?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Избаловали народ кортексами. Раньше берёшь ARM, даташит на него и первым делом flashloader на внешнюю флэшку пишешь. Сейчас большинство и не знает что это такое. Заголовочный файл им трудно подключить :)
Друг Кота
Аватара пользователя
Сообщения: 25881
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3883980#p3883980"]Его не надо "цеплять к проектам". Он есть в системных заголовочных файлах любого компилятора. Он, кстати, в CMSIS подключается. Если в проекте подключен заголовочный файл микроконтроллера, то stdint.h автоматом подключен.[/uquote]
Я всегда полагал, что стандартные типы в Си не требуют ПЕРЕОПРЕДЕЛЕНИЯ. То есть отыскать на них typedef невозможно ни в каких хедерах, даже в тех, которые СРЕДА (а не компилятор) вставляет в проект автоматически.
А все (u)intx_t примитивно ПЕРЕОПРЕДЕЛЕНЫ (о чем кагбэ намекаэ буква t после подчеркивания) с целью ликвидации зависимости стандартных типов от разрядности платформы и произвола писателей компиляторов.
Друг Кота
Аватара пользователя
Сообщения: 7057
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Поневоле позавидуешь тем, кто писал в шестнадцатеричных кодах в тетрадях в клеточку... У них хотя бы головы не болели за кучи мусора, которые нужно найти, скачать, подключить только для того, чтобы тактовый генератор настроить...
Астролябия-сама меряет, было бы что мерять!!!
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3884137#p3884137"]А все (u)intx_t примитивно ПЕРЕОПРЕДЕЛЕНЫ (о чем кагбэ намекаэ буква t после подчеркивания)[/uquote]
Буква t после подчеркивания может вводить в заблуждение т.к., например, в C++ есть char8_t который ничем не отличается от unsigned char кроме того, что это отдельный тип :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

90% стандартных "плюшек" C/C++ требуют подключения какого-либо заголовочного файла. Так язык устроен. От этого они не перестают быть частью стандарта. Повторюсь, intX_t типы являются стандартными уже больше 20 лет со времён С99.
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

А все (u)intx_t примитивно ПЕРЕОПРЕДЕЛЕНЫ (о чем кагбэ намекаэ буква t после подчеркивания) с целью ликвидации зависимости стандартных типов от разрядности платформы и произвола писателей компиляторов.
Вы описание языка Си читали, а? Судя по словоблудию, которое тут развели, нет.
Типы потому и называются стандартными, что их размеры стандартизованы на всех платформах и компиляторах:

short - всегда 16 бит;
long - всегда 32 бита;
char - всегда 8 бит.

Размер int выбирается из соображений эффективности и удобства. Меньше 16 бит не встречал ни разу.
Для char не регламентирована его "знаковость", поэтому все (известные мне) компиляторы имеют опцию, указывающую как трактовать char.
VladislavS не сказал, что помимо XintY_t определяются их fast_ разновидности. И тогда наличие XintY_t становится логичным. Думаю, что XintY_t были сделаны для бОльшей мобильности программ, ведь существуют (существовали?) процессоры с разрядностью 18, 24 и 36 бит.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Я и про uint_least8_t ничего не писал. Хомячкам это вредно знать.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

tonyk писал(а):short - всегда 16 бит;
long - всегда 32 бита;
char - всегда 8 бит.
имхо, не всегда.
Минимальный размер для char — 8 бит, для short и int — 16 бит, для long — 32 бита, для long long — 64 бита.

Желательно, чтобы тип int был таким целочисленным типом, с которым наиболее эффективно работает процессор. Это позволяет достигать высокой гибкости, например, все типы могут занимать 64 бита. Однако, есть популярные схемы, описывающие размеры целочисленных типов.[7]

На практике это означает, что char занимает 8 бит, а short 16 бит (также, как и их беззнаковые аналоги). int на большинстве современных платформ занимает 32 бита, а long long 64 бита. Длина long варьируется: для Windows это 32 бита, для UNIX-подобных систем — 64 бита.
чтобы вот эту мешанину систематизировать, все эти самые xxxx_t и были введены.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Может, это закроет вопрос?
https://ru.wikipedia.org/wiki/Stdint.h

Добавлено after 2 minutes 45 seconds:
имхо, не всегда.
Ключевое слово "имхо". Повторяю, всегда. Читайте стандарт.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

tonyk писал(а):Читайте стандарт
вы сначала его тут выложите, а то ищешь стандарт, а находишь всегда его толкования.
по поводу стандартов тут баталии были ого-го какие! и про long я тоже думал, что он 32 бита всегда...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

[uquote="ARV",url="/forum/viewtopic.php?p=3884229#p3884229"]
tonyk писал(а):Читайте стандарт
вы сначала его тут выложите, а то ищешь стандарт, а находишь всегда его толкования.
по поводу стандартов тут баталии были ого-го какие! и про long я тоже думал, что он 32 бита всегда...[/uquote]
А в чём проблема скачать? Или кого-то в Гугле забанили?
Вложения
Iso_C_1999_definition.pdf
(1.04 МБ) 246 скачиваний
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

спасибо за стандарт. теперь, пожалуйста, ткните носом в раздел, где о размерах типов сказано - что-то найти сам не могу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

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