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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

У-у-у-у, как всё запущено.. Читать даже не умеем. Детский сад, младшая группа.
Страница 21.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3884211#p3884211"]90% стандартных "плюшек" C/C++ требуют подключения какого-либо заголовочного файла. Так язык устроен.[/uquote]Я не о C/C++, а про подключение заголовочного файла через задний проход. Нужно добавить черти знает какой файл в проект, найти в нем строчку с названием своего микроконтроллера, и раскомментировать ее подключив файл для микроконтроллера похожего на используемый микроконтроллер... Это при том, что при создании проекта мы конкретно указываем свой МК в свойствах проекта. Нет, я все понимаю, IDE писалась еще тогда, когда данного МК еще в помине не было, отсюда и костыли. Но, можно же было предусмотреть. А если неможно, то переписать IDE так, чтобы можно было. IAR мне нравится, но вот создание проекта через правку вереницы файлов как-то напрягает.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Нужно добавить черти знает какой файл в проект, найти в нем строчку с названием своего микроконтроллера, и раскомментировать ее подключив файл для микроконтроллера похожего на используемый микроконтроллер...
Тут не детский сад, а форменные ясли!
Документацию читать не пробовали? Как можно вообще за что-то браться, не прочитав базовых вещей в виде стандарта на используемый язык и Руководств на используемые библиотеки? Впрочем, догадываюсь за что, не буду писать слово "мир" с тремя ошибками. Тут что, общаются забаненые во всех поисковых системах?!
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="tonyk",url="/forum/viewtopic.php?p=3884253#p3884253"]Тут не детский сад, а форменные ясли![/uquote]
Ага, читаем и нихрена не понимаем. Классика.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3884246#p3884246"]Я не о C/C++, а про подключение заголовочного файла через задний проход. Нужно добавить черти знает какой файл в проект, найти в нем строчку с названием своего микроконтроллера, и раскомментировать ее подключив файл для микроконтроллера похожего на используемый микроконтроллер...[/uquote]Ну что за бред? Всего один заголовочный файл для микроконтроллера надо подключить. И поставить галочку Use CMSIS (по умолчанию она стоит) в настройках проекта IAR. И всё.

Чтобы инициализировать тактовый надо один include и семь команд.

Код: Выделить всё

#include "stm32f303xc.h"

int main()
{
  FLASH->ACR = FLASH_ACR_PRFTBE | _VAL2FLD(FLASH_ACR_LATENCY,2);
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16)
          | RCC_CR_HSION
          | RCC_CR_HSEON; //Включим HSE
  while(!(RCC->CR & RCC_CR_HSERDY));
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK
            | RCC_CFGR_I2SSRC_SYSCLK
            | RCC_CFGR_USBPRE_DIV1_5
            | RCC_CFGR_PLLMUL9
            //|  RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2 //Раскомментировать для кварца 16 МГц
            |  RCC_CFGR_PLLSRC_HSE_PREDIV
            | RCC_CFGR_PPRE2_DIV1
            | RCC_CFGR_PPRE1_DIV2
            | RCC_CFGR_HPRE_DIV1
            | RCC_CFGR_SW_HSE;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16)
          | RCC_CR_PLLON //Включим PLL
          | RCC_CR_HSEON
          | RCC_CR_HSI;
  while(!(RCC->CR & RCC_CR_PLLRDY));
  RCC->CFGR = RCC_CFGR_MCO_PLL
            | RCC_CFGR_I2SSRC_SYSCLK
            | RCC_CFGR_USBPRE_DIV1_5
            | RCC_CFGR_PLLMUL9
            // | RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2 //Раскомментировать для кварца 16 МГц
            | RCC_CFGR_PLLSRC_HSE_PREDIV
            | RCC_CFGR_PPRE2_DIV1
            | RCC_CFGR_PPRE1_DIV2
            | RCC_CFGR_HPRE_DIV1
            | RCC_CFGR_SW_PLL;
  for(;;);
}
Не ясли, а грудничковое отделение какое-то.

ЗЫ: Про функцию __low_level_init() даже упоминать боюсь, это же опять ЧИТАТЬ документацию надо будет.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

tonyk писал(а):Страница 21.
на этой странице нет ни слова о размерности long и любых иных типов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 56
Зарегистрирован: Вт дек 29, 2015 11:33:49

Сообщение pavell »

[uquote="ARV",url="/forum/viewtopic.php?p=3884288#p3884288"]
tonyk писал(а):Страница 21.
на этой странице нет ни слова о размерности long и любых иных типов.[/uquote]

— maximum value for an object of type long int
LONG_MAX +2147483647 // 231 - 1


Вот вы тут в стандарт тычете, а между тем там черным по белому написано -
"5.2.4.2.1 Sizes of integer types
The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives ... Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign

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

Сообщение ARV »

pavell писал(а):— maximum value for an object of type long int
LONG_MAX +2147483647 // 231 - 1
это лишь говорит, что разрядность long обязана умещать это значение, т.е., например, 128-бит тоже подойдет.
pavell писал(а):И в конечном итоге размерность типов зависти от платформы.
именно об этом я и пытался сказать, но был послан в стандарт...

так есть в Си типы "фиксированного" размера или нет? введенные С99 не считаем - берем "классику". в популярной литературе написано, что даже char не обязан быть 8 бит, и вроде как на VAX-ах он был 16 бит вполне успешно... но тут память подводит.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение tonyk »

The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives
Точно читать не умеете.
"Значения, приведённые ниже, должны быть заменены константами, пригодными для использования в директиве #if препроцессора."
И в конечном итоге размерность типов зависти от платформы.
Если на 128-битной платформе физически невозможно хранить 8-ми битные значения, то, естественно, sizeof(char) будет равно 16. Поэтому дальше и написано:
Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
Читай-те же до конца, а не рвите слова из контекста!
Баста, дальше без меня. Надоело.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

tonyk писал(а):Читай-те же до конца, а не рвите слова из контекста!
Баста, дальше без меня. Надоело.
да куда ж сильнее контекста-то придерживаться!
tonyk писал(а):Повторяю, всегда. Читайте стандарт.
это ваши слова? и как их теперь увязать с другими вашими словами:
tonyk писал(а):то, естественно, sizeof(char) будет равно 16
я понимаю, что 16 - это опечатка, и имелось ввиду 2.

однако, не может быть одновременно ВСЕГДА 8 и МОЖЕТ БЫТЬ 16 - это полностью взаимоисключающие требования!

либо НЕ ВСЕГДА 8, о чем я изначально и говорил, либо ВСЕГДА 8, и тогда покажите, где это написано в стандарте Си, читать который вы призываете.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 56
Зарегистрирован: Вт дек 29, 2015 11:33:49

Сообщение pavell »

[uquote="tonyk",url="/forum/viewtopic.php?p=3884335#p3884335"]Если на 128-битной платформе физически невозможно хранить 8-ми битные значения, то, естественно, sizeof(char) будет равно 16.[/uquote]
Погодите, не вы ли ранее писали:
[uquote="tonyk",url="/forum/viewtopic.php?p=3884217#p3884217"]Типы потому и называются стандартными, что их размеры стандартизованы на всех платформах и компиляторах:

short - всегда 16 бит;
long - всегда 32 бита;
char - всегда 8 бит.[/uquote]
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Из стандарта следует, что sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long). И в зависимости от архитектуры это может выливаться в самые различные варианты. От примитивного 16 для всех, до 1 для всех при размере байта 64 бита (sizeof выдаёт размер в байтах).
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):Из стандарта следует
причем, насколько мои скудные познания в английском позволяют понять, следует это косвенно, т.е. прямо это нигде не декларируется. так?

Добавлено after 1 minute 59 seconds:
VladislavS писал(а):при размере байта 64 бита
как бы термин "байт" это именно 8 бит... корректнее было бы сказать "при размере char"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=3884353#p3884353"]как бы термин "байт" это именно 8 бит...[/uquote]Только в этом утверждении пропущено одно слово - ОБЫЧНО. Оно есть даже в стандартах. Вот к примеру - тык 01.02.09. Byte.

Ну а в самом языке вот так
Изображение
Вложения
byte.png
(26.31 КБ) 620 скачиваний
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

как бы термин "байт" специально был придуман для октета битов. а то, что в стандарте ввели МАКРОС, так это, имхо, совсем другое: не макрос определяет сущность, а наоборот. если допустить, что байт может быть не 8 бит, то как тогда быть с килобайтами и прочими единицами информации?!

макрос - это лишь замена магического числа, но, как мне кажется, прецедентов "переопределения" этого макроса нет и быть не может

Добавлено after 1 minute 48 seconds:
кстати, в приведенной вами картинке макрос говорит о числе битов в CHAR-е, но никак не в байте. вероятно, индусы писали пояснительный текст... число битов в байте было бы макросом BYTE_BIT
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение VladislavS »

А по ссылке сходить религия не позволяет? Там стандарт "ISO/IEC 2382-1:1993. Термины и определения". Ему я верю, вам нет.
Изображение
Вложения
byte1.png
(227.12 КБ) 593 скачивания
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):Ему я верю, вам нет
кошмар какой-то :( первый шок я испытал, когда внезапно выяснилось, что уравнение sin(x) = 2 имеет решение... второй, когда void назвали типом данных. сегодня третий - что байт не обязан иметь 8 бит...

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

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="ARV",url="/forum/viewtopic.php?p=3884428#p3884428"]уравнение sin(x) = 2[/uquote]
Это как? Даже комплексный синус вроде как не будет равен двойке...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Eddy_Em писал(а):Это как?
а примерно так же, как и байт из 8 или 12 битов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="ARV",url="/forum/viewtopic.php?p=3884464#p3884464"]байт из 8 или 12 битов.[/uquote]
Байт - он априори 8 бит. А выше кто-то путает понятие байта с машинным словом…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Ответить

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