Помогите разобраться с CMSIS

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Помогите разобраться с CMSIS

Сообщение White72ru »

Доброго времени суток. Я нуб в ARM и STM32 в частности, только начал изучать.

При написании кода встречается такая конструкция "RCC->CR", покопавшись в "stm32f4xx.h" можно найти что, "RCC->CR" это обращение к некой структуре. По логике кода "RCC->CR" не что иное как регистр "RCC_CR" то есть адрес регистра. Но вот у меня возникла не задача, адрес "RCC" в библиотеке определён, но определения "Address offset" для "CR" в библиотеке я не где не смог найти, и не только для "CR" а так же для "RCC_PLLCFGR", и для"RCC_CFGR", и т.д., и т.п.

Подскажите в чём фокус, или мне не по глазам\мозгам. Заранее благодарю.
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Помогите разобраться с CMSIS

Сообщение scorpi_0n »

О какой библиотеке речь? В *******.h файле всё есть. Вот кусок от stm32f0xx.h. Для примера.

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

typedef struct
{
  __IO uint32_t CR;         /*!< RCC clock control register,                                  Address offset: 0x00 */
  __IO uint32_t CFGR;       /*!< RCC clock configuration register,                            Address offset: 0x04 */
  __IO uint32_t CIR;        /*!< RCC clock interrupt register,                                Address offset: 0x08 */
  __IO uint32_t APB2RSTR;   /*!< RCC APB2 peripheral reset register,                          Address offset: 0x0C */
  __IO uint32_t APB1RSTR;   /*!< RCC APB1 peripheral reset register,                          Address offset: 0x10 */
  __IO uint32_t AHBENR;     /*!< RCC AHB peripheral clock register,                           Address offset: 0x14 */
  __IO uint32_t APB2ENR;    /*!< RCC APB2 peripheral clock enable register,                   Address offset: 0x18 */
  __IO uint32_t APB1ENR;    /*!< RCC APB1 peripheral clock enable register,                   Address offset: 0x1C */
  __IO uint32_t BDCR;       /*!< RCC Backup domain control register,                          Address offset: 0x20 */ 
  __IO uint32_t CSR;        /*!< RCC clock control & status register,                         Address offset: 0x24 */
  __IO uint32_t AHBRSTR;    /*!< RCC AHB peripheral reset register,                           Address offset: 0x28 */
  __IO uint32_t CFGR2;      /*!< RCC clock configuration register 2,                          Address offset: 0x2C */
  __IO uint32_t CFGR3;      /*!< RCC clock configuration register 3,                          Address offset: 0x30 */
  __IO uint32_t CR2;        /*!< RCC clock control register 2,                                Address offset: 0x34 */
} RCC_TypeDef;
Реклама
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

Библиотека указана, смотрите внимательней.
Строка, "__IO uint32_t CR;" и что мы тут видим, а видим мы тут некоторая "переменная" объявлена как volatile unsignet integer 32-x разрядный и не более, определении отсутствует. Вопрос открыт.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Помогите разобраться с CMSIS

Сообщение Pnjom-Penb »

White72ru писал(а):Я нуб в ARM и STM32 в частности, только начал изучать.
Проблема вовсе не в незнании "ARM и STM32 в частности", а в незнании языка. Приведенный выше пример все объясняет.
White72ru писал(а):и что мы тут видим, а видим мы тут некоторая "переменная" объявлена как volatile unsignet integer 32-x разрядный и не более, ... Вопрос открыт.
А слова offset, расставленные в изобилии, ни о чем не говорят?
Реклама
Эиком - электронные компоненты и радиодетали
pixar
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Чт ноя 29, 2012 08:27:22

Re: Помогите разобраться с CMSIS

Сообщение pixar »

оффсет - по порядковому номеру элемента в структуре RCC_TypeDef , для uint32 через 4 байта.
Явно - не указан. Типа - компайлер всегда по порядку расставляет :)
Реклама
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

Pnjom-Penb писал(а):Проблема вовсе не в незнании "ARM и STM32 в частности", а в незнании языка. Приведенный выше пример все объясняет.
Ну если заговорили о не знании языка, то ежили вы присмотритесь то offset, находится в строке комментария. :)))

З.Ы. Я сказал что "Я нуб в ARM и STM32 в частности, только начал изучать.", но я не говорил что я не знаю Си.
Реклама
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

pixar писал(а):оффсет - по порядковому номеру элемента в структуре RCC_TypeDef , для uint32 через 4 байта.
Явно - не указан. Типа - компайлер всегда по порядку расставляет :)
Ну я не знаю, если только так. :)
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Помогите разобраться с CMSIS

Сообщение scorpi_0n »

Если что-то не устраивает и хорошо знаете Си задайте оффсет сами. Что мешает?
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

scorpi_0n писал(а):Если что-то не устраивает и хорошо знаете Си задайте оффсет сами. Что мешает?
Да на самом деле не чего не мешает. Просто столкнулся с не понятным, хотелось ясности.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Помогите разобраться с CMSIS

Сообщение Pnjom-Penb »

White72ru писал(а):... offset, находится в строке комментария
Комментарии, как известно, предназначены для программистов... Выходит, вы сами себя программистом не считаете?
White72ru писал(а):но я не говорил что я не знаю Си.
Говорил, говорил...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Помогите разобраться с CMSIS

Сообщение uk8amk »

Вы недостаточно подробно просмотрели этот заголовочный файл.
Т.к. у меня сейчас нет под рукой материалов под F4, то объясню на примемре F1.
Объявление похожей структуры:

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

typedef struct
{
  __IO uint32_t CR;
  __IO uint32_t CFGR;
  __IO uint32_t CIR;
  __IO uint32_t APB2RSTR;
  __IO uint32_t APB1RSTR;
  __IO uint32_t AHBENR;
  __IO uint32_t APB2ENR;
  __IO uint32_t APB1ENR;
  __IO uint32_t BDCR;
  __IO uint32_t CSR;
.. 
} RCC_TypeDef;
Т.к. каждый член структуры имеет тип u32, то следующий элемент будет иметь адрес (предыдущий+4), что соотвествует расположению регистров по карте памяти. Это вроде ясно. Далее объявление адреса блока:

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

#define RCC_BASE              (AHBPERIPH_BASE + 0x1000)
И наконец "создание" указателя на структуру

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

#define RCC                 ((RCC_TypeDef *) RCC_BASE)
Теперь когда мы пишем Препроцессор делает подстановку, видет указатель на структуру и перед нами разворачивается список регистров.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Помогите разобраться с CMSIS

Сообщение Pnjom-Penb »

uk8amk писал(а):... ... ... и перед нами разворачивается список регистров.
Ангельское терпение! :))) :))) :)))
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

uk8amk писал(а):Т.к. каждый член структуры имеет тип u32, то следующий элемент будет иметь адрес (предыдущий+4)
Да pixar выше объяснил что к чему, был не осведомлён о особенности uint32. Спасибо!
White72ru
Родился
Сообщения: 7
Зарегистрирован: Пн ноя 30, 2015 18:15:57

Re: Помогите разобраться с CMSIS

Сообщение White72ru »

Pnjom-Penb писал(а):
White72ru писал(а):... offset, находится в строке комментария
Комментарии, как известно, предназначены для программистов... Выходит, вы сами себя программистом не считаете?
White72ru писал(а):но я не говорил что я не знаю Си.
Говорил, говорил...
Ты ежили не куя путнего изложить не можешь, спрашивается накуя пишешь? Убери руки от клавы.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: Помогите разобраться с CMSIS

Сообщение Pnjom-Penb »

White72ru писал(а):Ты ...
О, а вот и полное, непротиворечивое доказательство моей правоты. :))) :))) :)))
Надо же, вот так - "прямо в яблочко, почти не целясь!" © 8)
Как жисть, ЧМО, младое, незнакомое? :))) :))) :))) :))) :)))
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Помогите разобраться с CMSIS

Сообщение arkhnchul »

White72ru писал(а):был не осведомлён о особенности uint32. Спасибо!
это не особенность uint32, а часть стандарта С (члены структуры хранятся в памяти в порядке объявления, одним сплошным куском, внутри которого кроме членов структуры могут находиться только незначащие байты/биты) и конкретной реализации компилятора (выравнивание).
Ответить

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