Вопрос по библиотеки CMSIS
-
maksimdag0
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Чт апр 08, 2021 09:46:48
Вопрос по библиотеки CMSIS
Доброго дня! Хочу понять как устроена библиотека CMSIS(если важен МК то это STM32). Пока что у меня каша в голове, все что я понимаю на данный момент, что:
СMSIS – это библиотека, в виде заголовочных файлов, где прописаны дефайны(макроопределения), при помощи которых мы можем работать с уже удобными словами, который в этом дейане написано, и этим самым мы имеем некаю абстракцию, верно?
Но пока я все равно не до конца понимаю. К примеру есть структура RCC, и далее мы эти элементы структуру используем в программе(например RCC→CR).
И Вопрос: как компилятор понимает что выражение «RCC→CR» это регистр?
Я знаю, что есть ключевые слова, которые компилятор распознает согласно стандарту, но разве «RCC→CR» в ходит в ключевые слова?
СMSIS – это библиотека, в виде заголовочных файлов, где прописаны дефайны(макроопределения), при помощи которых мы можем работать с уже удобными словами, который в этом дейане написано, и этим самым мы имеем некаю абстракцию, верно?
Но пока я все равно не до конца понимаю. К примеру есть структура RCC, и далее мы эти элементы структуру используем в программе(например RCC→CR).
И Вопрос: как компилятор понимает что выражение «RCC→CR» это регистр?
Я знаю, что есть ключевые слова, которые компилятор распознает согласно стандарту, но разве «RCC→CR» в ходит в ключевые слова?
- Реклама
- >TEHb<
- Друг Кота
- Сообщения: 5749
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Вопрос по библиотеки CMSIS
А никак! Ему, строго говоря, пофигу. В конце концов эта запить превращается в конкретный адрес, куда и происходит запись.
"Привет!" - соврал он.
-
maksimdag0
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Чт апр 08, 2021 09:46:48
Re: Вопрос по библиотеки CMSIS
Превращает ее в адрес компилятор, значит как-то же распознает)
Вот вопрос и возникает, что это выражение в стандарт входит походу.
Вот вопрос и возникает, что это выражение в стандарт входит походу.
- >TEHb<
- Друг Кота
- Сообщения: 5749
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Вопрос по библиотеки CMSIS
Lvalue и Rvalue. Распознаёт, конечно. Но дело таки не только в слове как таковом, а в его расположении, в структуре текста программы.
"Привет!" - соврал он.
-
maksimdag0
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Чт апр 08, 2021 09:46:48
Re: Вопрос по библиотеки CMSIS
Хорошо. CMSIS это набор заголовочных файлов. Как понимать какой из них мне нужно добавить в проект, что бы писать код?
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопрос по библиотеки CMSIS
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4422747#p4422747"]И Вопрос: как компилятор понимает что выражение «RCC→CR» это регистр?[/uquote]Вот отсюда. Ссылка на Compiler Explorer.
Добавлено after 2 minutes 9 seconds:
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4422772#p4422772"]Как понимать какой из них мне нужно добавить в проект, что бы писать код?[/uquote]Минимально надо заголовочный файл контроллера подключить. Что-то типа stm32f303xc.h. Остальное само из него подключится.
[uquote="maksimdag0",url="/forum/viewtopic.php?p=4422772#p4422772"]Как понимать какой из них мне нужно добавить в проект, что бы писать код?[/uquote]Минимально надо заголовочный файл контроллера подключить. Что-то типа stm32f303xc.h. Остальное само из него подключится.
-
maksimdag0
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Чт апр 08, 2021 09:46:48
Re: Вопрос по библиотеки CMSIS
Лаконично и ясно пояснил, вроде бы все понял, но есть еще парочку вопросов. Как бы я не гуглил, никак не могу понять:
1) как выражение ((GPIO_TypeDef *) GPIOA_BASE) превращается в указатель структуры GPIO_TypeDef?
Допустим есть две обычные переменные и один указатель:
int x = 300;
char y;
int *pV = &x;
y = *((char *)pV); //здесь мы говорим компилятору, что возьмем только один байт с 4х, и тогда переменной ”y” присвоится значение “x” первого байта, а то есть 44.
Здесь все понятно.
А вот как здесь «((GPIO_TypeDef *) GPIOA_BASE)» работает преобразование типов? GPIOA_BASE — я так понимаю, что это указатель, а то есть константа, определяющая адрес. А это «(GPIO_TypeDef *)» преобразования типа указателя, в итоге это преобразование делает указатель( GPIOA_BASE) струтурой?
Весь интернет обошел, так и не могу понял, тугодум я.
2) И Второй вопрос, Возможно глупый.
Получается, что у каждого Микроконтроллера всегда есть свой заголовочный файл, считающийся библиотекой CMSIS?
1) как выражение ((GPIO_TypeDef *) GPIOA_BASE) превращается в указатель структуры GPIO_TypeDef?
Допустим есть две обычные переменные и один указатель:
int x = 300;
char y;
int *pV = &x;
y = *((char *)pV); //здесь мы говорим компилятору, что возьмем только один байт с 4х, и тогда переменной ”y” присвоится значение “x” первого байта, а то есть 44.
Здесь все понятно.
А вот как здесь «((GPIO_TypeDef *) GPIOA_BASE)» работает преобразование типов? GPIOA_BASE — я так понимаю, что это указатель, а то есть константа, определяющая адрес. А это «(GPIO_TypeDef *)» преобразования типа указателя, в итоге это преобразование делает указатель( GPIOA_BASE) струтурой?
Весь интернет обошел, так и не могу понял, тугодум я.
2) И Второй вопрос, Возможно глупый.
Получается, что у каждого Микроконтроллера всегда есть свой заголовочный файл, считающийся библиотекой CMSIS?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопрос по библиотеки CMSIS
1)GPIOA_BASE это обычная целочисленная константа 0x48000000. ((GPIO_TypeDef *) GPIOA_BASE) это указатель на структуру типа GPIO_TypeDef. Или адрес первого элемента структуры, если на пальцах. Зная адрес первого элемента и тип(размер) всех остальных элементов легко получить доступ к любому полю структуры смещением от указателя. Что компилятор автоматически и делает.
2) Трудно жить с баном в гугле? Первая же ссылка в поисковике по CMSIS.
2) Трудно жить с баном в гугле? Первая же ссылка в поисковике по CMSIS.
-
maksimdag0
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Чт апр 08, 2021 09:46:48
Re: Вопрос по библиотеки CMSIS
Спасибо всем!
Если я спросил, значит уже гуглил, и все равно не понял.
Если я спросил, значит уже гуглил, и все равно не понял.
Re: Вопрос по библиотеки CMSIS
https://www.youtube.com/@Solderingironspb/featured
вот тебе ссылка на канал для начала въехать что к чему хватит по CMSIS.
вот тебе ссылка на канал для начала въехать что к чему хватит по CMSIS.


